DC/画线/获得窗口指针/画刷/位图
2011-06-11 22:33
344 查看
第一部分——画线
第一种方法:
HDC声明一个句柄。
GetDC(m_hWnd)返回一个指向m_hWnd句柄的窗口的设备描述表。
MoveToEx和LineTo是两个GDI(图形调和接口——基于类的API)函数。
GetDC()必须和ReleaseDC一起使用,因为Windows中,设备资源是共享的,一个应用程序使用设备后必须释放它。
第二种方法: CDC(DC类)声明一个DC对象 CDC*声明一个指向DC对象的指针(例如pDC)。 *pDC有两个方法 MoveTo和LineTo。 使用后要ReleaseDC()函数的形参是指针类型的,这就是为什么一开始CDC不声明对象而是对象指针的原因。 第三种方法:(比较方便) CClientDC类,这个类的构造函数(形参是指向窗口的指针)获取DC,析构释放。 同样有MoveTo和LineTo这两个方法 后面的部分讲在客户区以外的区域中画线 PS:这部分介绍了怎么得到父类窗口的指针,用GetParent()函数得到返回值;
用CClientDC dc(GetParent())得到的DC是客户区
第四种方法:
CClientDC改成CWindowDC()可以得到窗口的DC;
CWindow dc(GetParent())得到主窗口包括标题栏的DC。
注意:工具栏是客户区
第二部分——修改画笔样式
要修改设备描述表中的画笔样式,必须1、新建一个画笔。2、修改它的样式。3、将它选进DC。
这里要用到SelectObject这个函数;
第三部分——使用画刷
画刷用来填充一个区域,在画一个矩形的时候,新建的画刷不需要被选进DC,因为fillrect函数的第二个参数就是一个指向画刷的指针。
第四部分——位图画刷
这里要注意,位图不能直接填充,而是要把位图加载到画刷中去
用CBitmap类声明一个位图对象,这个对象用LoadBitmap(IDB_BITMAP)将它本身和IDB_BITMAP联系起来。
CBrush类的对象有一个构造函数可以以CBitmap*做参数。
透明画刷
这里用到CDC类的Rectangle函数,上面的Rect方法填充一个区域,这个Rectangle是一个矩形边框(默认填充白色画刷)。但是我们想画一个内部透明的边框,我们可以把透明画刷选进去。
1、用CDC的SelectObject,它的参数是一个对象指针;
2、GetStockObject这个方法,当参数是NULL_BRUSH时可以生成一个空画刷的句柄,类型是HGDIOBJ。
3、FromHandle是一个专门用来把句柄转换为pObject的函数,很多类都有这个方法。比如CBrush类的FromHandle可以把一个HBRUSH转换为pBrush;
用3,可以把1和2结合起来用 就实现
CBrush *pbrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
SetROP2函数用来设置绘图模式。
第一种方法:
HDC声明一个句柄。
GetDC(m_hWnd)返回一个指向m_hWnd句柄的窗口的设备描述表。
MoveToEx和LineTo是两个GDI(图形调和接口——基于类的API)函数。
GetDC()必须和ReleaseDC一起使用,因为Windows中,设备资源是共享的,一个应用程序使用设备后必须释放它。
第二种方法: CDC(DC类)声明一个DC对象 CDC*声明一个指向DC对象的指针(例如pDC)。 *pDC有两个方法 MoveTo和LineTo。 使用后要ReleaseDC()函数的形参是指针类型的,这就是为什么一开始CDC不声明对象而是对象指针的原因。 第三种方法:(比较方便) CClientDC类,这个类的构造函数(形参是指向窗口的指针)获取DC,析构释放。 同样有MoveTo和LineTo这两个方法 后面的部分讲在客户区以外的区域中画线 PS:这部分介绍了怎么得到父类窗口的指针,用GetParent()函数得到返回值;
用CClientDC dc(GetParent())得到的DC是客户区
第四种方法:
CClientDC改成CWindowDC()可以得到窗口的DC;
CWindow dc(GetParent())得到主窗口包括标题栏的DC。
注意:工具栏是客户区
第二部分——修改画笔样式
要修改设备描述表中的画笔样式,必须1、新建一个画笔。2、修改它的样式。3、将它选进DC。
这里要用到SelectObject这个函数;
第三部分——使用画刷
画刷用来填充一个区域,在画一个矩形的时候,新建的画刷不需要被选进DC,因为fillrect函数的第二个参数就是一个指向画刷的指针。
第四部分——位图画刷
这里要注意,位图不能直接填充,而是要把位图加载到画刷中去
用CBitmap类声明一个位图对象,这个对象用LoadBitmap(IDB_BITMAP)将它本身和IDB_BITMAP联系起来。
CBrush类的对象有一个构造函数可以以CBitmap*做参数。
透明画刷
这里用到CDC类的Rectangle函数,上面的Rect方法填充一个区域,这个Rectangle是一个矩形边框(默认填充白色画刷)。但是我们想画一个内部透明的边框,我们可以把透明画刷选进去。
1、用CDC的SelectObject,它的参数是一个对象指针;
2、GetStockObject这个方法,当参数是NULL_BRUSH时可以生成一个空画刷的句柄,类型是HGDIOBJ。
3、FromHandle是一个专门用来把句柄转换为pObject的函数,很多类都有这个方法。比如CBrush类的FromHandle可以把一个HBRUSH转换为pBrush;
用3,可以把1和2结合起来用 就实现
CBrush *pbrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
SetROP2函数用来设置绘图模式。
相关文章推荐
- 关于获得MFC窗口其它类指针的方法
- 在框架窗口中如何获得,视图类的指针以及文档,视图,框架窗口指针的获取与应用
- 获得MFC窗口指针方法总结
- MFC获得主窗口和父窗口指针
- 获得窗口指针
- 关于获得MFC窗口其它类指针的方法
- 获得MFC窗口其它类指针的方法
- 如何获得MFC窗口其它类指针?
- MFC获得主窗口和父窗口指针
- 获得MFC窗口其它类指针的方法
- 获得mfc窗口指针方法总结
- 获得父窗口指针:获得MFC窗口其它类指针的方法
- 关于获得MFC窗口其它类指针的方法
- MFC通过对话框窗口句柄获得对话框对象指针
- 获得窗口指针
- MFC通过对话框窗口句柄获得对话框对象指针
- 怎么获得任一窗口的指针
- 关于获得MFC窗口其它类指针的方法(csdn)
- 获得MFC窗口其它类指针的方法
- 关于获得MFC窗口其它类指针的方法