此文系转载,忘了博客地址了
VC++中如何给对话框加背景图片(2010-03-22 16:57:59)
方法一:
1、声明成员变量CBrush m_brush;
2、在InitDialog中添加代码:
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
//IDB_BITMAP1是图片资源ID
m_brush.CreatePatternBrush(&bmp);
|
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
//IDB_BITMAP1是图片资源ID
m_brush.CreatePatternBrush(&bmp);
|
3、重载对话框的OnCtlColor,改最后的返回值:
return
(
HBRUSH
)m_brush;
|
1
|
return
(
HBRUSH
)m_brush;
|
方法二:
把下面这段代码加进OnPaint()里就行了
CPaintDC dc(
this
);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
//这个IDB_BITMAP1要自己添加
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.Rectangle(0,0,200,200);
// 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);
|
CPaintDC dc(
this
);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
//这个IDB_BITMAP1要自己添加
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.Rectangle(0,0,200,200);
// 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);
|
方法三:使用StretchBlt()函数,具有图像自适应窗体功能
CPaintDC dc(
this
);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
//这个IDB_BITMAP1要自己添加
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.Rectangle(0,0,200,200);
// 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);
|
//加载背景图
//CDialog::OnPaint();//要禁止这个调用
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP8是你自己的图对应的ID
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,
bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
//以上是改变背景图**********************************************
CPaintDC dc(
this
);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
//这个IDB_BITMAP1要自己添加
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.Rectangle(0,0,200,200);
// 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);
|