• Visual C++ 打印编程技术-编程基础-映射模式


    映射模式:

          Visual C++ 中采用的坐标映射方式使得用户图形坐标和输出设别的像素完全一致。

          eg:当屏幕的像素大小为800X600时,每英寸包含屏幕像素为96,打印机则需要几倍的点数才能达到同样的逻辑尺寸

               因此可通过转换坐标映射方式,是打印机采用的坐标比例比显示时所采用的坐标比例相应地大若干倍。

          映射模式:在屏幕或打印机上绘图时候,可以使用英寸或者毫米代替作为单位(代替像素),往往更加直观。

          PS: 设备单位,逻辑单位

                设备单位:是传递给绘图函数的X和Y值,他们可以表示英寸和毫米

                逻辑单位:X,Y在屏幕上的像像素,或是打印机上的点阵数。

               点击鼠标以设备单位返回,如果想知道鼠标点击位图的什么位置,需要将设备单位转化为逻辑单位。 

    可用的映射模式
    映射模式 逻辑单位
     MM_TEXT  1px
    MM_LOMETRIC 0.1mm
    MM_HIMETRIC 0.01mm
    MM_LOENGLISH 0.01英寸
    MM_HIENGLISH 0.001英寸
    MM_TWIPS 1/1440英寸
    MM_ISOTROPIC 用户定义的值,但X和Y方向相等(等比)
    MM_ANISOTROPIC 用户定义的值,但X和Y方向任意

    映射模式通过设备环境类的一个成员函数SetMapMode()来设置,只要把上述标志当作参数传入函数即可。

    设置映射模式后,传给任何绘图函数的坐标值都通过GDI内部的映射机制转换成设备坐标。

    PS:MM_TEXT模式时,Y轴的正方向是沿屏幕垂直向下,X轴是沿屏幕向右

         其它模式时,Y轴正方向沿屏幕垂直向上,X轴是沿屏幕向后

    窗口:以逻辑单位表示绘图区域的大小,屏幕所见尺寸

    视口:以设备单位(像素或点阵数)表示设备绘图区域的大小,如:打印机

    	pDC->SetMapMode(MM_TEXT);
    	pDC->SetViewportOrg(50,50);
    	pDC->SetWindowOrg(200,200);
    	CPen myPen(PS_SOLID,1,RGB(255,0,0));
    	CPen* pOldPen=pDC->SelectObject(&myPen);
    	pDC->TextOut(200,180,_T("左上点像素坐标=50,y=50"));
    	pDC->Rectangle(200,200,400,400);
    	pDC->SelectObject(pOldPen);
    	myPen.DeleteObject();
    

      结果如图:

  • 相关阅读:
    C# DataGridView显示行号的三种方法
    jQuery之前端国际化jQuery.i18n.properties
    大龄程序员的未来在何方
    【翻译】HTML5开发——轻量级Web Database存储库html5sql.js
    HBuilder webApp开发 Websql增删改查操作
    JS 互相调用iframe页面中js方法、VUE里 iframe 互调方法
    工具,百度编辑器 UEditor 使用实例化
    html 表格head头部不动 body部分滚动,每格宽同内容增加
    JS 正则收集(邮箱验证等)
    jQuery,title、仿title功能整理
  • 原文地址:https://www.cnblogs.com/ericyi/p/4386858.html
Copyright © 2020-2023  润新知