贴背景图片


背景图片的加载一般是在onpaint()函数中实现,当然也可以在其余想要修改的位置增加代码,那时就需要把(CPaint)dc 替换成(CDC)dc或其他;

1、窗口贴背景图片

方法1:CImage

		CImage myIamge;
		myIamge.Load("res\\bg.bmp");
		CRect rect;
		GetClientRect(&rect);
		dc.SetStretchBltMode(HALFTONE);
		myIamge.Draw(dc,rect);


 

方法2:CBitmap

 给对话框贴上背景图,一般的方法就是在对话框的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;

}

2、控件贴背景图片--button

方法1:CButton直接加图片

 

方法2:CBitmapButton

                首先设置按钮类型为CBitmapButton,并修改按钮的属性【自绘】为true;然后插入两个图片资源;添加代码如下:

m_btn1.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2);
m_btn1.SizeToContent();  //使按钮适应图片大小

 

方法3:采用优化按钮类,如CImageButton

                首先增加扩展类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;


 

你可能感兴趣的:(贴背景图片)