2012-09-26 104 views
0

我有一个Windows应用程序,其中包含一些对话框。对话框已经使用mfc编译。我使用CImage :: Draw()方法在每个对话框上绘制一些图像(.png)。我想提到的是,我没有在对话框中使用任何图片控件来渲染这些图像,而是在运行时使用一些handle来加载它们,这一切都很好。现在当图像加载时,这些图像的背景会变成白色。资源文件中的图像没有白色背景。我的问题是如何改变这些图像的背景,同时在对话框上绘制它们?我想要图像的背景类似于我正在使用的默认对话框的颜色。 还有一个问题,在windows server 2008 R2机器的对话框中,.png图像渲染不好(图像分散)。可能的补救办法是什么? 任何帮助将不胜感激。如何更改mfc中CImage对象的背景颜色?

回答

1

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

编辑:对于8位成像器,我认为需要拨打SetTransparentColor。对于32位图像,这个函数可能会这样做:TransparentBlt

+0

png图像只有32位。图像也是背景。我相信这些图像是透明的。因为在其他程序中,相同的图像在做gud。我在哪里犯错误。在加载时没有其他方式来改变图像的背景吗? – dev

+0

查看我的更新回答。 – l33t