2011-04-28 78 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