⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled-10.txt

📁 mfc 教程
💻 TXT
字号:
                                                                  第2章在窗口中绘图39
机在1英寸内打出600个点,所以在MM一LOENGLISH映射模式下画的IO0个单位长的线在
打印纸上的长度也正好是1英寸。
2.1.5可编程映射模式
    MM.ISOTROPIC和MM_ANISOTROPIC映射模式在一个重要方面与其他映射模式不同,
即是用户而不是Windows决定从逻辑坐标值转换成设备坐标值的方式。正因为如此,这两
个映射模式有时也被称为“自行设计”或“可编程”映射模式。如果想建立回逻辑单位等于
1厘米的映射模式,很简单,只要使用MM—ANISOTROPIC映射模式并设置相应的比例参数
即可。
    MM_ISOTROPIC和MM_ANISOTROPIC映射模式最常用于根据窗口尺寸按比例e动调
节画图的输出大小的场合。下面的程序代码段用MM.ANISOTROPIC映射模式画一个椭圆,
使它与所在窗口的四边相接。
        CRect    reCt;
      GetCI。entRect(&rect);
      dc.SetMapMode(MM-ANISOTROPIC);
      dc;SetwindowExt(500, 500);
      dc.setv。eaportzxt(rect.W。dth(), rect.Height());
      dc.Ellipse(0, 0, 50D, 500);
    知道它如何起作用了吗?无论窗口的实际尺寸如何,Window。被告知窗口的逻辑尺寸
为500单位宽、50O单位长。因此边界框从(O,0)伸展到(500,500),包含了整个窗口。按照
这种方式初始化设备描述表,则得到的坐标系原点位于窗口左上角,X轴正向向右,Y轴正
向向下。如果希望Y轴正向向上(如在公制映射模式下),那么只要将传送给SetwindowExt
或SetViewportExt的Y坐标值取反,就可以达到倒转Y轴的目的了:
        CRect rect;
      GetClientRect(&rect);
      dc.SetMapMode(MM—ANISOTROPIC);
      dc.SetwindowExt(500,500);
      dc.SetV。eop。nExt(rect.W。dth(), rect.He。ght(》;
      dc.Ellipse(0,0,500,-5O0);
    现在必须用负的 Y坐标值在窗口中画图了。只有 MM—ISOTROPIC和 MM—ANISOTROP-
IC映射模式允许倒转X轴和Y轴的方向。正是因为这个原因,这两种映射模式的坐标轴方
向才被定义为用户自定义类型。
    MM_ISOTROPIC和MM_ANISOTROPIC映射模式间唯一的区别在于:前者中X方向和Y
方向具有同一个的缩放比例因子。也就是说,水平方向上的IO0个单位和竖直方向上的
100个单位实际上长度相等。Isotropic意味着“各个方向上相等”。用MM—ISOTROPIC映射

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -