如何在 mfc 中更改 CImage 对象的背景颜色?

Posted

技术标签:

【中文标题】如何在 mfc 中更改 CImage 对象的背景颜色?【英文标题】:how to change the background colour of CImage object in mfc? 【发布时间】:2012-09-26 15:54:23 【问题描述】:

我有一个包含一些对话框的 Windows 应用程序。对话框是使用 mfc 构建的。我正在使用 CImage::Draw() 方法在每个对话框上绘制一些图像(.png)。我想提一下,我没有在对话框上使用任何图片控件来渲染这些图像,而是在运行时使用一些句柄加载它们。直到一切正常。现在,当图像加载时,这些图像的背景变为白色。资源文件中的图像没有白色背景。我的问题是如何在对话框上绘制这些图像时更改它们的背景?我希望图像的背景类似于我正在使用的默认对话框的颜色。 还有一个问题是 .png 图像在 windows server 2008 R2 机器的对话框中渲染不好(图像分散)。对此有什么可能的补救措施? 任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您的 PNG 图像显然不是 32 位的。您需要一个 Alpha 通道和一个透明背景。在例如打开您的图像油漆网。我敢打赌你的背景也是白色的!关于图像质量,您是否在绘图时拉伸图像?

编辑:对于 8 位成像器,我认为需要调用 SetTransparentColor。对于 32 位图像,也许这个函数可以:TransparentBlt

【讨论】:

png 图像仅为 32 位。图像也是背景。我确信图像是透明的。因为在其他程序中,相同的图像正在做 gud。我到底在哪里做错了。加载图像时没有其他方法可以更改图像的背景吗?

以上是关于如何在 mfc 中更改 CImage 对象的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

使用(MFC 的)CImage::SetPixel() 改变像素的颜色

MFC单文档应用程序显示图像

如何更改 mfc 应用程序的背景属性

无法让CImage在Visual C ++ 2005(MFC)中工作

如何更改MFC按钮的背景色

将MFC Cimage初始化为纯色