【问题标题】:Visual Studio 2010 - C++ MFC application with Ribbon UI - Transparency in bitmapsVisual Studio 2010 - 带有功能区 UI 的 C++ MFC 应用程序 - 位图中的透明度
【发布时间】:2010-09-29 17:10:51
【问题描述】:

我正在使用 Visual C++ 2010 中由 MFC 向导生成的小型应用程序,我只是决定将我自己的位图放入资源中以替换显示在功能区 UI 应用程序中的三立方体 MFC 位图按钮,又名“大理石”。

原件似乎使用黑色 (0,0,0) 作为透明度颜色,但我无法确定 Visual Studio 2010 中的 MFC 功能区(mfc-feature-pack 的东西)是什么来确定透明度的位图用作功能区的主图标。

功能区 (IDR_RIBBON) 的属性显示 Image=IDB_MAIN,IDB_MAIN 是 BMP 格式的 32x32 位图,从名为 main.bmp 的磁盘文件加载。

这个项目中的一些位图资源看起来像我所期望的那样:变成透明的洋红色,但是 MFC 主位图没有使用这种配色方案或调色板。

这是一个实际结果的例子,我希望这表明结果不是我想要的:

顺便说一句,似乎无法在应用程序按钮中使用 ICON 资源,所以我有点不明白他们是如何消除其中的透明度的。

【问题讨论】:

    标签: visual-studio-2010 visual-c++ mfc-feature-pack


    【解决方案1】:

    您需要创建一个具有 Alpha 通道的 32 位位图以实现透明度。我这样做的方法不是很简单,但这是我唯一能想到的。

    • 使用 Paint.Net 将源图像转换为保留透明度的 PNG。不幸的是,Paint.Net 不支持直接创建 32 位位图。
    • 然后下载AlphaConv,它可以从PNG文件创建32位位图。

    【讨论】:

      【解决方案2】:

      也许是半透明的PNG?您知道 BMP 文件也可以有 Alpha 通道吗?

      【讨论】:

      • 根据我的各种图标编辑工具,BMP和PNG文件不支持透明。也许这意味着,PNG 格式确实支持它,但我的工具都不支持。我想知道,MFC 在 alpha 通道之前是如何做到的?好的旧洋红色怎么了?
      • 这是你的工具。 PNG 从一开始就支持 alpha。现在,支持 alpha-BMP 的工具确实非常罕见,主要是因为它实际上只是在欺骗 RGB 位图(与 RLE 压缩位图相反)是 32 位:红色、绿色、蓝色......和 ​​alpha,通常设置为完全不透明。
      猜你喜欢
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 2012-01-13
      • 2013-11-19
      相关资源
      最近更新 更多