我有一个部分基于this code的NET 2.0 Winforms应用程序。它使用UpdateLayeredWindow
API提供表单透明度。它在Vista和Windows 7上运行良好,但在Windows XP上运行失败。
我已将其缩小到UpdateLayeredWindow
,导致上一个错误8(内存不足)失败。在进行实验时,我还发现,ULW_ALPHA
或ULW_COLORKEY
的交换(所需)ULW_OPAQUE
适用于XP,但会产生错误的效果(图片显示但透明度有误)。
我想知道PNG位图在内部加载和处理的方式是否有问题,而且UpdateLayeredWindow
不喜欢它。
答案 0 :(得分:2)
看起来它正在工作,但是分层窗口实际上并不可见,我猜不透明度设置是错误的。使用您链接的代码,将LayeredForm.cs中的第67行从“BlendOp = 255”更改为“BlendOp = 0”可以解决我的问题(在Windows XP SP3上运行)。