第五章 图形处理.ppt
《第五章 图形处理.ppt》由会员分享,可在线阅读,更多相关《第五章 图形处理.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章 图形程序处理1本章内容l图形设备接口(图形设备接口(GDI)l画笔和画刷画笔和画刷l文本和字体文本和字体l位图、图标和光标位图、图标和光标2一、图形设备接口(一、图形设备接口(GDI)lGDI是Windows提供的一个支持图形编程处理的抽象接口,它内含各种绘图工具,程序员通过使用这些抽象工具,避免了直接与各式各样的设备硬件打交道,实现了编程中的“设备无关性”。1、GDI概述概述lGDI在图形处理、输出和显示方面是一种全能的编程接口lGDI功能被封装于Gdi32.dll中,包含大量图形处理函数。3视窗APP绘图的一般过程:2、设备环境、设备环境(Device Context,简称简称DC
2、)l程序员要使用GDI,必须先获取一个DC,实则一个设备环境的句柄(HDC),然后由句柄去调用相关的图形绘制函数或设置DC的属性。应应用用程程序序设设备备环环境境GDI设备设备驱驱动动程程序序图形图形输输出出设设备备4l为了满足不同的DC应用要求,MFC将DC封装成几种不同的类,每一种类都封装了相应的设备环境句柄。CDC类CPaintDC类CClientDC类CWindowDC类CMetaFileDC类53、GDI坐标系和映射模式坐标系和映射模式(1)GDI坐标系坐标系l逻辑坐标系是面向DC的坐标系。l设备坐标系是面向显示或打印输出设备的坐标系设备坐标系细分为3种:屏幕坐标系原点在屏幕左上角。
3、可控制窗口在屏幕上的位置。窗口坐标系原点在当前窗口的左上角。很少使用。客户区坐标系原点在客户区左上角,很常用。CDC类提供了两种坐标转换函数:DPtoLP()、LPtoDP()。6l鼠标使用设备坐标系,CDC绘图函数使用逻辑坐标系l用鼠标支配所绘图形应当实施坐标转换 在鼠标左键按下和移动函数中,加入语句:CClientDC dc(this);OnPrepareDC(&dc);/调整DC的属性dc.DPtoLP(&point);(2)GDI映射模式(映射模式(8种)种)8种映射模式:MM_TEXT、MM_LOMETRIC、MM_HIMETRIC、MM_LOENGLISH、MM_HIENGLISH
4、、MM_TWIPS、MM_ISOTROPIC、MM_ANISOTROPIC,逻辑单位分别是:1像素、0.1mm、0.01mm、0.01吋、0.001吋、1/1440吋、系统确定。前6种属于“固定比例”的映射方式,不可改变其固有的量纲。74、绘图颜色的设置、绘图颜色的设置lGDI用COLORREF宏存放颜色,它实则一个32位的整型数据:高位字节为0,其余3个字节分别对应于RGB三原色值,每一原色的取值范围均为0255。lCOLORREF宏定义宏定义:RGB(byRed,byGreen,byBlue)COLORREF类型的变量,可以应用于多种绘图函数中,如CDC:SetBkColor()CDC:S
5、etTextColor()8二、画笔和画刷二、画笔和画刷Pen和Brush是GDI中最重要的绘图工具1、GDI对象对象GDI提供了一系列抽象的绘图工具。MFC对GDI对象作了封装,形成了在CGdiObject基类基础上的各种派生类。CPenCBrushCFontCBitmapCPaletteCRgn9l使用绘图工具的步骤:创建GDI对象选择GDI对象使用对象绘图释放GDI对象l通过设置绘图模式,也可以修正绘图的效果,函数为:int SetROP2(int nDrawMode);/函数返回旧模式参数nDrawMode的取值有:R2_BLACK:表示像素为黑色;R2_WHITE:表示像素为白色;R
6、2_NOP:表示像素为无色透明;R2_NOT:表示像素为背景反色;R2_COPYPEN:表示像素为画笔颜色;R2_NOTCOPYPEN:表示像素为画笔颜色的反色;102、使用画笔、使用画笔GDI的画笔工具用于绘制点、线、多边形、矩形、椭圆等几何图形。在DC中使用自定义画笔的三大步骤:创建选用还原。(1)创建画笔创建画笔方法1:CPen pen(PS_DASH,1,RGB(255,0,0);方法2:CPen pen;pen.CreatePen(PS_DASH,1,RGB(255,0,0);11(2)选用画笔选用画笔CPen*pOldPen;/本声明语句可与pen的声明合并 pOldPen=pDC
7、-SelectObject(&pen);(3)还原画笔还原画笔pDC-SelectObject(pOldPen);/恢复原先画笔pen.DeleteObject();/删除自定义GDI画笔,清除内存编程实例:编程实例:创建UsePen程序,选用不同风格和属性绘图。1213CPen*pOldPen,pen;/同时声明两个画笔对象int nPenStyle=PS_SOLID,PS_DOT,PS_DASH,PS_DASHDOT,PS_DASHDOTDOT,PS_NULL,PS_INSIDEFRAME;char*strStyle=SOLID,DOT,DASH,DASHDOT,;pDC-TextOut(
8、60,10,用不同样式的画笔绘图);/输出风格标题for(int i=0;iSelectObject(&pen);pDC-TextOut(10,30+20*i,strStylei);/输出风格字串列pDC-MoveTo(108,40+20*i);pDC-LineTo(208,40+20*i);pDC-SelectObject(pOldPen);/恢复原先画笔pen.DeleteObject();/删除自定义GDI画笔,清除内存/“笔宽”和“笔色“的输出与绘图方式参照上述语句实现/char*strWidth=1,2,3,4,5,6,7,;/char*strColor=红,绿,蓝,黄,紫,青,灰;
9、COLORREF penColor=RGB(255,0,0),RGB(0,255,0),);143、使用画刷、使用画刷(1)创建画刷创建画刷画刷有3种基本类型:纯色、阴影、图案画刷。l创建方式创建方式1:/用构造函数CBrush brush1(RGB(255,0,0);/纯色画刷CBrush brush2(HS_CROSS,RGB(255,0,0);/阴影画刷CBrush brush3(&bmp);/图案画刷,位图要先入内存其中,阴影画刷有6种样式,分别是HS_CROSS,HS_VERTICAL,HS_DIAGCROSS,HS_HORIZONAL,HS_BDIAGONAL,HS_FDIAGON
10、AL。分别表示“十字网”、“竖线纹”、“交叉网”、“水平纹”、“反斜纹”、“正斜纹”。l创建方式创建方式2:/用画刷的创建函数Solid,Hatch,PatternCBrush brush;brush.CreateSolidBrush(RGB(255,0,0);15(2)使用画刷使用画刷编程实例:编程实例:创建对话框应用程序,并重设其背景颜色l先创建UseBrh的基于对话框的应用程序,并为其添加一个CBrush类型的成员变量m_bkColor.l再在对话框的初始化函数中添加创建画刷的语句:m_bkColor.CreateSolidBrush(RGB(0,0,255);l最后用类向导添加WM_C
11、TLCOLOR消息函数,注释掉原语句,然后添加 return m_bkColor;l编译并运行程序。16174、几何图形的绘制函数、几何图形的绘制函数SetPixel()用指定颜色用指定颜色画画“像素像素”点点,返回,返回RGB值值MoveTo()移笔移笔至新坐标,返回旧坐标至新坐标,返回旧坐标LineTo()画直线画直线,返回非,返回非0值值Polyline()依据多点依据多点画折线画折线Polygon()依据多点依据多点画多边形画多边形PolyBezier()依据多点依据多点画贝兹尔曲线画贝兹尔曲线Rectangle()依据两点依据两点画矩形画矩形RoundRect()依据两点圆角及圆角半
12、径依据两点圆角及圆角半径画圆角矩形画圆角矩形Ellipse()依据矩形依据矩形画内切椭圆画内切椭圆或或圆圆Arc(),ArcTo()逆时针逆时针画弧画弧,画弧至终点画弧至终点还有:Pie()画扇形;Chord()画弦;DrawIcon()画图标18画图函数的用法:画图函数的用法:SetPixel()直接用直接用坐标点坐标点;MoveTo()与与LineTo()起止点起止点配合使用;配合使用;Polyline()、Polygon()、PolyBezier()先需要定先需要定义义多个坐标点多个坐标点,然后将其作为首要参数,次要参数为,然后将其作为首要参数,次要参数为坐坐标点数目标点数目。Recta
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五章 图形处理 第五 图形 处理
限制150内