VC++程序 画图三角形 比较两程序生成的三角形怎么不一样

来源:百度知道 编辑:UC知道 时间:2024/09/13 03:35:50
程序1://建立工程MFC AppWizard,点击视图里面的ondraw函数,写入

CRect rect;

GetClientRect(&rect);

pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetViewportOrg(0,0);
pDC->SetViewportExt(rect.right,rect.bottom);

pDC->SetWindowOrg(0,0);
pDC->SetWindowExt(10000,10000);

pDC->MoveTo(500,500);
pDC->LineTo(500,9500);
pDC->LineTo(9500,9500);
pDC->LineTo(500,500);
}

程序2:CRect rect;

GetClientRect(&rect);

pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetViewportOrg(0,0);
pDC->SetViewportExt(rect.right,rect.bottom);

pDC->SetWindowOrg(0,0);
pDC->SetWindowExt(10000,10000);

pDC->MoveTo(500,500);
pDC->LineTo(500,9500);
pDC->LineTo(9500,9500);
pDC->LineTo(500,500);
}

把窗口最大化后看,怎么生成的两个三角形都不一样啊,坐标不是写的一样吗
怎么会有这些区别?
能提供详细解答吗 我有这两种模式的介绍,但是不多。

呵呵,你设置的映射模式不一样啊,当然画出来的不一样,建议你好好研究一下映射模式的东西

具体的东西你找点书,或是到网上查一下就知道了,比较简单的,希望下面的东西对你有帮助:
一、Windows中的映射模式
1、Windows定义映射模式的目的
经过我的综合,Windows定义映射模的目的又以下几个方面:1、不同人的使用习惯。不同国家的,不同地区,以及不同的人因为习惯喜欢用不同的度量单位,有的人人喜欢用英寸,而有的人喜欢用公制中的厘米,毫米等。其他的人又喜欢用另外一些单位。、2、使软件与硬件向分离开来。让开发的软件能够最大限度的与硬件无关。3、提供逻辑和物理的一种转换。就相当于银行的利率。
2、默认的映射模式
默认的映射模式使MM_TEXT,它使以象素为单位的。X轴向左为正,Y轴向下为正。默认的坐标原点在左上角。
3、固定比例映射模式
固定比例的映射模式有MM_LOMETRIC、MM_HIMETRIC、MM_LOENGLISH、MM_HIENGLISH、MM_TWIPS种。它们默认的坐标原点都使在左上角。其区别在于每一个逻辑单位对应的物理大小不一样。所对用的逻辑单位分别为0.1毫米,0.01毫米,0.01英寸,0.001英寸,1/1440英寸(0.0007英寸)。
4、可变比例映射模式
对于可变比例的映射模式用户可以自己定义一个逻辑单位代表的大小,其大小可以任意。也可以让这个大小随环境改变而改变。有MM_ISOTROPIC,MM_ANISOTROPIC这两种映射模式。其逻辑单位的大小等于视口范围和窗口范围的比值。两者的不同在于前者要求X轴和Y轴的度量单位必须相同,而后者没有这样的限制。
二、Windows中的几种坐标体系
1、屏幕坐标
屏幕坐标描述物理设备(显示器、打印机等)的一种坐标体系,坐标原点在屏幕的左上角,X轴向右为正,Y轴向下为正。度量单位是象素。原点、坐标轴方向、度量单位都是不能够改变的。
2、设备坐标(又称物理坐标)