将部分透明的图像像素变为黑色

4
我很新于C#,遇到了一个问题并且一直无法解决。我有一排按钮,每个按钮都有一个.png格式的图像。这些图像是.png格式以支持透明度,并且在GIMP中平滑边缘会留下一些半透明像素。我已经将Image List Toolbar(imglToolbar)的属性设置为将“Transparent”识别为指定的颜色以显示为透明。我正在使用Visual Studio 2005进行开发。
奇怪的是,当我查看Visual C#表单预览窗口时,一切看起来都很好。图标看起来正常。但是,一旦我实际构建项目,按钮会将图像边缘附近的每个半透明像素视为黑色。似乎它不能处理既是透明又有颜色的像素。
通过Visual C#表单编辑器查看它的图像: alt text http://img5.imageshack.us/img5/2577/whatiwanted.jpg 构建后的外观:

描述文本 http://img690.imageshack.us/img690/7241/whatigot.jpg

你有任何关于这个发生的想法吗?

2个回答

2

我刚刚找到了答案,至少对于我的特定情况是这样的。

我处理的表单是一个顶级MDI容器。由于某种原因,将图标设置为32位颜色不允许这些半透明像素被正确解释。出于一时的想法,将其设置为24位完全解决了问题。不确定这是否是由于某些看不见的因素而引起的某种情况,但颜色深度的改变解决了我的问题。

对于那些可能遇到类似问题的人,确保窗口不是MDI容器的子级。在寻找信息时,我发现MDI子级根本不支持TransparencyKeys。


1

我也遇到了这个问题;将窗体的IsMdiContainer属性更改为false解决了它。


谢谢,但看起来它需要保持为MDI容器。遗憾。 - Sean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接