【发布时间】:2014-05-05 11:33:18
【问题描述】:
我有一个表格。我将表单的背景颜色和透明度键设置为limeGreen,以使表单透明。
this.TransparencyKey = System.Drawing.Color.LimeGreen;
this.BackColor = System.Drawing.Color.LimeGreen;
这在 windows 7 主题上运行良好,但是当我将主题从 windows 7 更改为 windows 7 basic 时,它会显示窗体的背景?有什么办法可以解决这个问题吗?
Windows 7 主题
Windows 7 基本主题
【问题讨论】:
-
您是否在应用运行时更改主题?
-
我很确定 TransparencyKey 只是 Aero 功能。我记得过去曾尝试使用它,我选择覆盖表单的 onpaint 以将其切割到我的需要。 Aero 在 Windows 基本主题上被禁用。
-
刚刚尝试了一个快速测试,在我的 Windows XP VM 上,TransparencyKey 不起作用,它在基本主题的 Windows 7 Pro 上也不起作用,但它在具有启用 Aero 的标准主题的 Windows 7 Pro 上起作用.所以是的,它似乎是 Aero 功能,但除了这些指向这一点的快速 3 测试之外,我找不到任何支持它的东西。
-
那么@Franck 的解决方案是什么?
-
您的顶部屏幕截图暗示了核心问题,请注意绿色边缘是如何可见的。由您的绘画程序通过使用每像素 Alpha 模拟抗锯齿引起。这会改变背景像素的颜色,它不再匹配颜色键并使绿色边缘可见。如果在绘制时拉伸,这将扩展到整个图像。插值导致不匹配。只有修复图像和/或将图像绘制得与设计的一样大,这样就不需要插值,它才能正常工作。