收藏 分销(赏)

《MFC系列教程》PPT课件.ppt

上传人:精**** 文档编号:2294435 上传时间:2024-05-26 格式:PPT 页数:39 大小:198.50KB
下载 相关 举报
《MFC系列教程》PPT课件.ppt_第1页
第1页 / 共39页
《MFC系列教程》PPT课件.ppt_第2页
第2页 / 共39页
《MFC系列教程》PPT课件.ppt_第3页
第3页 / 共39页
《MFC系列教程》PPT课件.ppt_第4页
第4页 / 共39页
《MFC系列教程》PPT课件.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、(2)与与MFC图形操作有关图形操作有关 的类及主要函数的类及主要函数 1精选课件ppt .绘图类绘图类1绘图类绘图类CDC(设备环境类(设备环境类,Cobject的子类)的子类)CDC类提供了对设备描述表进行操作的成员函数以及对窗类提供了对设备描述表进行操作的成员函数以及对窗口有关描述表进行操作的成员函数。口有关描述表进行操作的成员函数。用提供的函数对设备描述表进行操作,绘图工具的使用,用提供的函数对设备描述表进行操作,绘图工具的使用,图形界面的选择、颜色及调色板的操作。图形界面的选择、颜色及调色板的操作。取得绘图的属性、映射方式、视口及窗口的操作、坐标转取得绘图的属性、映射方式、视口及窗口

2、的操作、坐标转换等。换等。CDC的子类的子类:2精选课件ppt CDCCPaintDCCClientDCCWindowDCCMetaFileDCCPreviewDCCobject打印预览输出类打印预览输出类响应消息完成客户区绘图响应消息完成客户区绘图设备描述表设备描述表提供一个设备环境提供一个设备环境封装绘图方法封装绘图方法.3精选课件pptCDC的派生类:的派生类:CpaintDC类类一般用在函数一般用在函数OnPaint()内,响应内,响应WM_PAINT的消息。的消息。windows的的消消息息循循环环机机制制一一直直在在采采集集各各种种消消息息,当当接接到到WMPAINT消消息息时时,

3、自自动动调调用用固固定定的的绘绘图图函函数数,使使用用CpaintDC类类对对象象的成员函数,完成客户区绘图。的成员函数,完成客户区绘图。(BeginPaint,EndPaint实现句柄建立与释放实现句柄建立与释放)CClientDC类类窗口客户设备描述表,对窗口客户区的图形访问。窗口客户设备描述表,对窗口客户区的图形访问。(GetDC,ReleaseDC实现句柄建立与释放实现句柄建立与释放)CwindowDC类类提供一个设备环境、以便成员函数在包括非客户区在内的提供一个设备环境、以便成员函数在包括非客户区在内的整个屏幕区的绘图。整个屏幕区的绘图。(GetwindowDC,ReleaseDC建

4、立与释放建立与释放)4精选课件pptCMetaFileDC类类封装封装Windows图元文件中的绘图方法图元文件中的绘图方法.构造对象构造对象,调用调用Create函数函数,绘图绘图:MoveTo,LineTo,Close,返回句柄返回句柄.(CreateEnhanced,CloseEnhanced建立与释放建立与释放)2绘图类的主要差别绘图类的主要差别CwindowDC类与类与CpaintDC和和CClientDC类的区别类的区别CwindowDC可以在非客户(窗口)绘制图形。坐标是全屏幕。可以在非客户(窗口)绘制图形。坐标是全屏幕。CpaintDC和和CClientDC只能在客户区绘制图形

5、。坐标原点是只能在客户区绘制图形。坐标原点是客户区的左上角。客户区的左上角。CpaintDC类与类与CClientDC类的区别类的区别都可在客户内作图,区别是都可在客户内作图,区别是CpaintDC类应用在类应用在OnPaint函数函数中,以响应中,以响应windows的的WM_PAINT消息,自动实现作图。消息,自动实现作图。CClientDC类可以实现实时绘图。类可以实现实时绘图。5精选课件pptCClientDCCWindowDC6精选课件ppt3绘图类的引用方法绘图类的引用方法CDC类类CDC类不能用窗口对象指针初始化对象,类不能用窗口对象指针初始化对象,一般不声明对象直一般不声明对象

6、直接应用接应用。常用于建立内存设备描述对象。常用于建立内存设备描述对象。OnDraw(CDC*pDC)CpaintDC类类CpaintDCdc(this);定义一个定义一个CpaintDC的对象的对象dc,并用当前窗口对象指针,并用当前窗口对象指针this对对对象对象dc进行初始化。进行初始化。CClientDC类类CClientDCdc(this);定定义义一一个个CClientDC的的对对象象dc,并并用用当当前前窗窗口口对对象象指指针针this对对对对象象dc进行初始化。进行初始化。7精选课件pptCwindowDC类类CwindowDCdc(this);定义一个定义一个CwindowD

7、C类的对象类的对象dc,并用当前窗口对象,并用当前窗口对象指针指针this对对dc进行初始化。进行初始化。4.CDC的部分函数的部分函数绘图对象的函数绘图对象的函数SetObject()颜色调色板函数颜色调色板函数SelectPalette()绘图属性函数绘图属性函数SetBkColor()映射函数映射函数SetMapMode()绘制线条函数绘制线条函数LineTo()置笔位置函数置笔位置函数MoveTo()圆狐函数圆狐函数Arc()文本颜色函数文本颜色函数SetTextColor()8精选课件ppt.CView类类类结构类结构CobjectCCmdtargetCWndCViewCview的成

8、员函数的成员函数Cview()创建新窗口时,创建新窗口时,初始化初始化OnDraw()屏幕显示,打印预览屏幕显示,打印预览Getdocument()得到文档指针,调成员函数得到文档指针,调成员函数OnUpdate()视类文档数据修改后调用视类文档数据修改后调用OnPrint()打印和打印预览时调用打印和打印预览时调用为消息服务为消息服务类类窗口处理类窗口处理类9精选课件pptvoidCMyView:OnDraw(CDC*pDC)CClientDCdc(this);dc.TextOut(100,100,“成都理工大学图形输出成都理工大学图形输出“);.绘图类的主要操作功能绘图类的主要操作功能1坐

9、标映射方式坐标映射方式Windows映像方式映像方式指指Windows下的逻辑坐标,实际的物理屏幕是由像素组成下的逻辑坐标,实际的物理屏幕是由像素组成的,的,640480表示物理屏幕的高、宽像素目。表示物理屏幕的高、宽像素目。10精选课件ppt映像方式映像方式映像识别码映像识别码逻辑单位逻辑单位x和和y正向正向MM_TEXT1Pixels(象素象素)右下右下MM_LOMETRIC20.1mm右上右上MM_HIMETRIC 30.01mm右上右上MM_LONGLISH 40.1inch右上右上MM_HIENGLISH50.01inch右上右上MM_TWIPS61/1440inch右上右上MM_I

10、SOTROPIC7Variable(x=y)变化变化MM_ANISOTROPIC8Variable(x y)变化变化坐标原点都处于左上角,最后一个映像方式的逻辑单位坐标原点都处于左上角,最后一个映像方式的逻辑单位x与与y不同。不同。11精选课件ppt设置映像方式的方法设置映像方式的方法调用调用CDC类的函数类的函数SetMapMode完成。完成。CDrawView:OnDraw(CDC*PDC)PDCSetMapMode(n);其中其中n是映像识别码。是映像识别码。逻辑坐标与设备坐标的转换逻辑坐标与设备坐标的转换DPtoLP(LPPOINTlpPoints);设备坐标转逻辑坐标。设备坐标转逻辑

11、坐标。LPtoDP(LPPOINTlpPoints);逻辑坐标转设备坐标。逻辑坐标转设备坐标。例如坐标转换函数的应用例如坐标转换函数的应用Cpointpoint;定义一个点定义一个点point.x=100;赋值赋值point.y=100;PDCDPtoLP(&point);将点从设备坐标转逻辑坐标。将点从设备坐标转逻辑坐标。12精选课件ppt2窗口视口及有关函数窗口视口及有关函数窗口视口:窗口视口:Windows绘图时,并不是把图形直接绘制到屏幕上,而是绘图时,并不是把图形直接绘制到屏幕上,而是以各种映像方式下的逻辑坐标系将图形绘制到虚拟窗口中,以各种映像方式下的逻辑坐标系将图形绘制到虚拟窗口

12、中,然后将这个图形映像到一个视图中。然后将这个图形映像到一个视图中。窗口:窗口:虚拟的屏幕虚拟的屏幕视口:视口:实际的视图实际的视图13精选课件ppt窗口和视口函数:窗口和视口函数:SetWindowOrg功能:功能:设置一个与设备环境有关的窗口原点。设置一个与设备环境有关的窗口原点。CpointSetWindowOrg(intx,inty);CpointSetWindowOrg(POINTpoint);x,y是新的窗口原点,是新的窗口原点,POINT也确定窗口原点。也确定窗口原点。函数返回一个前窗口的原点。函数返回一个前窗口的原点。SetViewportOrg功能:功能:设置一个与设备环境有

13、关的视口原点。设置一个与设备环境有关的视口原点。CpointSetViewportOrg(intx,inty);CpointSetViewportOrg(POINTpoint);x,y是新视口原点,是新视口原点,POINT也确定视口原点。也确定视口原点。函数返回一个前视口的原点。函数返回一个前视口的原点。14精选课件pptSetWindowExt功能:设置与设备环境有关的窗口在功能:设置与设备环境有关的窗口在x,y方向的幅度方向的幅度(范围范围)。virtualCSizeSetWindowExt(intcx,intcy);virtualCSizeSetWindowExt(SIZEsize);x

14、,y方向的幅度方向的幅度cx,cy,或或size。函数返回前幅度值。函数返回前幅度值。SetViewportExt功能:设置与设备环境有关的视口在功能:设置与设备环境有关的视口在x,y方向的幅度。方向的幅度。VirtualCSizeSetViewExt(intcx,intcy);VirtualCSizeSetViewExt(SIZEsize);cx,cy是是x与与y方向的幅度,或方向的幅度,或size返回视口前幅度。返回视口前幅度。15精选课件ppt设置窗口、视口原点坐标:设置窗口、视口原点坐标:PDCSetWindowOrg(a1,b1);PDCSetViewprotOrg(a2,b2);窗

15、窗口口逻逻辑辑坐坐标标a1,b1映映射射到到视视口口坐坐标标a2,b2,得得同同一一个个点点的的逻逻辑辑坐坐标标与设备坐标的对应关系。设窗口坐标与设备坐标的对应关系。设窗口坐标x1,y1,设备坐标,设备坐标x2,y2,据到原点距离相等,可得据到原点距离相等,可得(y轴同向时轴同向时):(x1-a1)=(x2-a2)*n(y1-b1)=(y2-b2)*n其中其中n是幅度比值。是幅度比值。16精选课件ppt所以当窗口、视口的原点坐标与所以当窗口、视口的原点坐标与n都已知时,可得窗口坐标都已知时,可得窗口坐标与视口坐标对应关系。与视口坐标对应关系。PDCSetMapMode(MM_ANISOTROP

16、IC);PDCSetWindowExt(100,100);其中其中x1,y1是幅度是幅度PDCSetViewportExt(500,300);其中其中x2,y2是幅度是幅度设窗口、视口原点(设窗口、视口原点(0,0),x2:x1=5,y2:y1=3,在窗口画一个圆心在在窗口画一个圆心在(50,50),r=20的圆,映像到视口是一个椭圆。的圆,映像到视口是一个椭圆。7x=y17精选课件ppt(250,150)(50,50)20100601:51:320窗口窗口视口视口18精选课件pptvoidCMYView:OnDraw(CDC*pDC)pDC-SetMapMode(2);0.1mm/(象素)(

17、象素)pDC-SetViewportOrg(Cpoint(100,100);pDC-Rectangle(Crect(0,0,200,200);(0,0)xyyx(0,0)(100,100)(200,200)(300,300)2cm19精选课件ppt.常用绘图函数常用绘图函数1置背景色置背景色默认时背景色是白色。默认时背景色是白色。VirtualCOLORREFSetBkColor(COLORREFcrcolor);crcolor是新的背景色是新的背景色SetBkColor(hdc,RGB(0,255,0);2置背景模式置背景模式intSetBkMode(intnBkMode);PDCSetBk

18、Mode(TRANSPARENT);不改变背景色,不改变背景色,OPAQUE时用当前背景色。时用当前背景色。在在SetBkcolor函数后用。函数后用。20精选课件ppt3取得当前背景色取得当前背景色COLORREFGetBkColor();COLORREFcolor=PDCGetBkColor();取得当前背景色存取得当前背景色存color中。中。4取得当前背景模式取得当前背景模式intGetBkMode();intnBkMode=PDCGetBkMode();5置像素置像素COLORREFSetPixel(intx,inty,COLORREFcrcolor);COLORREFSetPixe

19、l(POINTpoint,COLORREFcrcolor);x,y,或或point是像素点坐标,是像素点坐标,crcolor颜色。颜色。21精选课件ppt6置当前位置置当前位置置画线的起始位置。置画线的起始位置。Cpoint MoveTo(intx,inty);Cpoint MoveTo(POINTpoint);7画简单直线画简单直线BOOLLineTo(intx,inty);BOOLLineTo(POINTpoint);(ok非非0)用当前选择的画笔从当前位置到参数用当前选择的画笔从当前位置到参数x,y画一条直线。画一条直线。8画弧画弧BOOLArc(intx1,inty1,intx2,in

20、ty2,intx3,inty3,intx4,inty4);BOOLArcTo(intx1,inty1,intx2,inty2,intx3,inty3,intx4,inty4);(改变当前位置改变当前位置)以矩形定义弧的大小,边界矩形隐藏。以矩形定义弧的大小,边界矩形隐藏。22精选课件ppt9矩形矩形BOOLRectangle(intx1,inty1,intx2,inty2);左上角与右下角坐标。左上角与右下角坐标。10圆角矩形圆角矩形BOOLRoundRect(intx1,inty1,intx2,inty2,intx3,inty3);其中其中x3,y3是圆角矩形的宽度与高度。是圆角矩形的宽度与

21、高度。11椭圆和圆椭圆和圆BOOLEllipse(intx1,inty1,intx2,inty2);由坐标确定椭圆与圆,并用当前画刷充填。由坐标确定椭圆与圆,并用当前画刷充填。23精选课件ppt12饼图饼图BOOLPic(intx1,inty1,intx2,inty2,intx3,inty3,intx4,inty4);不充填。不充填。13多边形多边形BOOLpolygon(LPPOINTlppoints,intnCount);数组数组顶点数顶点数14其它绘图函数其它绘图函数floodFill用当前画刷填充一个区域用当前画刷填充一个区域DrawIcon在设备文本对象指定的设备上画一个图标。在设备

22、文本对象指定的设备上画一个图标。FillRect用指定画刷填充一个矩形区域但不画边线用指定画刷填充一个矩形区域但不画边线FrameRect用指定画刷画一个矩形边框,不充填用指定画刷画一个矩形边框,不充填InverRect对矩形区反转色。对矩形区反转色。24精选课件ppt.画笔与画刷画笔与画刷(GDI对象中的绘图)对象中的绘图)CGdiObjectCBitmapCBrushCFontCPaletteCPenCRgn25精选课件ppt1.画笔的使用画笔的使用构造一支画笔构造一支画笔Cpen();Cpen(intnPenStyle,intnWidth,COLORREFcrColor);风格风格宽度宽

23、度颜色颜色Cpenpen1(PS_SOLID,10,RGB(255,0,0);选入画笔选入画笔Cpen*selectObject(Cpen*pPen);Cpen*poldPen=pDc-Seclectobject(&pen1);函数原形函数原形26精选课件ppt2.画刷的使用画刷的使用构造一支画刷:构造一支画刷:CBrush();CBrush(COLORREFcrColor);CBrush(intnIndex,COLORREFcrColor);风格风格HS_VERTICAL垂直阴影线垂直阴影线HS_HORIZONTAL水平阴影线水平阴影线选入画刷:选入画刷:CBrush*Brush;Brush

24、=NewBrush(RGB(255,0,0);CBrush*poldBrush=pDc-SelectObject(Brush);27精选课件ppt3.在绘图过程中使用画笔对象在绘图过程中使用画笔对象 voidCmyTestView:OnDraw(CDC*PDC)CmyTestDoc*PDoc=GetDocument();/得到文档指针获得数据得到文档指针获得数据ASSERT_VALID(PDoc););/todo:adddrawcodefornativedatahereintposition=0,x;for(x=1;xSelectObject(&pen);constdoublePI=3.14159;inti,cx=10,x2=50,y2,m=35,k;doublef,dt,t,q,a100;k=m/2;f=30.0;dt=0.004;5.几个图形函数段几个图形函数段32精选课件pptfor(i=1;iMoveTo(x2,150);for(i=1;iLineTo(x2,y2);pdc-DeleteDC();33精选课件ppt34精选课件ppt(2).多色直线多色直线35精选课件ppt36精选课件ppt(3).矩形与画刷矩形与画刷37精选课件ppt38精选课件ppt(4).统计曲线统计曲线39精选课件ppt

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服