我有点困惑在这里。在C#中,我的表单具有透明背景,表单上有一个图片框。图片框中有一个带有很多透明区域的PNG图像,这很明显,因为我在photoshop中查看过......透明度就在那里!
然而,当我运行我的应用程序时,PNG图像由于某种原因忽略了透明部分?有什么想法吗?
现在,图像看起来似乎试图在某些部分上进行透明化,但它的图像看起来很可怕。
我需要用图片解释一下:
在左侧,您可以看到我已将表单背景设置为蓝色,并且未设置透明度键。界面PNG在顶部与界面元素之间的透明度甚至界面半透明背景的作品!您可以通过图像查看表单背景。
但是,在右侧图像上,我已将表单透明度键设置为与背景颜色相同...它使所有表单都透明但似乎忽略了PNG上接口项之间的透明部分...让它看起来像表格背景颜色仍然在图片框下面并且制作那个可怕的锯齿边缘。
因此,如果PNG的工作形式不透明,为什么它不会隐藏PNG下的其他形式呢?我在这里看到的只是在PNG界面元素和半透明部分之间显示的桌面......但我看到的只是我在表单上设置的颜色!
我希望这是有道理的。
我已经解决了它只会在png的某些部分有阴影的情况下发生?
答案 0 :(得分:0)
这种情况会发生,因为正如您所说,您正在使用投影。透明度键的工作原理是在绘制表单后删除您从显示中指定的确切颜色,因此当阴影与背景混合时,它们会创建一个不透明的新颜色。您可以通过使用一些API调用并创建每像素掩码(基本上是灰度位图,告诉每个像素应该是透明度级别)来绕过这一点。
有一个很好的示例项目here