Windows XP上的窗口蓝色

本文关键字:窗口 蓝色 XP Windows | 更新日期: 2023-09-27 17:53:49

我有一个部分基于此代码的。NET 2.0 Winforms应用程序。它的特点是使用UpdateLayeredWindow API的表单透明。它在Vista和Windows 7上运行得很好,但在Windows XP上就不行了。

我已将其缩小到UpdateLayeredWindow失败,最后错误8(内存不足)。在实验中,我还发现,交换(期望)ULW_ALPHAULW_COLORKEYULW_OPAQUE在XP上工作,但产生错误的效果(图像显示,但透明度是错误的)。

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

Windows XP上的窗口蓝色

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