背景图片的加载一般是在onpaint()函数中实现,当然也可以在其余想要修改的位置增加代码,那时就需要把(CPaint)dc 替换成(CDC)dc或其他;
CImage myIamge; myIamge.Load("res\\bg.bmp"); CRect rect; GetClientRect(&rect); dc.SetStretchBltMode(HALFTONE); myIamge.Draw(dc,rect);
给对话框贴上背景图,一般的方法就是在对话框的OnPaint中加载位图(bmp),下面给出一个实例:
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);//得到窗体的大小
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BK);//加载背景图片
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);//该函数给对话框贴上位图
////------------下面的代码给对话框添上文字
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(0, 0, 255));
CString str;
BYTE *pIP = (BYTE*)&m_dwIP;
str.Format("%d.%d.%d.%d:%d -- %s", pIP[3], pIP[2], pIP[1], pIP[0], m_dwPort, m_strName);
dc.DrawText(_T(str), &CRect(50, 50, 450, 100), DT_SINGLELINE | DT_CENTER );
1、定义画刷
CBitmap m_bkBitmap;
CBrush m_bkBrush; //在对话框头文件中定义
2、加载画刷
m_bkBitmap.LoadBitmap(IDB_BITMAP_BK);
m_bkBrush.CreatePatternBrush(&m_bkBitmap); //可以在初始化或要用到画刷的地方加载
3、应用画刷
在事件onctlcolor中添加:
switch(pWnd->GetDlgCtrlID())
{
case IDC_STATIC_USER:
pDC->SetBkMode(TRANSPARENT);
return m_bkBrush;
}
首先设置按钮类型为CBitmapButton,并修改按钮的属性【自绘】为true;然后插入两个图片资源;添加代码如下:
m_btn1.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2);
m_btn1.SizeToContent(); //使按钮适应图片大小
首先增加扩展类CImageButton的cpp及头文件,见CImageButton,然后增加按钮对象,在初始化中直接调用成员函数SetBitmaps()
m_btn1.SetBitmaps(IDB_BITMAP1); m_btn1.SetWindowText("test"); m_btn1.SetTextColor(RGB(255,255,255));
CImgButton m_btn1;
增加响应函数OnEraseBkgnd(),修改返回为:
return TURE;