VC中MFC绘图详细教程
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)是一个用来确定或改变任何设备的GDI输出
位置和形象的属性集合
CDC类
CClientDC CWindowDC CPaintDC CMetaFileDC
前一页 休息
4
设备环境
设 备
(1)CWindowDC 和CClientDC CPaintDC区别
CWindowDC提供客户区和非客户区画图的设备环境; 坐标原点在屏幕左上角
CDC常用函数(参见MSDN)
前一页 休息
5
设备环境
设 获取设备环境 备 (1)使用GetDC()函数 环 CDC *CWnd GetDC() 境 int ReleaseDC(CDC * pDC )
(2)直接构造CDC对象 用声明一个CDC类或其派生类对象的方式来获
取设备环境 CClientDC dc(CWnd *)
前一页 休息
使用画笔、画刷
使 用 (2)选入画笔:将该画笔选入到设备环境中 画 CPen * SelectObject(CPen * pPen) 笔 CBrush * SelectObject(CBrush * pBrush) 、 virtual CFont * SelectObject(CFont * pFont) 画 int SelectObject(CRgn * pRgn) 刷 (3)调用绘图函数输出
8
皮肌炎图片——皮肌炎的症状表现
皮肌炎是一种引起皮肤、肌肉 、心、肺、肾等多脏器严重损害 的,全身性疾病,而且不少患者 同时伴有恶性肿瘤。它的1症状表 现如下:
1、早期皮肌炎患者,还往往伴 有全身不适症状,如-全身肌肉酸 痛,软弱无力,上楼梯时感觉两 腿费力;举手梳理头发时,举高 手臂很吃力;抬头转头缓慢而费 力。
Visual C++
第十章 图形设备接口
中国地质大学信息工程学院 林伟华
1
本章主要内容
设备环境 GDI对象 使用画笔 使用画刷 输出文本 映射模式 显示位图
前一页 休息
2
GDI
GDI
GDI(Graphics Device Interface) (1)GDI和Windows 设备驱动程序来支持设 备无关性。
CBrush( COLORREF crColor ); CBrush( int nIndex, COLORREF crColor ); CBrush( CBitmap* pBitmap );
crColor:RGB(255,255,255)颜色
nIndex:画刷阴影线风格
前一页 p休B息itmap:位图画刷
15
显示位图
显 示 位 图
BitBlt():按位图原来的比例显示位图 StretchBlt():可对位图进行放大或压缩 从文件中加载位图
CBitmap bitmap;
HBITMAP hbitmap = (HBITMAP)LoadImage(
NULL,
“AAA” //位图文件名
IMAGE_BITMAP //图象类别
环
CClientDC CPaintDC提供画图的设备环境;坐标原点
境
在客户区左上角
(2) CClientDC 和CPaintDC区别
CPaintDC是响应WM_PAINT消息,用在OnPaint()函数 中;只支持屏幕显示
CClientDC不响应WM_PAINT消息,只担负此时的绘图 工作;支持屏幕显示,也支持打印
DWORD dwltalic, //非零表示倾斜
DWORD dwUnderline, //非零表示下划线
DWORD dwStrikeout, //非零表示中划线
DWORD dwCharset, //字符集
DWORD dwOutputPrecision, //输出精度
DWORD dwClipPrecision, //剪裁精度
前一页 休息
12
逻 映射模式
辑
坐 坐标系统可分为逻辑坐标、设备坐标.
标
窗口:逻辑坐标系上程序员设置的一个区域。
、 设 备 坐
视口:实际输出设备(物理设备坐标系)上程序员设定 的一个区域。 映像模式的设置
SetMapMode(hdc,nMapMode); //设置映像模式 nMapMode=GetMapMode(hdc); //得到映像模式
//设置窗口原点
前一页 休息
13
映射模式
映 程序员直接在一个统一的逻辑坐标系中进行图形的绘制和
射
操作,而不考虑输出坐标系的情况。
模 式
映像模式定义了将逻辑坐标转为设备的度量单位以及设备 的x、y方向。
映像模式 将一个逻辑坐标映像为 坐标系设定
MM_ANISOTROPIC 系统 可选
MM_ISOTROPIC 系统确定 可选
dc.SelectObject(&bitmap);
(4)获取位图信息
BITMAP bmInfo;
bitmap.GetObject(sizeof(bmInfo),&bmInfo);
(5)使用BitBlt()显示位图
pDC->BitBlt(); // 该函数要用到位图bmInfo信息
前一页 休息
前一页 休息
6
GDI
GDI对象
GDI对象提供更丰富的图形操作函数,设备 环境类提供函数进行简单的图形绘制
对 CGdiObject 象 CBitmap
CBrush CPalette CPen CRgn
前一页 休息
7
使用画笔、画刷
使 (1)构建画笔、画刷 用 CPen( );
画 CPen( int nPenStyle, int nWidth, COLORREF crColor ); CPen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount =
标 SetWindowExtEx(HDC hdc,int nHeight,int nWidth,LPSIZE lpSize)
//设置窗口区域
SetViewportExtEx(HDC hdc,int nHeight,int nWidth,LPSIZE lpSize) //设置视口区域
SetWindowOrgEx(HDC hdc,int x,int y, LPPOINT lpPOINT)
笔
0, const DWORD* lpStyle = NULL );
、 nPenStyle:参看课本P146 画 nWidth: >1时,第一个参数中的PS_DASH(虚线)、PS_DOT(点线)、
PS_DASHDOT(点划线)、PS_DASHDOTDOT(双点划线)无效
刷 crColor:RGB(255,255,255)颜色
0,0, //宽度和高度
LR_LOADFROMFILE //从文件加载标志
)
bitmap.Attach(hbitmap);
前一页 休息
16
17
(2)负责系统与用户或绘图程序之间的信 息交换,并控制在输出设备上显示图形或文 字。 (3)应用程序主窗口、菜单、对话框都由 GDI绘制
前一页 休息
ห้องสมุดไป่ตู้
3
设备环境
设 备 环 境
设备环境(Device Context)(有译为设备描述表、 设备上下文)
(1)是绘图属性(字体、颜色等)和方法(各种绘图 函数)的集合
前一页 休息
10
输出文本
(1)声明字体对象
输
CFont NewFont;
出 (2)创建字体 文 CreateFont( int nheight,int nWidth,//高,宽
int nEscapement, //每行文字相以于页底的角
本
int nOrienation, //每个…..
DWORD nWeight , //字体粗细
MM_HIENGLISH 0.001英寸 x向右y向上
MM_HIMETRIC 0.01毫米 x向右y向上
MM_LOENGLISH 0.01英寸 x向右y向上
MM_LOMETRIC 0.1毫米 x向右y向上
MM_TEXT
1个像素 x向右y向下
前一页 M休M息 _TWIPS
1/1440英寸 x向右y向上
DWORD dwQuality,
//输出质量
DWORD dwPitchAndFamily, //字体系列
前一页DW休O息RD lpszFaceName//字体名称} ;
11
输出文本
NewFont. CreateFont()
输
出 (3)将新字体选入设备环境
文
pDC->SelectObject()
本
(4)用TextOut()输出
14
显示位图
显 从资源中加载位图
示 (1)声明Cbitmap对象,并从资源中载入位图
位 图
CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP); (2)创建一个兼容的DC
CDC dc;
dc.CreateCompatibleDC(pDC);
(3)将位图选入兼容DC
位置和形象的属性集合
CDC类
CClientDC CWindowDC CPaintDC CMetaFileDC
前一页 休息
4
设备环境
设 备
(1)CWindowDC 和CClientDC CPaintDC区别
CWindowDC提供客户区和非客户区画图的设备环境; 坐标原点在屏幕左上角
CDC常用函数(参见MSDN)
前一页 休息
5
设备环境
设 获取设备环境 备 (1)使用GetDC()函数 环 CDC *CWnd GetDC() 境 int ReleaseDC(CDC * pDC )
(2)直接构造CDC对象 用声明一个CDC类或其派生类对象的方式来获
取设备环境 CClientDC dc(CWnd *)
前一页 休息
使用画笔、画刷
使 用 (2)选入画笔:将该画笔选入到设备环境中 画 CPen * SelectObject(CPen * pPen) 笔 CBrush * SelectObject(CBrush * pBrush) 、 virtual CFont * SelectObject(CFont * pFont) 画 int SelectObject(CRgn * pRgn) 刷 (3)调用绘图函数输出
8
皮肌炎图片——皮肌炎的症状表现
皮肌炎是一种引起皮肤、肌肉 、心、肺、肾等多脏器严重损害 的,全身性疾病,而且不少患者 同时伴有恶性肿瘤。它的1症状表 现如下:
1、早期皮肌炎患者,还往往伴 有全身不适症状,如-全身肌肉酸 痛,软弱无力,上楼梯时感觉两 腿费力;举手梳理头发时,举高 手臂很吃力;抬头转头缓慢而费 力。
Visual C++
第十章 图形设备接口
中国地质大学信息工程学院 林伟华
1
本章主要内容
设备环境 GDI对象 使用画笔 使用画刷 输出文本 映射模式 显示位图
前一页 休息
2
GDI
GDI
GDI(Graphics Device Interface) (1)GDI和Windows 设备驱动程序来支持设 备无关性。
CBrush( COLORREF crColor ); CBrush( int nIndex, COLORREF crColor ); CBrush( CBitmap* pBitmap );
crColor:RGB(255,255,255)颜色
nIndex:画刷阴影线风格
前一页 p休B息itmap:位图画刷
15
显示位图
显 示 位 图
BitBlt():按位图原来的比例显示位图 StretchBlt():可对位图进行放大或压缩 从文件中加载位图
CBitmap bitmap;
HBITMAP hbitmap = (HBITMAP)LoadImage(
NULL,
“AAA” //位图文件名
IMAGE_BITMAP //图象类别
环
CClientDC CPaintDC提供画图的设备环境;坐标原点
境
在客户区左上角
(2) CClientDC 和CPaintDC区别
CPaintDC是响应WM_PAINT消息,用在OnPaint()函数 中;只支持屏幕显示
CClientDC不响应WM_PAINT消息,只担负此时的绘图 工作;支持屏幕显示,也支持打印
DWORD dwltalic, //非零表示倾斜
DWORD dwUnderline, //非零表示下划线
DWORD dwStrikeout, //非零表示中划线
DWORD dwCharset, //字符集
DWORD dwOutputPrecision, //输出精度
DWORD dwClipPrecision, //剪裁精度
前一页 休息
12
逻 映射模式
辑
坐 坐标系统可分为逻辑坐标、设备坐标.
标
窗口:逻辑坐标系上程序员设置的一个区域。
、 设 备 坐
视口:实际输出设备(物理设备坐标系)上程序员设定 的一个区域。 映像模式的设置
SetMapMode(hdc,nMapMode); //设置映像模式 nMapMode=GetMapMode(hdc); //得到映像模式
//设置窗口原点
前一页 休息
13
映射模式
映 程序员直接在一个统一的逻辑坐标系中进行图形的绘制和
射
操作,而不考虑输出坐标系的情况。
模 式
映像模式定义了将逻辑坐标转为设备的度量单位以及设备 的x、y方向。
映像模式 将一个逻辑坐标映像为 坐标系设定
MM_ANISOTROPIC 系统 可选
MM_ISOTROPIC 系统确定 可选
dc.SelectObject(&bitmap);
(4)获取位图信息
BITMAP bmInfo;
bitmap.GetObject(sizeof(bmInfo),&bmInfo);
(5)使用BitBlt()显示位图
pDC->BitBlt(); // 该函数要用到位图bmInfo信息
前一页 休息
前一页 休息
6
GDI
GDI对象
GDI对象提供更丰富的图形操作函数,设备 环境类提供函数进行简单的图形绘制
对 CGdiObject 象 CBitmap
CBrush CPalette CPen CRgn
前一页 休息
7
使用画笔、画刷
使 (1)构建画笔、画刷 用 CPen( );
画 CPen( int nPenStyle, int nWidth, COLORREF crColor ); CPen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount =
标 SetWindowExtEx(HDC hdc,int nHeight,int nWidth,LPSIZE lpSize)
//设置窗口区域
SetViewportExtEx(HDC hdc,int nHeight,int nWidth,LPSIZE lpSize) //设置视口区域
SetWindowOrgEx(HDC hdc,int x,int y, LPPOINT lpPOINT)
笔
0, const DWORD* lpStyle = NULL );
、 nPenStyle:参看课本P146 画 nWidth: >1时,第一个参数中的PS_DASH(虚线)、PS_DOT(点线)、
PS_DASHDOT(点划线)、PS_DASHDOTDOT(双点划线)无效
刷 crColor:RGB(255,255,255)颜色
0,0, //宽度和高度
LR_LOADFROMFILE //从文件加载标志
)
bitmap.Attach(hbitmap);
前一页 休息
16
17
(2)负责系统与用户或绘图程序之间的信 息交换,并控制在输出设备上显示图形或文 字。 (3)应用程序主窗口、菜单、对话框都由 GDI绘制
前一页 休息
ห้องสมุดไป่ตู้
3
设备环境
设 备 环 境
设备环境(Device Context)(有译为设备描述表、 设备上下文)
(1)是绘图属性(字体、颜色等)和方法(各种绘图 函数)的集合
前一页 休息
10
输出文本
(1)声明字体对象
输
CFont NewFont;
出 (2)创建字体 文 CreateFont( int nheight,int nWidth,//高,宽
int nEscapement, //每行文字相以于页底的角
本
int nOrienation, //每个…..
DWORD nWeight , //字体粗细
MM_HIENGLISH 0.001英寸 x向右y向上
MM_HIMETRIC 0.01毫米 x向右y向上
MM_LOENGLISH 0.01英寸 x向右y向上
MM_LOMETRIC 0.1毫米 x向右y向上
MM_TEXT
1个像素 x向右y向下
前一页 M休M息 _TWIPS
1/1440英寸 x向右y向上
DWORD dwQuality,
//输出质量
DWORD dwPitchAndFamily, //字体系列
前一页DW休O息RD lpszFaceName//字体名称} ;
11
输出文本
NewFont. CreateFont()
输
出 (3)将新字体选入设备环境
文
pDC->SelectObject()
本
(4)用TextOut()输出
14
显示位图
显 从资源中加载位图
示 (1)声明Cbitmap对象,并从资源中载入位图
位 图
CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP); (2)创建一个兼容的DC
CDC dc;
dc.CreateCompatibleDC(pDC);
(3)将位图选入兼容DC