图形设备接口类,GDI类:CPen, CBrush,CFont,CBitmap,CRgn,CPalette等
来源:互联网 发布:淘宝充值劲舞团未到账 编辑:程序博客网 时间:2024/05/17 03:35
GDI 对象:
- Windows GDI提供了一些绘图对象,程序通过这些GDI对象设置绘图的工具和风格,这里的对象是指Windows数据结构,而不是C++类的对象。
- GDI对象是Windows图形设备接口的抽象绘图工具。除了画笔和画刷,其它GDI对象还包括字体、位图和调色板。
- MFC对GDI对象进行了很好的封装,提供了封装GDI对象的类,如CPen、CBrush、CFont、CBitmap和CPalette等,这些类都是GDI对象类CGdiObject的派生类。
================================================================
选择一个GDI对象:
1. CDC类提供了成员函数SelectObject()选择用户自己创建的GDI对象,该函数有多种重载形式,
用户可以选择已定制好的画笔、画刷、字体和位图等不同类型的GDI对象
CPen* SelectObject( CPen* pPen );
CBrush* SelectObject( CBrush* pBrush );
virtual CFont* SelectObject( CFont* pFont );
CBitmap* SelectObject( CBitmap* pBitmap );
int SelectObject( CRgn* pRgn );
CGdiObject* SelectObject(CGdiObject* pObject );
函数参数是一个指向用户已定制好的GDI对象的指针,选择操作成功函数将返回以前GDI对象的指针,否则返回NULL。
2. 在选择绘图设备类对象(GDI对象)进行绘图时,一般可按下列步骤进行:
(1)定义一个GDI对象,然后调用相应的函数(如CreatePen、CreateSolidBrush等)创建此GDI对象。
(2)将已构造出的GDI对象利用设备环境类对象的成员函数SelectObject选入到当前环境中,并同时将原来的GDI对象保存起来。
(3)绘图结束后,恢复当前设备环境中原来的GDI对象。
注意:
在Windows系统中包含了一些库存的GDI对象,在第(3)步中可直接利用设备环境类(CDC)的成员函数SelectStockObject将一个Windows库存的GDI对象选入,系统可自动将原来选入的GDI对象从设备环境中分离出来。
================================================================
图形设备接口、GDI类:
CGdiObject类
CGdiObject类派生于CObject类,它是CGdiObject、CPen、CBrush、Cfont和CBitmap等的基类。
用户不能直接生成一个CGdiObject类,而必须在它的某种设备继承类中生成一个CGdiObject类的派生类。
CPen类
CPen类是CGdiObject类的一个派生类,它封装了Windows图形设备接口(GDI)中有关画笔的操作。
创建CPen对象:
创建一个CPen对象可以有以下几种方法:
(1)定义一个CPen对象,用其成员函数CreatePen或CreatePenIndirect对其进行初始化。
如:
CPen pen;
Pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
(2)定义一个CPen对象,并一次性地初始化它的所有参数。
如:
CPen pen(PS_SOLID,1,RGB(255,0,RGB(255,0,0));
(3)动态地创建一个CPen对象。
如:
CPen *pen;
Pen = new CPen(PS_SOLID,1,RGB(255,0,0));
.......
delete pen;
在一个函数中多次创建一个CPen对象时可以采用这种方法。
应用这种方法时,特别注意操作完毕后要删除分配的CPen对象,即:delete pen;
CBrush类
CBrush类是CGdiObject类的一个派生类,它封装了Windows图形设备界面(GDI)中有关画刷的操作。
CBrush类的用法与CPen类似。
创建CBrush对象:
利用CBrush类的构造函数可创建Cbrush对象。
1. 实心画刷
用实心画刷进行图形填充时,以这种画刷的颜色实心填充。其创建方法如下:
(1)定义CBrush对象,用函数CreateSolidBrush对对象进行初始化。
CBrush brush;
brush.CreateSolidBrush(RGB(255,0,0));
(2)定义CBrush类对象,并利用构造函数对对象的参数进行初始化。
CBrush brush(RGB(255,0,0));
(3)动态创建。用这种方法定义时,在操作完成后要删除创建的CBrush对象。
CBrush *brush;
Brush=new CBrush(RGB(255,0,0));
……
delete brush;
2. 影线画刷
影线画刷不是用画刷的颜色实心填充图形,而是用不同的阴影图案来填充。
影线画刷的创建方法同实心画刷一样:
(1)定义对象,用函数初始化。
如:
CBrush brush;
brush.CreateSolidBrush(PS_SOLID,RGB(255,0,0));
(2)一次性创建。
如:
CBrush brush(HS_HORIZONTAL,RGB(255,0,0));
(3)动态创建。
如:
用这种方法创建的CBrush对象,在操作完成后要删除CBrush对象。
CBrush * brush;
Brush = new CBrush(HS_HORIZONTAL,RGB(255,0,0));
……
delete brush;
3. 位图画刷
位图画刷是用位图图像来填充图形的。
函数CreatPatternBrush用来初始化一个位图画刷。
以下代码创建一个位图画刷(其中,pBitmap指向一个位图对象):
CBrush brush;
brush.CreatPatternBrush(pBitmap);
CFont类
CFont类是CGdiObject类的一个派生类,它封装了逻辑字体及方法。
创建CFont对象:
CFont类只有一个构造函数,在定义了一个CFont类对象之后,必须用成员函数CreateFont或CreateFontIndirect来初始化CFont对象的参数。
CreateFont函数的参数非常多,可查阅MSDN。
CBitmap类
CBitmap类和Cpen、CBrush类一样,是CGdiObject类的派生类,它封装了使用Windows GDI进行图形绘制中关于位图的操作。
在CBitmap类中重载了两个LoadBitmap函数,用于加载位图资源:
BOOL LoadBitmap( LPCTSTR lpszResourceName );
BOOL LoadBitmap( UINT nIDResource );
- 图形设备接口类,GDI类:CPen, CBrush,CFont,CBitmap,CRgn,CPalette等
- C++/MFC-GDI主要对象(Bitmap、CBrush、CFont、CPalette、CPen和CRgn)
- GDI绘图类示例代码-CFont CPen CBrush
- GDI绘图类示例代码-CFont CPen CBrush
- 使用CRgn和CFont类
- 图形设备接口之CBrush
- GDI 图形设备接口
- 图形设备接口(GDI)
- GDI图形设备接口
- 图形设备接口(GDI)
- 图形设备接口 GDI
- GDI图形设备接口
- GDI-图形设备接口
- GDI画笔和CPen类
- [MFC]CPen画笔类、CBrush画刷类使用介绍
- CPen,CBrush,
- MFC学习笔记.day02续-CDC类,绘图区域,CPen画笔,画刷 CBrush,DC设备描述表
- 图形设备接口(GDI)
- 《Linux企业应用案例精解》已出版
- 一个简单的Oracle存储过程测试数据插入效率
- uva 10123 - No Tipping
- const 用法
- Win7查看端口使用情况和强制关闭端口
- 图形设备接口类,GDI类:CPen, CBrush,CFont,CBitmap,CRgn,CPalette等
- WP7中的转义字符
- Linux学习笔记--Linux用户环境
- Android设计模式系列(10)--SDK源码之原型模式
- SQL为ACCESS更改表名
- HDU1234(开门人和关门人)
- 基于JRTPLIB库的RTP数据传输设计文档
- C++知识点辨析
- ubuntu下下载Android源代码的方法