三国杀黄月英去衣图片:基于VC++的GDI常用坐标系统及应用 (3)
来源:百度文库 编辑:中财网 时间:2024/04/25 03:42:07
三、固定映射模式 为了控制设备上下文中的坐标轴的方向,可以使用CDC类的SetMapMode()函数,它的语法如下: int SetMapMode(int nMapMode); 这个函数将根据参数的设置的不同做两件事,一是控制坐标轴的方向;二是坐标系统的单位长度。 这个函数的参数是用来定义映射模式的整型常量。它可能的值是:MM_TEXT, MM_LOENGLISH、MM_HIENGLISH、MM_ANISOTROPIC、MM_HIMETRIC, MM_ISOTROPIC、 MM_LOMETRIC, MM_TWIPS。 默认情况下使用MM_TEXT映射模式。换句话说,如果你没有具体的规定某一映射模式,你的应用程序就将使用MM_TEXT映射模式。在这种映射模式下,设备上下文中的度量尺寸将使用默认的像素单位,水平坐标轴正方向向右,垂直坐标轴正方向向下。例如,上面的OnPaint事件可以用下面的代码重写,它将产生同样的效果,仿佛没有使用映射模式。 void CExoDraw1View::OnPaint() { CPaintDC dc(this); // device context for painting dc.SetMapMode(MM_TEXT); dc.SetViewportOrg(380, 220); // Use a red pen CPen PenRed(PS_SOLID, 1, RGB(255, 0, 0)); dc.SelectObject(PenRed); // A circle whose center is at the origin (0, 0) dc.Ellipse(-100, -100, 100, 100); // Use a blue pen CPen PenBlue(PS_SOLID, 1, RGB(0, 0, 255)); dc.SelectObject(PenBlue); // Horizontal axis dc.MoveTo(-380, 0); dc.LineTo(380, 0); // Vertical axis dc.MoveTo(0, -220); dc.LineTo(0, 220); // An orange pen CPen PenOrange(PS_SOLID, 1, RGB(255, 128, 0)); dc.SelectObject(PenOrange); // A diagonal line at 45 degrees dc.MoveTo(0, 0); dc.LineTo(120, 120); }
图十、代码效果图
MM_LOENGLISH模式,与其他一些映射模式(不包括MM_TEXT模式)一样,执行两个动作,它改变坐标轴的方向,垂直坐标轴的正方向向上;
图十一、MM_LOENGLISH映射模式下的坐标系 此外,度量单位改为0.01英寸,这意味着你提供的坐标将除以100,观察上述代码的MM_LOENGLISH映射效果 void CExoDraw1View::OnPaint() { CPaintDC dc(this); // device context for painting dc.SetMapMode(MM_LOENGLISH); dc.SetViewportOrg(380, 220); . . . }
图十二、代码效果图 正如你所看到的,直线现在位于坐标系的第一象限,同时,直线比以前缩短,圆也比以前的要小。 与MM_LOENGLISH映射模式相似,MM_HIENGLISH映射模式也是垂直坐标轴正向向上,只是它以0.001英寸为坐标单位,下面是它的效果: void CExoDraw1View::OnPaint() { CPaintDC dc(this); // device context for painting dc.SetMapMode(MM_HIENGLISH); dc.SetViewportOrg(380, 220); . . . Same as previous }
图十三、代码效果图 MM_LOMETRIC映射模式使用与上两种映射模式相同的坐标轴,不同的是MM_LOMETRIC使用0.1毫米为单位,下面是一个例子: void CExoDraw1View::OnPaint() { CPaintDC dc(this); // device context for painting dc.SetMapMode(MM_LOMETRIC); dc.SetViewportOrg(380, 220); . . . }
图十四、代码效果图
MM_HIMETRIC使用与上述三种映射模式相同的坐标系,但它的坐标单位是0.01毫米,下面例子代码如下: void CExoDraw1View::OnPaint() { CPaintDC dc(this); // device context for painting dc.SetMapMode(MM_HIMETRIC); dc.SetViewportOrg(380, 220); . . . Same as previous }
图十五、代码效果图 MM_TWIPS映射模式将每个逻辑单位(像素)除以20,实际上一twip等于1/1440 英寸,坐标系统仍然与上面几种映射方式相同。 void CExoDraw1View::OnPaint() { CPaintDC dc(this); // device context for painting CRect Recto; dc.SetMapMode(MM_TWIPS); dc.SetViewportOrg(380, 220); . . . }
图十六、代码效果图
图十、代码效果图
MM_LOENGLISH模式,与其他一些映射模式(不包括MM_TEXT模式)一样,执行两个动作,它改变坐标轴的方向,垂直坐标轴的正方向向上;
图十一、MM_LOENGLISH映射模式下的坐标系 此外,度量单位改为0.01英寸,这意味着你提供的坐标将除以100,观察上述代码的MM_LOENGLISH映射效果 void CExoDraw1View::OnPaint() { CPaintDC dc(this); // device context for painting dc.SetMapMode(MM_LOENGLISH); dc.SetViewportOrg(380, 220); . . . }
图十二、代码效果图 正如你所看到的,直线现在位于坐标系的第一象限,同时,直线比以前缩短,圆也比以前的要小。 与MM_LOENGLISH映射模式相似,MM_HIENGLISH映射模式也是垂直坐标轴正向向上,只是它以0.001英寸为坐标单位,下面是它的效果: void CExoDraw1View::OnPaint() { CPaintDC dc(this); // device context for painting dc.SetMapMode(MM_HIENGLISH); dc.SetViewportOrg(380, 220); . . . Same as previous }
图十三、代码效果图 MM_LOMETRIC映射模式使用与上两种映射模式相同的坐标轴,不同的是MM_LOMETRIC使用0.1毫米为单位,下面是一个例子: void CExoDraw1View::OnPaint() { CPaintDC dc(this); // device context for painting dc.SetMapMode(MM_LOMETRIC); dc.SetViewportOrg(380, 220); . . . }
图十四、代码效果图
MM_HIMETRIC使用与上述三种映射模式相同的坐标系,但它的坐标单位是0.01毫米,下面例子代码如下: void CExoDraw1View::OnPaint() { CPaintDC dc(this); // device context for painting dc.SetMapMode(MM_HIMETRIC); dc.SetViewportOrg(380, 220); . . . Same as previous }
图十五、代码效果图 MM_TWIPS映射模式将每个逻辑单位(像素)除以20,实际上一twip等于1/1440 英寸,坐标系统仍然与上面几种映射方式相同。 void CExoDraw1View::OnPaint() { CPaintDC dc(this); // device context for painting CRect Recto; dc.SetMapMode(MM_TWIPS); dc.SetViewportOrg(380, 220); . . . }
图十六、代码效果图
3. 参照分布式和企业系统结构、及应用开发的重点明显地转向基于构件的应用开发
VC++开发应用系统的过程
参照分布式和企业系统结构、及应用开发的重点明显地转向基于构件的应用开发,讨论以下问题:
3种常用模具材料的名称,性能及应用
CDMA系统基于RAKE接收机的研究及设计
基于WEB数据库的应用
哪里有免费的毕业论文下载—基于vc的图像处理系统
VC的应用问题
门禁系统的原理及应用、破解
基于VC++的即时串口通信
VC++中基于对话框的编程。
vc中如何将BMP颜色的对比得到坐标系统??
单片机原理及应用中常用芯片的的型号及封装形式?
什么是基于客户机的网络电子地图应用系统?它有哪些主要实现技术?
4. 什么是基于客户机的网络电子地图应用系统?它有哪些主要实现技术
请问谁能够做一个基于uml的彩票销售及管理系统,急
基于delphi的试题库系统
开发商用的基于WEB的应用系统,比较大的.用什么语言开发比较好
在线等!用MFC设计一个基于单文档或对话框的应用系统,帮忙构思一下.
谁有数据库系统及应用的教学大纲啊??
有关“数据库系统及应用”的网页和网站
VC中基于对话框的编程如何改变按钮显示?
VC中基于对话框的编程如何改变按钮显示?
VC中基于对话框的编程如何获得按钮标题?