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

上传人:san****019 文档编号:7349200 上传时间:2020-03-20 格式:PPT 页数:39 大小:229.10KB
返回 下载 相关 举报
《MFC系列教程》PPT课件.ppt_第1页
第1页 / 共39页
《MFC系列教程》PPT课件.ppt_第2页
第2页 / 共39页
《MFC系列教程》PPT课件.ppt_第3页
第3页 / 共39页
点击查看更多>>
资源描述
1 2 与MFC图形操作有关的类及主要函数 2 绘图类1 绘图类CDC 设备环境类 Cobject的子类 CDC类提供了对设备描述表进行操作的成员函数以及对窗口有关描述表进行操作的成员函数 用提供的函数对设备描述表进行操作 绘图工具的使用 图形界面的选择 颜色及调色板的操作 取得绘图的属性 映射方式 视口及窗口的操作 坐标转换等 CDC的子类 3 CDC CPaintDC CClientDC CWindowDC CMetaFileDC CPreviewDC Cobject 打印预览输出类 响应消息完成客户区绘图 设备描述表 提供一个设备环境 封装绘图方法 4 CDC的派生类 CpaintDC类一般用在函数OnPaint 内 响应WM PAINT的消息 windows的消息循环机制一直在采集各种消息 当接到WMPAINT消息时 自动调用固定的绘图函数 使用CpaintDC类对象的成员函数 完成客户区绘图 BeginPaint EndPaint实现句柄建立与释放 CClientDC类窗口客户设备描述表 对窗口客户区的图形访问 GetDC ReleaseDC实现句柄建立与释放 CwindowDC类提供一个设备环境 以便成员函数在包括非客户区在内的整个屏幕区的绘图 GetwindowDC ReleaseDC建立与释放 5 CMetaFileDC类封装Windows图元文件中的绘图方法 构造对象 调用Create函数 绘图 MoveTo LineTo Close 返回句柄 CreateEnhanced CloseEnhanced建立与释放 2 绘图类的主要差别 CwindowDC类与CpaintDC和CClientDC类的区别CwindowDC可以在非客户 窗口 绘制图形 坐标是全屏幕 CpaintDC和CClientDC只能在客户区绘制图形 坐标原点是客户区的左上角 CpaintDC类与CClientDC类的区别都可在客户内作图 区别是CpaintDC类应用在OnPaint函数中 以响应windows的WM PAINT消息 自动实现作图 CClientDC类可以实现实时绘图 6 CClientDC CWindowDC 7 3 绘图类的引用方法 CDC类CDC类不能用窗口对象指针初始化对象 一般不声明对象直接应用 常用于建立内存设备描述对象 OnDraw CDC pDC CpaintDC类CpaintDCdc this 定义一个CpaintDC的对象dc 并用当前窗口对象指针this对对象dc进行初始化 CClientDC类CClientDCdc this 定义一个CClientDC的对象dc 并用当前窗口对象指针this对对象dc进行初始化 8 CwindowDC类CwindowDCdc this 定义一个CwindowDC类的对象dc 并用当前窗口对象指针this对dc进行初始化 4 CDC的部分函数绘图对象的函数SetObject 颜色调色板函数SelectPalette 绘图属性函数SetBkColor 映射函数SetMapMode 绘制线条函数LineTo 置笔位置函数MoveTo 圆狐函数Arc 文本颜色函数SetTextColor 9 CView类 类结构CobjectCCmdtargetCWndCView Cview的成员函数Cview 创建新窗口时 初始化OnDraw 屏幕显示 打印预览Getdocument 得到文档指针 调成员函数OnUpdate 视类文档数据修改后调用OnPrint 打印和打印预览时调用 为消息服务类 窗口处理类 10 voidCMyView OnDraw CDC pDC CClientDCdc this dc TextOut 100 100 成都理工大学图形输出 绘图类的主要操作功能1 坐标映射方式 Windows映像方式指Windows下的逻辑坐标 实际的物理屏幕是由像素组成的 640 480 表示物理屏幕的高 宽像素目 11 映像方式映像识别码逻辑单位x和y正向MM TEXT1Pixels 象素 右下MM LOMETRIC20 1mm右上MM HIMETRIC30 01mm右上MM LONGLISH40 1inch右上MM HIENGLISH50 01inch右上MM TWIPS61 1440inch右上MM ISOTROPIC7Variable x y 变化MM ANISOTROPIC8Variable x y 变化坐标原点都处于左上角 最后一个映像方式的逻辑单位x与y不同 12 设置映像方式的方法调用CDC类的函数SetMapMode完成 CDrawView OnDraw CDC PDC PDC SetMapMode n 其中n是映像识别码 逻辑坐标与设备坐标的转换DPtoLP LPPOINTlpPoints 设备坐标转逻辑坐标 LPtoDP LPPOINTlpPoints 逻辑坐标转设备坐标 例如坐标转换函数的应用Cpointpoint 定义一个点point x 100 赋值point y 100 PDC DPtoLP 将点从设备坐标转逻辑坐标 13 2 窗口视口及有关函数 窗口视口 Windows绘图时 并不是把图形直接绘制到屏幕上 而是以各种映像方式下的逻辑坐标系将图形绘制到虚拟窗口中 然后将这个图形映像到一个视图中 窗口 虚拟的屏幕视口 实际的视图 14 窗口和视口函数 SetWindowOrg功能 设置一个与设备环境有关的窗口原点 CpointSetWindowOrg intx inty CpointSetWindowOrg POINTpoint x y是新的窗口原点 POINT也确定窗口原点 函数返回一个前窗口的原点 SetViewportOrg功能 设置一个与设备环境有关的视口原点 CpointSetViewportOrg intx inty CpointSetViewportOrg POINTpoint x y是新视口原点 POINT也确定视口原点 函数返回一个前视口的原点 15 SetWindowExt功能 设置与设备环境有关的窗口在x y方向的幅度 范围 virtualCSizeSetWindowExt intcx intcy virtualCSizeSetWindowExt SIZEsize x y方向的幅度cx cy 或size 函数返回前幅度值 SetViewportExt功能 设置与设备环境有关的视口在x y方向的幅度 VirtualCSizeSetViewExt intcx intcy VirtualCSizeSetViewExt SIZEsize cx cy是x与y方向的幅度 或size返回视口前幅度 16 设置窗口 视口原点坐标 PDC SetWindowOrg a1 b1 PDC SetViewprotOrg a2 b2 窗口逻辑坐标a1 b1映射到视口坐标a2 b2 得同一个点的逻辑坐标与设备坐标的对应关系 设窗口坐标x1 y1 设备坐标x2 y2 据到原点距离相等 可得 y轴同向时 x1 a1 x2 a2 n y1 b1 y2 b2 n其中n是幅度比值 17 所以当窗口 视口的原点坐标与n都已知时 可得窗口坐标与视口坐标对应关系 PDC SetMapMode MM ANISOTROPIC PDC SetWindowExt 100 100 其中x1 y1是幅度PDC SetViewportExt 500 300 其中x2 y2是幅度设窗口 视口原点 0 0 x2 x1 5 y2 y1 3 在窗口画一个圆心在 50 50 r 20的圆 映像到视口是一个椭圆 7x y 18 250 150 50 50 20 100 60 1 5 1 3 20 窗口 视口 19 voidCMYView OnDraw CDC pDC pDC SetMapMode 2 0 1mm 象素 pDC SetViewportOrg Cpoint 100 100 pDC Rectangle Crect 0 0 200 200 0 0 x y y x 0 0 100 100 200 200 300 300 2cm 20 常用绘图函数1 置背景色默认时背景色是白色 VirtualCOLORREFSetBkColor COLORREFcrcolor crcolor是新的背景色SetBkColor hdc RGB 0 255 0 2 置背景模式intSetBkMode intnBkMode PDC SetBkMode TRANSPARENT 不改变背景色 OPAQUE时用当前背景色 在SetBkcolor函数后用 21 3 取得当前背景色COLORREFGetBkColor COLORREFcolor PDC GetBkColor 取得当前背景色存color中 4 取得当前背景模式intGetBkMode intnBkMode PDC GetBkMode 5 置像素COLORREFSetPixel intx inty COLORREFcrcolor COLORREFSetPixel POINTpoint COLORREFcrcolor x y 或point是像素点坐标 crcolor颜色 22 6 置当前位置置画线的起始位置 CpointMoveTo intx inty CpointMoveTo POINTpoint 7 画简单直线BOOLLineTo intx inty BOOLLineTo POINTpoint ok非0 用当前选择的画笔从当前位置到参数x y画一条直线 8 画弧BOOLArc intx1 inty1 intx2 inty2 intx3 inty3 intx4 inty4 BOOLArcTo intx1 inty1 intx2 inty2 intx3 inty3 intx4 inty4 改变当前位置 以矩形定义弧的大小 边界矩形隐藏 23 9 矩形BOOLRectangle intx1 inty1 intx2 inty2 左上角与右下角坐标 10 圆角矩形BOOLRoundRect intx1 inty1 intx2 inty2 intx3 inty3 其中x3 y3是圆角矩形的宽度与高度 11 椭圆和圆BOOLEllipse intx1 inty1 intx2 inty2 由坐标确定椭圆与圆 并用当前画刷充填 24 12 饼图BOOLPic intx1 inty1 intx2 inty2 intx3 inty3 intx4 inty4 不充填 13 多边形BOOLpolygon LPPOINTlppoints intnCount 数组顶点数14 其它绘图函数floodFill用当前画刷填充一个区域DrawIcon在设备文本对象指定的设备上画一个图标 FillRect用指定画刷填充一个矩形区域但不画边线FrameRect用指定画刷画一个矩形边框 不充填InverRect对矩形区反转色 25 画笔与画刷 GDI对象中的绘图 CGdiObject CBitmap CBrush CFont CPalette CPen CRgn 26 1 画笔的使用构造一支画笔Cpen Cpen intnPenStyle intnWidth COLORREFcrColor 风格宽度颜色Cpenpen1 PS SOLID 10 RGB 255 0 0 选入画笔Cpen selectObject Cpen pPen Cpen poldPen pDc Seclectobject 函数原形 27 2 画刷的使用构造一支画刷 CBrush CBrush COLORREFcrColor CBrush intnIndex COLORREFcrColor 风格HS VERTICAL垂直阴影线HS HORIZONTAL水平阴影线选入画刷 CBrush Brush Brush NewBrush RGB 255 0 0 CBrush poldBrush pDc SelectObject Brush 28 3 在绘图过程中使用画笔对象voidCmyTestView OnDraw CDC PDC CmyTestDoc PDoc GetDocument 得到文档指针获得数据ASSERT VALID PDoc todo adddrawcodefornativedatahereintposition 0 x for x 1 x 11 x CPenPen PS SOLID x 2 1 RGB 0 255 0 CPen oldPen PDC SelectObject 29 30 4 在绘图过程中使用画刷对象 31 32 1 子波voidCMyView OnCurve TODO AddyourcommandhandlercodehereCClientDC pdc newCClientDC this Cpenpen pen CreatePen PS SOLID 5 RGB 250 0 0 CPen oldpen CPen pdc SelectObject 5 几个图形函数段 33 for i 1 iMoveTo x2 150 for i 1 iLineTo x2 y2 pdc DeleteDC 34 35 2 多色直线 36 37 3 矩形与画刷 38 39 4 统计曲线
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!