Windows에서 오버레이 그래픽을 그리는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1678378

  •  16-09-2019
  •  | 
  •  

문제

다양한 사용자 정의 창 유형을 만들어야하는 Win32 응용 프로그램으로 작업하고 있습니다. 특히,이 창문은 종종 쇠약하지 않거나 그림자가 있거나 대부분 투명합니다.

현재 사용 중입니다 WS_EX_LAYERED ~와 함께 UpdateLayeredWindow 투명한 창을 만들려면 임의의 그래픽을 그릴 수 있습니다. 그러나 층이있는 windows가 겹쳐져있는 하위 창을 가질 수 없으며 '정상'Win32 컨트롤을 올바르게 호스팅 할 수 없다는 점에서 제한되는 층이 있습니다.

우리의 코드 기반은 대부분 Win32와 GDI를 사용하는 몇 년이되었지만, 우리는 현대화하는 과정에 있으며 이제 새로운 기술을 볼 차례입니다.

WPF에서 사용자 정의 창을 수행하는 것을 고려했지만 '항공 공간'문제에 대해 읽은 내용에 대해 걱정하고 있습니다. WPF는 계층화 된 창을 사용하여 픽셀 당 알파 혼합을 달성하는 것으로 보이므로 이전에 경험했던 한계가있는 것 같습니다.

Direct2D에 대해 잘 모르지만 그 기술은 흥미로울 것 같습니다. 하지만 오버레이 창을 할 수 있다는 언급을 찾을 수는 없습니다.

그래서이 모든 것이 저의 문제를 초래합니다. Windows 아래에서 오버레이 Windows를 수행하는 가장 좋은 기술은 무엇입니까? (Vista와 Win7 최소한 xp는 가질 수 있습니다)

나는 특히 좋은 기술을 무시하고 있습니까? 모든 제안은 감사 할 것입니다.

도움이 되었습니까?

해결책

GDI 또는 .NET 공간에서 수행 한 작업에 비해 엄청나게 빠른 고품질 렌더링을 얻을 때 Direct2D 및 DirectWrite를 권장합니다. 유일한 문제는 Vista 이상을 사용해야한다는 것입니다.

다른 팁

WPF는 매우 쉽게 찾고있는 작업을 수행 할 수 있지만, WPF 의이 특정 기능 (픽셀 당 투명성이있는 Windows)은 그래픽 드라이버 버그로 인해 매우 문제가되는 경향이 있습니다 (분명히 그래픽 하드웨어 제조업체는 Direct3D Windows가 PER로 테스트하지 않습니다. 픽셀 알파 값은 아주 잘).

WPF는 투명성을 위해 계층화 된 Wind

"공역"문제는 WPF 창 내부에서 winforms 컨트롤을 호스팅 할 때만 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top