当前位置:C++技术网 > 资讯 > GDI的映射模式表

GDI的映射模式表

更新时间:2015-12-21 17:51:02浏览次数:1+次

windows中GDI的映射模式表:

默认情况下就是一个像素一个单位,切换到其他的映射模式,客户区坐标轴的Y轴会反转,其余的不变。
切换到MM_LOMETRIC映射模式:

CDC *pDC=GetDC();
pDC->SetMapMode(MM_LOENGLISH);
pDC->Ellipse(0,0,500,-300);


MM_ISOTROPIC和MM_ANISOTROPIC映射模式在一个重要的方面与其他映射模式不同,即是用户而不是WIndows决定从逻辑坐标值转换成坐标值的方式。因此,这两个映射模式也称为“可编程”映射模式。
MM_ISOTROPIC和MM_ANISOTROPIC映射模式最常用于根据窗口尺寸按比例自动调节画图的输出大小的场合。用MM_ANISOTROPIC映射模式画一个椭圆,使它与所在窗口的四边相接。


CDC *pDC=GetDC();

CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(500,-500);
pDC->SetViewportExt(rect.Width(),rect.Height());
pDC->Ellipse(0,0,500,-500);
无论窗口的尺寸如何,Windows被告知窗口的逻辑尺寸,为500单位宽,500单位长。因此,边界框从(0,0)伸展到了(500,500),包含了整个窗口。按照这种方式来初始化设备描述表,则得到的做坐标原点位于窗口左上角,X轴向右,Y轴向上。如果希望T轴正向向下,则:
CDC *pDC=GetDC();

CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(500,500);
pDC->SetViewportExt(rect.Width(),rect.Height());
pDC->Ellipse(0,0,500,500);