VC中MFC绘图详细教程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
休息 14
前一页
休息
字体对象 CFont NewFont; (2)创建字体
CreateFont( int nheight,int nWidth,//高,宽 int nEscapement, //每行文字相以于页底的角 int nOrienation, //每个….. DWORD nWeight , //字体粗细 DWORD dwltalic, //非零表示倾斜 DWORD dwUnderline, //非零表示下划线 DWORD dwStrikeout, //非零表示中划线 DWORD dwCharset, //字符集 DWORD dwOutputPrecision, //输出精度 DWORD dwClipPrecision, //剪裁精度 DWORD dwQuality, //输出质量 DWORD dwPitchAndFamily, //字体系列 lpszFaceName//字体名称} ; 前一页 DWORD 休息
4
休息
设备环境
设 备 环 境




获取设备环境 (1)使用GetDC()函数 CDC *CWnd GetDC() int ReleaseDC(CDC * pDC ) (2)直接构造CDC对象 用声明一个CDC类或其派生类对象的方式来 获取设备环境 CClientDC dc(CWnd *)
前一页
休息
3
设备环境

设 备 环 境

前一页
(1)CWindowDC 和CClientDC CPaintDC区别 CWindowDC提供客户区和非客户区画图的设备环 境;坐标原点在屏幕左上角 CClientDC CPaintDC提供画图的设备环境;坐标原 点在客户区左上角 (2) CClientDC 和CPaintDC区别 CPaintDC是响应WM_PAINT消息,用在OnPaint() 函数中;只支持屏幕显示 CClientDC不响应WM_PAINT消息,只担负此时的 绘图工作;支持屏幕显示,也支持打印 CDC常用函数(参见MSDN)

前一页
crColor:RGB(255,255,255)颜色 nIndex:画刷阴影线风格 休息 pBitmap :位图画刷
7
使用画笔、画刷
使 用 画 笔 、 画 刷




(2)选入画笔:将该画笔选入到设备环境中 CPen * SelectObject(CPen * pPen) CBrush * SelectObject(CBrush * pBrush) virtual CFont * SelectObject(CFont * pFont) int SelectObject(CRgn * pRgn) (3)调用绘图函数输出
12
显示位图
显 示 位 图




前一页
从资源中加载位图 (1)声明Cbitmap对象,并从资源中载入位图 CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP); (2)创建一个兼容的DC CDC dc; dc.CreateCompatibleDC(pDC); (3)将位图选入兼容DC dc.SelectObject(&bitmap); (4)获取位图信息 BITMAP bmInfo; bitmap.GetObject(sizeof(bmInfo),&bmInfo); (5)使用BitBlt()显示位图 pDC->BitBlt(); // 该函数要用到位图bmInfo信息
休息 13
显示位图
显 示 位 图
BitBlt():按位图原来的比例显示位图 StretchBlt():可对位图进行放大或压缩 从文件中加载位图


前一页
CBitmap bitmap; HBITMAP hbitmap = (HBITMAP)LoadImage( NULL, “AAA” //位图文件名 IMAGE_BITMAP //图象类别 0,0, //宽度和高度 LR_LOADFROMFILE //从文件加载标志 ) bitmap.Attach(hbitmap);

前一页
SetMapMode(hdc,nMapMode); //设置映像模式 nMapMode=GetMapMode(hdc); //得到映像模式 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) //设置窗口原点
9
输出文本
NewFont. CreateFont()
输 出 文 本
(3)将新字体选入设备环境 pDC->SelectObject() (4)用TextOut()输出

前一页
休息
10
逻 辑 坐 标 、 设 备 坐 标
映射模式
坐标系统可分为逻辑坐标、设备坐标. 窗口:逻辑坐标系上程序员设置的一个区域。 视口:实际输出设备(物理设备坐标系)上程序员设 定的一个区域。 映像模式的设置

nPenStyle:参看课本P146 nWidth: >1时,第一个参数中的PS_DASH(虚线)、PS_DOT(点线)、 PS_DASHDOT(点划线)、PS_DASHDOTDOT(双点划线)无效 crColor:RGB(255,255,255)颜色

CBrush( COLORREF crColor ); CBrush( int nIndex, COLORREF crColor ); CBrush( CBitmap* pBitmap );
休息
前一页
5
GDI对象


对 象


GDI对象提供更丰富的图形操作函数,设备 环境类提供函数进行简单的图形绘制 CGdiObject CBitmap CBrush CPalette CPen CRgn
休息
GDI
前一页
6
使用画笔、画刷
使 用 画 笔 、 画 刷
(1)构建画笔、画刷 CPen( ); CPen( int nPenStyle, int nWidth, COLORREF crColor ); CPen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpStyle = NULL );
休息 11
映射模式
映 射 模 式
程序员直接在一个统一的逻辑坐标系中进行图形的绘制和 操作,而不考虑输出坐标系的情况。 映像模式定义了将逻辑坐标转为设备的度量单位以及设备 的x、y方向。 映像模式 将一个逻辑坐标映像为 坐标系设定 MM_ANISOTROPIC 系统 可选 MM_ISOTROPIC 系统确定 可选 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向下 MM_TWIPS 1/1440英寸 x向右y向上 前一页 休息
GDI
前一页
休息
2
设备环境
设 备 环 境
设备环境(Device Context)(有译为设备描述 表、设备上下文) (1)是绘图属性(字体、颜色等)和方法(各种绘图 函数)的集合 (2)是一个用来确定或改变任何设备的GDI输出 位置和形象的属性集合 CDC类


CClientDC CWindowDC CPaintDC CMetaFileDC
本章主要内容


前一页 休息
设备环境
GDI对象
使用画笔
使用画刷
输出文本
映射模式 显示位图
1
GDI

GDI(Graphics Device Interface) (1)GDI和Windows 设备驱动程序来支持 设备无关性。 (2)负责系统与用户或绘图程序之间的信 息交换,并控制在输出设备上显示图形或文 字。 (3)应用程序主窗口、菜单、对话框都由 GDI绘制
相关文档
最新文档