MFC基本对话框中添加背景图片相关问题
如题,我先在基本对话框中添加并设计好界面布局后,参照网上的添加背景图片的方法,插入-》资源-》Bitmap-》引入,选择自己的图片如123.bmp,在程序voidCMyD...
如题,我先在基本对话框中添加并设计好界面布局后,参照网上的添加背景图片的方法,插入-》资源-》Bitmap-》引入,选择自己的图片如123.bmp ,在程序void CMyDlg::OnPaint()下的else中添加如下代码
CPaintDC dc(this);
CRect rc;
GetClientRect(&rc);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1);
bmpBackground.LoadBitmap((LPCTSTR)IDB_BITMAP1);
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap* pbmpPri = dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rc.Width(), rc.Height(), &dcMem,0,0,bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);
编译OK,点击运行有提示窗口忽略后能运行成功,可是窗口中只显示出了插入的图片背景,里面的控件布局没显示出来,鼠标点击后编辑框、按钮能显示,static标题文字没法显示,求过来人指点一二,不胜感激! 展开
CPaintDC dc(this);
CRect rc;
GetClientRect(&rc);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1);
bmpBackground.LoadBitmap((LPCTSTR)IDB_BITMAP1);
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap* pbmpPri = dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rc.Width(), rc.Height(), &dcMem,0,0,bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);
编译OK,点击运行有提示窗口忽略后能运行成功,可是窗口中只显示出了插入的图片背景,里面的控件布局没显示出来,鼠标点击后编辑框、按钮能显示,static标题文字没法显示,求过来人指点一二,不胜感激! 展开
1个回答
展开全部
添加背景最好是放在OnEraseBkgnd(CDC* pDC)函数中,在OnPaint中有可能会闪屏。
// CBitmap m_pBmp;
// BITMAP bm;
// CDC dcMem;
// m_pBmp.LoadBitmap(IDB_BITMAP_BG);
// m_pBmp.GetBitmap(&bm);//得到位图尺寸
// dcMem.CreateCompatibleDC(pDC);
// CBitmap* pOldBitmap = dcMem.SelectObject(&m_pBmp);
// pDC->SetStretchBltMode(COLORONCOLOR);//这个模式不设置的话会导致图片严重失真
// pDC->StretchBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, bm.bmWidth,bm.bmHeight,SRCCOPY);
// dcMem.SelectObject(pOldBitmap);
// dcMem.DeleteDC();
用我这个代码
为什么要LoadBitmap 2次?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询