荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Second (石开), 信区: Program
标  题: 2.5 使用各种映射方式
发信站: 荔园晨风BBS站 (Wed May 30 01:10:17 2001), 转信

2.5 使用各种映射方式

所谓的映射方式简单点讲就是坐标的安排方式,系统默认的映射方式为MM_TEXT即X坐标
向右增加,Y坐标向下增加,(0,0)在屏幕左上方,DC中的每一点就是屏幕上的一个象素
。也许你会认为这种方式下是最好理解的,但是一个点和象素对应的关系在屏幕上看来
是正常的,但到了打印机上就会很不正常。因为我们作图是以点为单位并且打印机的分
辨率远远比显示器高(800DPI 800点每英寸)所以在打印机上图形看起来就会很小。这
样就需要为打印另做一套代码而加大了工作量。如果每个点对应0.1毫米那么在屏幕上的
图形就会和打印出来的图形一样大小。

通过int CDC::SetMapMode( int nMapMode )可以指定映射方式,可用的有以下几种:
MM_HIENGLISH 每点对应0.001英寸   Each logical unit is converted to 0.001 inc
h. Positive x is to the right; positive y is up.
MM_HIMETRIC 每点对应0.001毫米   Each logical unit is converted to 0.01 milli
meter. Positive x is to the right; positive y is up.
MM_LOENGLISH 每点对应0.01英寸   Each logical unit is converted to 0.01 inch.
 Positive x is to the right; positive y is up.
MM_LOMETRIC 每点对应0.001毫米   Each logical unit is converted to 0.1 millim
eter. Positive x is to the right; positive y is up.
MM_TEXT 象素对应   Each logical unit is converted to 1 device pixel. Positiv
e x is to the right; positive y is down.
以上几种映射默认的原点在屏幕左上方。除MM_TEXT外都为X坐标向右增加,Y坐标向上增
加,和自然坐标是一致的。所以在作图是要注意什么时候应该使用负坐标。而且以上的
映射都是X-Y等比例的,即相同的长度在X,Y轴上显示的长度都是相同的。观看不同映射
效果图

另外的一种映射方式为MM_ANISOTROPIC,这种方式可以规定不同的长宽比例。在设置这
中映射方式后必须调用CSize CDC::SetWindowExt( SIZE size )和CSize CDC::SetView
portExt( SIZE size )来设定长宽比例。系统会根据两次设定的长宽的比值来确定长宽
比例。下面给出一段代码比较映射前后的长宽比例:
OnDraw(CDC* pDC)
{
 CRect rcC1(200,0,400,200);
 pDC->FillSolidRect(rcC1,RGB(0,0,255));
 pDC->SetMapMode(MM_ANISOTROPIC );
 CSize sizeO;
 sizeO=pDC->SetWindowExt(5,5);
 TRACE("winExt %d %d\n",sizeO.cx,sizeO.cy);
 sizeO=pDC->SetViewportExt(5,10);
 TRACE("ViewExt %d %d\n",sizeO.cx,sizeO.cy);
 CRect rcC(0,0,200,200);
 pDC->FillSolidRect(rcC,RGB(0,128,0));
}
上面代码在映射后画出的图形将是一个长方形。观看效果图
最后讲讲视原点(viewport origin),你可以通过调用CPoint CDC::SetViewportOrg(
POINT point )重新设置原点的位置,这就相对于对坐标进行了位移。例如你将原点设置
在(20,20)那么原来的(0,0)就变成了(-20,-20)。

--
                            既然热爱生命
                            那么,
                            一切都在意料之中。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.28.190]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店