MFC 背景图像问题
Posted
技术标签:
【中文标题】MFC 背景图像问题【英文标题】:MFC Background image issue 【发布时间】:2014-02-02 20:37:53 【问题描述】:我在窗口中添加了背景图片,但其他图片没有出现。
背景图片与其他图片重叠
图片:
http://i.stack.imgur.com/efb2z.png
如何解决?
代码
/* ENTER */
CPngImage imagea;
imagea.Load(IDB_PNG1);
image.SetBitmap((HBITMAP)imagea.Detach());
/* PROGRESS BAR */
CPngImage imageaa;
imageaa.Load(IDB_PNG2);
image2.SetBitmap((HBITMAP)imageaa.Detach());
/* BACKGROUND */
CPngImage imageaaa;
imageaaa.Load(IDB_PNG3);
image3.SetBitmap((HBITMAP)imageaaa.Detach());
新问题 http://i.stack.imgur.com/wIurg.png
【问题讨论】:
你会在其他所有内容之后绘制背景图像吗?否则我们需要看一些代码... 我对@987654324@ 不是很熟悉,但这对我来说似乎是在加载图像(?)我对你绘制image
、image2
、@ 的代码更感兴趣987654327@.
“背景图片”是什么意思?你的意思是在视图内数据背后的背景中,还是在 MDI 子窗口后面的背景中,或者...?
【参考方案1】:
您是否正确使用SetWindowPos
功能?
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545%28v=vs.85%29.aspx
【讨论】:
【参考方案2】:您需要使用 OnEraseBackground()。
【讨论】:
【参考方案3】:制作背景图片有两种方法: - 直接在 OnEraseBackground() 中的对话框上绘制 - 将图像放在所有其他控件的后面
每种方法都有一些微妙的优点和缺点,但对于大多数应用程序来说,两者都应该工作。看来您使用的是第二种方法。您需要做的是确保后台控件一直位于控件堆栈的底部(z-pos - 使用 SetWindowPos() 将其发送到后台,或者只是在所有其他人之前创建它,但是您可以'不要使用对话框编辑器),还要确保你的后台控件设置了 WS_CLIPSIBLINGS。
【讨论】:
【参考方案4】:CPngImage
支持 MFC 框架基础结构,并不打算直接从您的代码中使用。
【讨论】:
以上是关于MFC 背景图像问题的主要内容,如果未能解决你的问题,请参考以下文章
如何用vc6.0 来做图像处理?是用mfc工程吗,然后导入图像么? 如何去掉图像的背景,然后反转