代码之家  ›  专栏  ›  技术社区  ›  Sean

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

  •  4
  • Sean  · 技术社区  · 14 年前

    我对C很陌生,我遇到了一个问题,但还没能解决。我有一行按钮分配了.png图像。图像采用.png格式以允许透明,在gimp中平滑边缘会留下一些半透明像素。我已经设置了图像列表工具栏(imgltoolbar)的属性,将“透明”识别为指定的颜色,以显示为透明。我在Visual Studio 2005中工作。

    奇怪的是,当我查看Visual C窗体预览窗口时,所有东西看起来都很棒。图标看起来与它们应该的完全一样。然而,一旦我真的构建了这个项目,按钮就会把图像边缘附近的每一个半透明像素视为黑色。它似乎不能处理一个既透明又有颜色的。

    通过Visual C表单编辑器显示的图像:

    alt text http://img5.imageshack.us/img5/2577/whatiwanted.jpg

    构建时的外观图像:

    alt text http://img690.imageshack.us/img690/7241/whatigot.jpg

    有什么关于为什么会这样的想法吗?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Sean    14 年前

    我刚刚找到了答案,至少是针对我的具体情况。

    我要处理的表单是顶级MDI容器。无论出于什么原因,将图标设置为32位颜色都不允许正确解释这些半透明像素。设置为24位,一时兴起,完全解决了问题。不确定这是不是由于某种看不见的因素造成的,但是颜色深度的变化解决了我的问题。

    此外,对于可能遇到类似问题的用户,请确保窗口不是MDI容器的子级。在查找信息时,我发现MDI儿童根本不支持透明键。

        2
  •  1
  •   Laplace    14 年前

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