답변
예, DirectX 9.0을 래핑하고 Windows에서 비디오 화면을 직접 픽셀 수준으로 조작하는 Windows Forms 컨트롤을 작성했습니다. 이 효율적으로 메모리에 액세스 포인터를 사용하기 때문에 Unsafe C# and pointers for 2D rendering, good or bad?
이 상대적으로 높은 성능이지만, 그것은 안전하지 않은 컴파일러 옵션이 필요합니다 다른 더 좋은 방법이 있는지
는 사실 물어 스택 오버플로 다른 게시물을 썼다. 그러므로이 이전 게시물에 대한 이유.
- 는 다이렉트 X SDK를 다운로드 :
이 필요한 단계 높은 수준이다.
- 새 C# Windows Forms 프로젝트를 만들고 설치된 Microsoft DirectX 어셈블리를 참조하십시오.
- 프리젠 테이션 매개 변수 (창 버퍼링, 백 버퍼링 등)을 사용하여 새 DirectX 장치 개체를 초기화합니다.
- "Pitch"및 현재 디스플레이 모드 (픽셀 당 비트 수)를 기록하도록주의하면서 장치를 만듭니다.
- 뭔가를 표시해야 할 때
Lock
후면 버퍼 표면을 반환하고 표면 메모리의 시작 부분에 반환 된 포인터를 저장합니다. - 포인터 계산을 사용하여 표면 피치, 픽셀 당 비트 수 비트 및 실제 x/y 픽셀 좌표에 따라 데이터의 실제 픽셀 위치를 계산합니다.
- 단순함을 위해 필자는 32 bpp를 고수하고 있는데, 이는 픽셀 설정이 다음과 같이 간단하다는 것을 의미합니다. * (surfacePointer + (y * pitch + x)) = Color.FromARGB (255,0,0);
- 드로잉이 끝나면 뒤쪽 버퍼 표면이
Unlock
입니다. 표면을 드러내십시오. - 필요에 따라 5 단계부터 반복하십시오.
이 방법을 사용하면 대상 표면의 현재 디스플레이 모드 (피치 및 비트/픽셀)를 확인하는 데주의해야합니다. 또한 프로그램이 실행되는 동안 창의 크기 조정이나 화면 형식 변경에 대처할 전략을 마련해야합니다.
Visual Studio 및/또는 Expression Blend를 사용하여 WPF를 살펴볼 수 있습니다. 얼마나 정교한지를 잘 모르지만 간단한 편집기를 처리 할 수 있어야합니다. 자세한 내용은 MSDN Article을 확인하십시오.
빠른 3D 그래픽을위한 Managed DirectX (Microsoft.DirectX 네임 스페이스). DirectX API를 통한 견고한 .NET 래퍼입니다.이 래퍼는 제작시 약간의 성능 저하가 있습니다.NET 개체 및 마샬링. 완전한 기능을 갖춘 최신 3D 엔진을 작성하지 않는 한 정상적으로 작동합니다.
WPF (Windows Presentation Foundation) (Windows.Media 네임 스페이스) - 2D 그래픽을위한 최상의 선택입니다. 또한 제한된 3D 능력이 있습니다. Windows Forms를 벡터로 교체하려는 목적으로, 하드웨어 가속화 해상도 독립적 프레임 워크. 매우 편리하고 사용자 정의 컨트롤, 리소스, 데이터 바인딩, 이벤트 및 명령의 여러 가지 맛을 지원합니다 ... 또한 몇 가지 WTF가 있습니다. 속도는 일반적으로 GDI보다 빠르며 DirectX보다 느리며 작업 수행 방식에 따라 크게 달라집니다 (현명한 방식으로 다시 작성한 후 60 배 빠르게 작동하는 것으로 나타남). 우리는 실시간 표시기, 그래프 및 플롯이 3 개의 1280x1024 스크린을 단일 (그리고 최고는 아님) PC에 구현하여 성공을 거두었습니다.
Cairo graphics library을 살펴볼 수 있습니다. Mono 프로젝트에는 C#의 바인딩이 있습니다.
Cairo은 옵션입니다. 현재 GDI +와 Cairo를 사용하여 매핑 소프트웨어를 다시 작성하고 있습니다. 타일 맵 생성기가 있으며 다른 기능들도 있습니다.
- 1. 그래픽 카드가없는 WPF 렌더링
- 2. iPhone에서의 동적 그래픽 렌더링?
- 3. D3D에서 2D 그래픽 렌더링 속도
- 4. C++ 그래픽 프로그래밍
- 5. C# 수학 그래픽 라이브러리
- 6. C 그래픽 라이브러리 오류
- 7. 그래픽 패널의 C#
- 8. Visual C++의 그래픽
- 9. ANSI C 그래픽 확장
- 10. C++ 및 그래픽
- 11. C++의 의사 그래픽
- 12. iOS GPS 앱에 벡터지도 데이터 추가. 실시간 벡터 그래픽 렌더링
- 13. Visual C++로 그래픽 그리기
- 14. C 프로그램 화면 디자인/그래픽
- 15. C++ .NET의 초보 3D 그래픽
- 16. 그래픽 원형 차트 만들기 C#
- 17. 투명 패널의 그래픽 지우기 C#
- 18. C# 그래픽 경로 그리기 문제
- 19. C# + 컨트롤의 사용자 지정 그래픽?
- 20. C# 그래픽 덮어 쓰기 중
- 21. C++ 그래픽 라이브러리 내부 작업
- 22. C# Windows의 그래픽 단추 상태
- 23. 그래픽 변수를 인쇄하려면 그래픽 변수
- 24. C# 렌더링 그래프
- 25. 텍스트로 C# 렌더링 html
- 26. C# 개체를 Html로 렌더링
- 27. ASCII "그래픽"라이브러리입니까?
- 28. Revit 파일을 Windows Forms/WPF 응용 프로그램의 그래픽 화면으로 렌더링
- 29. C#/dot-NET 용 글꼴 렌더링 라이브러리?
- 30. 낮은 그래픽 그래픽 프로그래밍 과일?
David, "Understanding Pointers"질문에 주목했습니다. 위대한 질문, 좋은 답변! 해당 게시물에 언급 된 모든 내용은 아래의 "안전하지 않은"답변에도 적용됩니다. – Ash