내 3D 응용 프로그램에서 Winforms (그리고 결국 HostElement를 통해 WPF)를 사용하기 위해 SharpDX 프로젝트에 Winforms를 통합하려고합니다.Winforms 컨트롤의 페인트 메서드를 재정 의하여 어떻게 텍스처에 페인트 할 수 있습니까?
A :
내가 만들거나 컨트롤을 구성하거나 내가 할 수있는 그러한 양식 할 필요가있다. 그것을 텍스처로 렌더링하십시오. (스프라이트로 표시 할 수 있습니다.)
b. 컨트롤이 활성화되어 있지 않을 때 입력을 필터링하여 마우스/키보드 이벤트를 제거합니다.
나는 Control과 Form을 서브 클래 싱하여 OnPaint와 OnPaintBackground를 오버라이드하려고 시도했으나 이것들은 자식 컨트롤에 영향을 미치지 않는다. - 또는 폼 테두리와 관련하여 (그리고 그것들이 나 자신으로는 충분하지 않더라도 나는 여전히 '부모'가 그려져 있다고 추정하는 흰색 사각형으로 남았습니다.)
어떻게 컨트롤이나 폼 페인팅을 화면에 표시하지 않고 대신 비트 맵으로 만 그릴 수 있습니까? (예를 들어, 트리를 그리기 전에 그래픽을 재정의 할 수있는 방법이 있습니까?)
* Winforms에서 지원하지 않는 방식으로 (컨트롤을 화면에 렌더링하는 것과는 대조적으로) 이렇게해야합니다. 진정한 투명성 때문에 픽셀 쉐이더에서 색으로 구분 된 픽셀을 클립해야합니다.
(내가 특별히 다이렉트 텍스처를 의미하지 않는다, 확인 - 내가 (사실은 선호에) 간단한 System.Drawing 비트 맵과 행복)
명시 적으로 호출 InvokePaint가 잘 작동하고 지금 내 텍스처로 렌더링, 감사합니다! – sebf
"DrawToBitmap"을 사용할 수도 있습니다. 나는 이것이 통제에서 파생 될 필요성을 피할 것이라고 생각한다. btnTarget.DrawToBitmap (img, 새 사각형 (새 점 (0,0), 새 크기 (100,100)); – chrispepper1989