UpdateLayeredWindow在Windows XP上显示蓝调

时间:2011-04-28 15:37:13

标签: c# .net .net-2.0

我有一个部分基于this code的NET 2.0 Winforms应用程序。它使用UpdateLayeredWindow API提供表单透明度。它在Vista和Windows 7上运行良好,但在Windows XP上运行失败。

我已将其缩小到UpdateLayeredWindow,导致上一个错误8(内存不足)失败。在进行实验时,我还发现,ULW_ALPHAULW_COLORKEY的交换(所需)ULW_OPAQUE适用于XP,但会产生错误的效果(图片显示但透明度有误)。

我想知道PNG位图在内部加载和处理的方式是否有问题,而且UpdateLayeredWindow不喜欢它。

1 个答案:

答案 0 :(得分:2)

看起来它正在工作,但是分层窗口实际上并不可见,我猜不透明度设置是错误的。使用您链接的代码,将LayeredForm.cs中的第67行从“BlendOp = 255”更改为“BlendOp = 0”可以解决我的问题(在Windows XP SP3上运行)。