DC/画线/获得窗口指针/画刷/位图
来源:互联网 发布:知乎删除自己的提问 编辑:程序博客网 时间:2024/05/01 22:04
第一部分——画线
第一种方法:
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函数用来设置绘图模式。
- DC/画线/获得窗口指针/画刷/位图
- 获得窗口指针
- 获得窗口指针
- MFC获得父窗口指针
- 获取DC中的位图
- dc和位图
- 获得屏幕dc
- 如何获得MFC窗口其它类指针?
- 获得mfc窗口指针方法总结
- 如何安全获得一个窗口句柄指针
- 兼容DC和兼容位图
- 兼容DC和兼容位图
- MFC中实现用DC画线
- 计算机图形学:窗口画线
- CSplitterWnd窗口拆分后如何获得指定窗口的指针
- MFC获得主窗口和父窗口指针
- MFC获得主窗口和父窗口指针
- MFC获得主窗口和父窗口指针
- Flex:AIR十分钟就能做出一个浏览器
- javascript的自定义对象
- struts2配置导致jsp使用标签库异常的处理
- x86的中断
- JSP 屏蔽浏览器缓存
- DC/画线/获得窗口指针/画刷/位图
- Excel中制作印章
- 十条不错的编程观点
- linux源代码下载地址
- 优秀程序员的十个习惯
- javascript的继承
- 使用Linux下rsync实现TurboMail数据增量自动备份
- javascript中的定时器
- flash与物理引擎:拖拽