2011-04-28 80 views
0

我有一個NET 2.0 Winforms應用程序部分基於this code。它具有使用UpdateLayeredWindow API的表單透明度。它在Vista和Windows 7上完美工作,但在Windows XP上失敗。Windows XP上的UpdateLayeredWindow布魯斯

我已經縮小到UpdateLayeredWindow失敗與上次錯誤8(沒有足夠的內存)。在實驗過程中,我還發現在ULW_COLORKEYULW_OPAQUE之間交換(理想)適用於XP,但產生錯誤的效果(圖像顯示透明度錯誤)。

我想知道是否有什麼是錯誤的方式PNG位圖正在加載和NET內部處理,並有一些關於它UpdateLayeredWindow不喜歡。

回答

2

看起來像是在工作,但分層窗口實際上不可見,我猜不透明設置是錯誤的。使用您鏈接的代碼,將LayeredForm.cs中的第67行從「BlendOp = 255」更改爲「BlendOp = 0」可以解決此問題(在Windows XP SP3上運行)。

+0

非常簡單!謝啦!今天浪費了太多時間,你節省了一天的時間。輝煌。 – wpfwannabe 2011-04-28 22:30:37

+0

不客氣:) – Alan 2011-04-29 10:23:26