간단한 비디오 렌더러를 만들어서 재미있게 만들기 위해 모바일 OS가 될만한 것을 만들어보고 싶습니다. 아버지는 첫 번째 컴퓨터에서 특정 메모리 주소를 편집하고 화면이 업데이트 될 것이라고 말했습니다. Windows에서이 창 내부에서이를 시뮬레이션하고 싶습니다. C#으로이 작업을 수행 할 수있는 방법이 있습니까?창에서 개별 픽셀을 편집하려면 어떻게해야합니까?
답변
이것은 범위를 벗어난 완전한 기능을 갖춘 주제입니다. (적합하지 않을 것입니다. 몇 시간 동안이 답변을 포기할 수는 없지만 ...-) C#에서 그리기 시작해야합니다.
http://www.geekpedia.com/tutorial50_Drawing-with-Csharp.html
상황이 manipulation..although 모든 것이 여전히 픽셀로 연결되어 직접 메모리의 옛부터 조금왔다.
편집 : 아, 그리고 깜박 거리는 문제가 생겨서 붙어 있다면, 줄을 버리고 DoubleBuffered 패널로 페인트를 보내 드리겠습니다.
비디오 버퍼에 직접 액세스 할 수 있기 때문에이 방법을 사용했습니다. 비디오 메모리는 비디오 드라이버 및 OS로 관리되기 때문에 일반적으로 현재 시스템에서는 사용할 수 없습니다. 또한 비디오 메모리 버퍼의 1 : 1 매핑과 더 이상 표시되는 것이 실제로 없습니다. 사용 가능한 메모리가 너무 많아서 여러 개의 버퍼가 있고 그 사이를 전환 할 수있었습니다. 현재 표시된 버퍼를 "프론트 버퍼"라고하고 표시되지 않은 다른 버퍼를 "백 버퍼"라고합니다 (자세한 내용은 http://en.wikipedia.org/wiki/Multiple_buffering 참조). 일반적으로 백 버퍼에 기록한 다음 비디오 시스템에서 프론트 버퍼를 업데이트하도록합니다. 이는 비디오 드라이버가 업데이트를 모니터의 스캔 속도와 동기화하므로 원활한 업데이트를 제공합니다.
C#을 사용하여 백 버퍼에 쓰기 위해 내가 가장 좋아하는 기술은 WPF WritableBitmap을 사용하는 것입니다. 또한 System.Drawing.Bitmap
을 사용하여 LockBits을 통해 픽셀을 써서 화면을 업데이트했습니다.
이것이 더 나은 해결책이라고 확신하지만, 코드를 완전히 이해하지 못하고 자신을 아는 것만으로도 커다란 시간을 망칠 것입니다 비 관리 코드 : D –
@ 대니얼 - 이것은 관리되지 않는 코드가 아닙니다. 안전하지는 않지만 확실한 것은 다른 방법으로는 빠르지 않습니다. GetPixel/SetPixel을 사용할 수는 있지만 빠르게 할 수는 없습니다. ;) – codekaizen
- 1. iPhone. 어떻게 큰 CGImage의 개별 픽셀을 바꿀까요?
- 2. SmartGWT의 DetailViewer에서 필드를 편집하려면 어떻게해야합니까?
- 3. Eclipse에서 파일을 복사하고 편집하려면 어떻게해야합니까?
- 4. HTML 파일을 직접 편집하려면 어떻게해야합니까?
- 5. 명령 줄에서 파일을 편집하려면 어떻게해야합니까?
- 6. iPhone에서 Shark 구성을 편집하려면 어떻게해야합니까?
- 7. Access ADP 파일을 편집하려면 어떻게해야합니까?
- 8. SquareSpace에서 내 템플릿을 편집하려면 어떻게해야합니까?
- 9. WordPress 사이트의 코드를 편집하려면 어떻게해야합니까?
- 10. 스마트 카드의 내용을 편집하려면 어떻게해야합니까?
- 11. kaazing의 서버 코드를 편집하려면 어떻게해야합니까?
- 12. mif/mid gis 데이터 형식을 편집하려면 어떻게해야합니까?
- 13. JTextPane에서 선택한 텍스트의 스타일을 쉽게 편집하려면 어떻게해야합니까?
- 14. xmlstarlet을 사용하여 XML 노드를 선택하고 편집하려면 어떻게해야합니까?
- 15. phpPgAdmin에서 복합 유형을 만들고 편집하려면 어떻게해야합니까?
- 16. VS 2010 디자인보기에서 WPF DataTemplate을 편집하려면 어떻게해야합니까?
- 17. IDA Pro 함수의 외부 참조를 편집하려면 어떻게해야합니까?
- 18. NSTableView에서 NSTextFieldCell을 한 번 클릭하여 편집하려면 어떻게해야합니까?
- 19. 플래시 cs4에서 swf 파일을 편집하려면 어떻게해야합니까?
- 20. github 저장소에서 초기 커밋을 편집하려면 어떻게해야합니까?
- 21. WPF에서 많은 양의 텍스트를 처리/편집하려면 어떻게해야합니까?
- 22. Windows 배치 파일에서 텍스트 파일을 편집하려면 어떻게해야합니까?
- 23. 파이썬에서 일반 텍스트 파일을 편집하려면 어떻게해야합니까?
- 24. iOS 응용 프로그램에서 PDF 파일을 편집하려면 어떻게해야합니까?
- 25. jqgird에서 편집 할 필드 값을 편집하려면 어떻게해야합니까?
- 26. 공백이있는 파일과 함께 작동하도록이 파일을 편집하려면 어떻게해야합니까?
- 27. PHP로 외부 CSS 파일을 편집하려면 어떻게해야합니까?
- 28. 취소를 지원하는 flex dataProvider의 항목을 편집하려면 어떻게해야합니까?
- 29. PowerShell을 사용하여 HTML 태그를 편집하려면 어떻게해야합니까?
- 30. Objective C에서 변경 가능한 속성을 편집하려면 어떻게해야합니까?
WinForms> v2.0에서 DoubleBuffered 속성 설정으로 이중 버퍼링을 설정할 수 있습니다. http://msdn.microsoft.com/en-us/library/system.windows.forms.control.doublebuffered. aspx. – codekaizen
하지만 패널이나 관리되는 컨트롤에는 없습니다 .-D 계속 시도해보십시오. DoubleBuffered 속성이 보호 된 값이기 때문에 적극적으로 시도를 무시합니다. – Caladain
오른쪽. 패널을 서브 클래스 화하고 생성자에서 해당 속성을 설정하는 것이 매우 쉽기 때문에 잊어 버린 것 같습니다. 여하튼 DoubleBuffered는 컨트롤 스타일을 ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, 그래서 당신은 단지 그 값으로 SetStyle()을 호출 할 수 있습니다. – codekaizen