如果想用图片作为对话框的背景,那该怎么办?

engine198473 2004-04-05 07:27:08
如果想用图片作为对话框的背景,那该怎么办?
...全文
35 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
uoyevoli 2004-04-05
  • 打赏
  • 举报
回复
EraserBkgnd中画问题到窗口DC
captainliyun 2004-04-05
  • 打赏
  • 举报
回复
也可以只是用OnCtlColor就可以完成这个功能
在你的对话框h文件中
CBrush m_bkBrush; //主窗口背景刷
CBitmap bmpbk;

在OnInitDialog()函数中
bmpbk.LoadBitmap(MAKEINTRESOURCE(IDB_BACK));
ASSERT(bmpbk.m_hObject != NULL);
m_bkBrush.CreatePatternBrush(&bmpbk);
ASSERT(m_bkBrush.m_hObject != NULL);

在OnCtlColor()函数中
if(nCtlColor == CTLCOLOR_DLG)
{
hbr = (HBRUSH)m_bkBrush.m_hObject;
pDC->SetTextColor(RGB(123,123,123));
hbr = m_bkBrush;
}
最后别忘了释放资源
在OnDestroy()中
m_brush.DeleteObject();
bmpbk.DeleteObject();
captainliyun 2004-04-05
  • 打赏
  • 举报
回复
我觉得
zhangcrony(为了不再郁闷地生活﹐我不得不郁闷地工作)
的方法是正确的,

如果在OnPaint中去处理的话,效率很低

如过用Picture去设置的话,不好编辑对话框资源了。
byf2002 2004-04-05
  • 打赏
  • 举报
回复
最简单的就是用Picture控件的办法.

先引入一个位图,例如IDB_BITMAP1
然后将PICTURE中设置IDB_BITMAP1即可.
薛定谔之死猫 2004-04-05
  • 打赏
  • 举报
回复
mark
酒红绿叶 2004-04-05
  • 打赏
  • 举报
回复
http://www.vccode.com/file_show.php?id=2212
zhjie374 2004-04-05
  • 打赏
  • 举报
回复
BITMAP bm;
m_bmp.GetBitmap(&bm);
m_pbmCurrent = &m_bmp;
CDC dcMem;
dcMem.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dcMem.SelectObject(m_pbmCurrent); ///选择位图
pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcMem,0,0,SRCCOPY); ///画出位图
dcMem.SelectObject(pOldBitmap);
return TRUE;
zhangcrony 2004-04-05
  • 打赏
  • 举报
回复
HBRUSH CMyDlg::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetBkMode(TRANSPARENT); ///选择透明背景模式
pDC->SetTextColor(RGB(0xff,0xff,0xff)); ///设置文字颜色为白色
return m_brHollow;
}

BOOL CMyDlg::OnEraseBkgnd(CDC* pDC)
{
BITMAP bm;
m_bmp.GetBitmap(&bm);
m_pbmCurrent = &m_bmp;
CDC dcMem;
dcMem.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dcMem.SelectObject(m_pbmCurrent); ///选择位图
pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcMem,0,0,SRCCOPY); ///画出位图
dcMem.SelectObject(pOldBitmap);
return TRUE;
}

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧