1
我正在爲Win7 +編程並使用Direct2D進行繪製。 UpdateLayeredWindow需要HDC,這意味着我最好創建一個WICRenderTarget(而不是GPU加速)。有什麼辦法可以在不使用UpdateLayeredWindow的情況下製作半透明窗口?有什麼辦法可以在不使用UpdateLayeredWindow的情況下製作半透明窗口
我正在爲Win7 +編程並使用Direct2D進行繪製。 UpdateLayeredWindow需要HDC,這意味着我最好創建一個WICRenderTarget(而不是GPU加速)。有什麼辦法可以在不使用UpdateLayeredWindow的情況下製作半透明窗口?有什麼辦法可以在不使用UpdateLayeredWindow的情況下製作半透明窗口
渲染分層窗口只有兩個API函數:UpdateLayeredWindow()
和SetLayeredWindowAttributes()
。
UpdateLayeredWindow()
要求您將窗口內容呈現到您自己的內存位圖HDC
,然後在需要時顯示OS。
SetLayeredWindowAttributes()
依靠要求您渲染的傳統WM_PAINT
模式的操作系統提供HDC
代替,這是作爲一個內存中的位圖HDC
該操作系統適用影響你的渲染完成後實施。
感謝您的回答。這是否意味着直到現在,分層窗口才是實現半透明窗口的唯一方式? – YOUKU
分層窗口是在Windows 2000中引入的,因此它們已經存在了很長時間。它們是製作透明和/或alpha混合*浮動*窗口的首選方式(在Windows 8之前,不能將子窗口創建爲分層窗口)。 'SetLayeredWindowAttributes()'更容易編碼,因爲它可以與現有的基於WM_PAINT的代碼一起工作。 'UpdateLayeredWindow()'更高效但更難編碼,因爲它根本不使用'WM_PAINT'。所以選擇你想要使用哪種方法,但你必須使用其中一種。 –