



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
映射模式含义MM_TEXT每个逻辑单位等于一个设备像素,x向右为正,y向下为正MM_HIENGLISH每个逻辑单位为0.001英寸,x向右为正,y向上为正MM_LOENGLISH每个逻辑单位为0.01英寸,x向右为正,y向上为正MM_HIMETRIC每个逻辑单位为0.01毫米,x向右为正,y向上为正MM_LOMETRIC每个逻辑单位为0.1毫米,x向右为正,y向上为正MM_TWIPS每个逻辑单位为一个点1/20(一个点是1/72英寸),x向右为正,y向上为正MM_ANISOTROPICx和y可变比例MM_ISOTROPICx和y等比例CDC:SetMapMode(int nMapMode)来设置相应的映射模式。例如,若将映射模式设置为MM_LOMETRIC,那么不管在什么设备中调用上述语句,都将显示出20毫米20毫米的方块。需要说明的是,在MM_ISOTROPIC模式下,纵横比总是1:1,换句话说,无论比例因子如何变化,圆是圆的;但在MM_ANISOTROPIC映射模式下,x和y的比例因子可以独立地变化,即圆可以被拉扁成椭圆形状。PDC-Rectangle(CRect(0,0,200,200); 在某设备环境中绘制出一个高为200个像素,宽为200个像素的方块。在映射模式MM_ANISOTROPIC和MM_ISOTROPIC中,常常可以调用CDC:SetWindowExt(设置窗口大小)和CDE:SetViewportExt(设置视口大小)函数来设置所需要的比例因子。x比例因子=视口x大小/窗口x的大小y比例因子=视口y大小/窗口y的大小CPoint(点)、CSize(大小)和CRect(矩形)是对Windows的POINT、SIZE和RECT结构的封装,因此它们可以直接使用各自结构的数据成员,如下所示:typedef struct tagPOINTLONG x;/点的x坐标LONG y;/点的y坐标 POINT;typedef struct tagSIZE int cx;/水平大小int cy;/垂直大小 SIZE;typedef struct tagRECTLONG left;/矩形左上角点的x坐标LONG top;/矩形左上角点的y坐标LONG right;/矩形右下角点的x坐标LONG bottom;/矩形右下角点的y坐标 RECT;1. CPoint、CSize和CRect的构造函数CPoint类带参数的常用构造函数原型如下:CPoint(int initX,int initY);CPoint(POINT initSize);其中,initX和initY分别用来指定CPoint的成员的x和y的值。initSize用来指定一个POINT结构或CPoint对象来初始化CPoint的成员。CSize类带参数的常用构造函数原型如下:CSize(int initCX,int initCY);CSize(SIZE initSize);其中,initCX和initCY用来分别设置CSize的cx和cy成员。initSize用来指定一个SIZE结构或CSize对象来初始化CSize的成员。CRect类带参数的常用构造函数原型如下:CRect(int l,int t,int r,int b);CRect(LPCRECT lpSrcRect);CRect(POINT point,SIZE size);CRect(POINT topleft,POINT bottomRight);其中,l、t、r和b分别用来指定CRect的left、top、right和bottom成员的值。srcRect和lpSrcRect分别用一个RECT结构或指针来初始化CRect的成员。point用来指定矩形的左上角位置。size用来指定矩形的长度和宽度。topLeft和bottomRight分别用来指定左上角和右下角的位置。2. CRect类的常用操作一个CRect类对象包含用于定义矩形的左上角和右下角点的成员变量,因此,在传递LPRECT、LPCRECT或RECT结构作为参数的任何地点,都可以使用CRect对象来代替。需要说明的是,当构造一个CRect时,要使它符合规范。也就是说,使其left小于right,top小于bottom。例如,若左上角为(20,20),而右下角为(10,10),那么定义的这个矩形就不符合规范。对于一个不符合规范的矩形,CRect的许多成员函数都不会有正确的结果。基于此种原因,常使用CRect:NormalizeRect函数使一个不符合规范的矩形合乎规范。CRect类的操作函数有很多,这里只介绍矩形的扩大、缩小以及两个矩形的“并”和“交”操作,更多的常用操作如表6.3所示。表6.3 CRect类常用的成员函数成员函数功能说明int Width() const;返回矩形的宽度int Height() const;返回矩形的高度CSize Size() const;返回矩形的大小,CSize中的cx和cy成员分别表示矩形的宽度和高度CPoint & TopLeft();返回矩形左下角的点坐标CPoint & BottomRight();返回矩形右下角的点坐标CPoint CenterPoint() const;返回CRect的中点坐标BOOL IsRectEmpty() const;如果矩形的宽度或高度是0或负值,则返回TRUEBOOL IsRectNull() const;如果矩形的上、左、下和右边的值都等于0,则返回TRUEBOOL PtInRect(POINT point) const;如果点point位于矩形中(包括点在矩形的边上),则返回TRUEvoid SetRect(int x1,int y1,int x2,int y2);将矩形的各边设为指定的值,左上角点为(x1,y1),右下角点为(x2,y2)void SetRectEmpty();将矩形的所有坐标设置为零void NormalizeRect();使矩形合乎规范void OffsetRect(int x,int y);移动矩形,水平和垂直移动量分别由x,y或point,size的两个成员来指定void OffsetRect(POINT point);void OffsetRect(SIZE size);成员函数InflateRect和DeflateRect用来扩大和缩小一个矩形。由于它们的操作是相互的,也就是说,若指定InflateRect函数的参数为负值,那么操作的结果是缩小矩形,因此,下面只给出InflateRect的原型:void InflateRect(int x,int y);void InflateRect(SIZE size);void InflateRect(LPCRECT lpRect);void InflateRect(int l,int t,int r,int b);其中,x指定扩大CRect左、右边的数值,y指定扩大CRect上、下的数值。size中的cx成员指定扩大左、右边的数值,cy成员指定扩大上、下的数值。lpRect的各个成员用来指定扩大每一边的数值。l、t、r和b分别用来指定扩大CRect左、上、右和下边的数值。GetRValue/获得32位RGB颜色值中的红色分量GetGValue/获得32位RGB颜色值中的绿色分量GetBValue/获得32位RGB颜色值中的蓝色分量RGB/将指定的R、G、B分量值转换成一个32位的RGB颜色值例子:1 用MFC AppWizard(exe)创建一个基于对话框应用程序Ex_DlgDraw。2 将对话框标题设为“在对话框及控件中绘图”,删除“取消”按纽和“TODO:”静态文本控件,将“确定”按纽示题改为“退出”。3 在对话框右侧靠上部位添加一个静态文本控件IDC_DRAW,在其“样式”属性中,选中“凹陷”选项。4 为CEx_DlgDrawDlg类手动添加下列成员函数DoDrawCtrl。void DoDrawCtrl() CWnd *pWnd=GetDlgItem(IDC_DRAW); CDC* pDC=pWnd-GetDC(); CRect rcClient; pWnd-GetClientRect(rcClient);/获取控件客户区大小 UpdateWindow();/告诉对话框,控件已更新过 CBrush brush(HS_CROSS,RGB(0,0,255); CBrush *oldBrush=pDC-SelectObject(&brush); pDC-Rectangle(rcClient); pDC-SelectObject(oldBrush);5 在CEx_DlgDrawDlg:OnPaint函数中添加下列代码。void CEx_DlgDrawDlg:OnPaint() if (IsIconic()elseCDialog:OnPaint();UpdateWindow();/告诉系统对话框已更新过 CDC* pDC=GetDC(); CRect rcClient; GetClientRect(rcClient); /获取对话框客户区大小 CRect rcDraw; rcDraw.SetRect(10,10,rcClient
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年公证员助理招聘考试题库及模拟题答案
- 中国平安大厦管理办法
- 2025年供销社审计人员招聘面试实战演练与模拟题集萃
- 数据库管理面试题(附参考答案)
- 2025年乡镇畜牧站招聘考试模拟试题畜牧统计员岗位能力测试
- 2025年制造业生产经理面试问题及答案指南
- 2025年制造业生产经理招聘面试技巧及预测题解析
- 关于公司间借款合同4篇
- 熔化焊接与热切割作业安全生产考试题库(附答案)
- 健康照护师考试题库及答案
- 2025年全国企业员工全面质量管理知识竞赛题库及答案
- 基孔肯雅热防控指南专题课件
- 2025年中级钳工技能鉴定考核试题库(附答案)
- 2025秋教科版科学二年级上册教学课件:第一单元第1课 动物的家
- GB/T 15620-2025镍及镍合金实心焊丝和焊带
- 名誉顾问聘任管理办法
- 牧昆:亚朵星球怎样用内容打增量 洞察无法逃离日常用真人秀的思路打增量
- 养老机构出入管理办法
- 中医康复科业务学习课件
- DB11-T 751-2025 住宅物业服务标准
- 科技型中小企业教程课件
评论
0/150
提交评论