关于 IEnvelope.Expand

帮助上的原文如下:

If asRatio = TRUE, the expansion is multiplicative.

XMin = (XMin - dx*Width)/2;
YMin = (YMin - dy*Height)/2;
 XMax = (XMax + dx*Width)/2;
YMax = (YMax + dy*Height)/2;

The Envelope remains centered at the same position.

 

我觉得上面的公式似乎不对,在ESRI论坛上看到walterforgis发帖提出了他自己的看法:

由于envelope的放缩都以一个固定点为中心变化,这里我们首先取得它的中心(假设以中心点为中心变化)
Xmid=(Xmin+Xmax)/2; Ymid=(Ymin+Ymax)/2.
然后帮助中的公式应改为:
Xmin=Xmid-dx*width/2;
Ymin=Ymid-dy*height/2;
Xmax=Xmid+dx*width/2;
Ymax=Ymid+dy*height/2;

按照后者的公式,envelope.Expand(2, 2, true)是显示范围的高、宽都变为原来的两倍,缩小了显示比例,envelope.Expand(0.5, 0.5, true)是显示范围的高、宽都变为原来的一半,扩大了显示比例。我个人认为这样更靠谱。

posted on 2010-08-21 17:04  Hexy  阅读(2079)  评论(0编辑  收藏  举报

导航