给对话框贴图的三种方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
给对话框贴图的三种方法
要给一个对话框贴图,其实就是将位图绘制到窗口上,所以必然要用到绘图类(CDC及其派生类),我们应该先定义一个绘图类的对象(绘图者加绘图工具),并将所要绘制的窗口对象的指针传进来或得到绘图类对象的指针,使“作画者”知道要在那个窗口绘图。然后获取客户区矩形,指定位图要绘制在窗口的哪个矩形区域中,接下来定义一个位图对象并加载将要绘制的位图。以上的步骤是以下贴图方法所共有的,接下来分别介绍它们的贴图原理。
//贴图方法一,是常规贴图法,也是最复杂难懂的方法
CClientDC dc(this);//定义客户区绘图者,并将当前窗口指针传给他,指定所要绘制的窗口
CRect rect;//定义矩形对象
GetClientRect(&rect);//得到客户区矩形并将其赋给rect对象
CBitmap bitmap;//定义位图对象
bitmap.LoadBitmap(IDB_BITMAP1);//载入位图资源
CDC dcCompatible;//用CDC类创建一般DC对象dcCompatible
dcCompatible.CreateCompatibleDC(&dc);
//调用CDC类的成员函数CreateCompatibleDC(&dc)使dcCompatible成为(目的)dc的兼容DC
dcCompatible.SelectObject(&bitmap);//将位图选入兼容DC,在兼容DC (dcCompatible)上先预先绘制
dc.BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);//目的DC调用BitBlt函数完成位图的绘制//贴图方法二,绘制矩形并用画刷填充法
CClientDC dc(this);
CRect rect;
GetClientRect(&rect);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
CPen pen(PS_NULL,1,RGB(255,0,0));//定义透明画笔
dc.SelectObject(&pen);//将画笔选入设备描述表
CBrush brush(&bitmap); //定义位图画刷
dc.SelectObject(&brush);//将画刷选入设备描述表
dc.Rectangle(&rect);//调用绘制矩形函数绘制边框透明矩形,并用当前画刷填充
//贴图方法三,画刷填充矩形法,是最简单最易理解的方法
CClientDC dc(this);
CRect rect;
GetClientRect(&rect);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
CBrush brush(&bitmap);//定义位图画刷
dc.FillRect(&rect,&brush);//用该换刷填充无边框矩形,即绘制矩形区域