QQ登录

只需一步,快速开始

上位机MFC如何进行坐标映射

[ 复制链接 ]
在VC下进行GDI编程时,理解映射方式、设备坐标系、逻辑坐标系、设置逻辑坐标原点和设备坐标原点。可以很好的帮助我们顺利的编写程序。
查阅MSDN手册,可以找到很详细的介绍,不过只为英文版本。

其实映射方式定义了将逻辑单位转换为设备单位的度量单位,并定义了逻辑坐标系的X、Y轴的方向。

所以,映射方式不仅影响逻辑单位的尺寸,也影响Y轴的正方向。

手册介绍的GDI有八种映射方式,下面是其意义:

MM_TEXT:每个逻辑单位转换为一个图素,X正方向向右,Y正方向向下。(仅此一种方式是Y向下为正方向的)

M_LOMETRIC:每个逻辑单位转换为0.1毫米,X正方向向右,Y正方向向上。

MM_LOENGLISH:每个逻辑单位转换为0.1英寸,X正方向向右,Y正方向向上。

MM_HIENGLISH:每个逻辑单位转换为0.001英寸,X的正方面向右,Y的正方向向上。

MM_HIMETRIC:每个逻辑单位转换为0.01毫米,X正方向向右,Y的正方向向上。

MM_TWIPS;每个逻辑单位转换为打印点的1/20(即1/1400英寸),X正方向向右,Y方向向上。

MM_ISOTROPIC:逻辑单位转换成具有均等比例轴的任意单位,

即沿X轴的一个单位等于沿Y轴的一个单位,用和函数可以指定该轴的单位和方向。

图形设备界面(GDI)需要进行调整,以保证X和Y的单位保持相同大小(当设置窗口范围时,视口将被调整以达到单位大小相同),

X正方向向右,Y正方向向上。

MM_ANISOTROPIC:逻辑单位转换成具有任意比例轴的任意单位(用SetWindowExtEx和SetViewportExtEx函数可指定单位、方向和比例),

X正方向向右,Y正方向向上。

上位机MFC如何进行坐标映射

上位机MFC如何进行坐标映射

设备坐标系的X、Y轴方向固定,单位固定,X轴向右,Y向下递增。

设备点(0,0)始终是客户区、窗口区或者屏幕区的左上角(如上图所示)。

映射方式仅针对逻辑坐标系。

逻辑坐标系:

所有GDI绘图操作时,坐标都指逻辑坐标系。

当映射方式为MM_TEXT时(也是默认的映射方式),逻辑坐标系与设备坐标系相同。

我们可以使用其他映射方式来试验。

比如:

pDC->SetMapMode( MM_LOMETRIC ); //此时Y轴向上为正,X轴向右为正

pDC->SelectStockObject( GRAY_BRUSH );

pDC->Rectangle(100,-100,400,-400);  //此时的坐标都是逻辑坐标哦

结果如下图:

2019-07-31_113550.jpg


函数CDC::SetWindowOrg与CDC::SetViewPortOrg的理解

函数CDC::SetWindowOrg是改变窗口(逻辑坐标)原点,

如SetWindowOrg(100,100)则是将逻辑点(100,100)映射到为设备点(0,0); 

函数CDC::SetViewPortOrg是改变视口(设置坐标)原点,

如SetViewPortOrg(100,100)则是将设备点(100,100),映射到为逻辑点(0,0)(注意:设备点(100,100)不要等同于逻辑点的(100,100));

举两个例子:

运用CDC::SetWindowOrg举例如下:

pDC->SetMapMode( MM_LOMETRIC ); //此时Y轴向上为正,X轴向右为正

pDC->SelectStockObject( DKGRAY_BRUSH );

pDC->SetWindowOrg(100,100);  ////将逻辑点(100,100)映射到设备点(0,0)上

pDC->Rectangle(100,-100,400,-400);  //此时的坐标都是逻辑坐标哦

2019-07-31_113653.jpg

运用CDC::SetViewPortOrg举例如下:

pDC->SetMapMode( MM_LOMETRIC ); //此时Y轴向上为正,X轴向右为正

pDC->SelectStockObject( DKGRAY_BRUSH );

pDC->SetViewportOrg( 100, 100 );  //将设备点(100,100)映射到逻辑点(0,0)上

pDC->Rectangle(100,-100,400,-400);  //此时的坐标都是逻辑坐标哦
2019-07-31_113822.jpg

可以下载例程,修改OnDraw函数内的代码,测试效果。

2019-07-31_114049.jpg

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:上位机MFC如何进行坐标映射.rar 
文件大小:157.17 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例

  

经历1年的编程与录制点击进入查看

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索