ArcEngine -- 窗口缩放到几何图形并闪烁

本文介绍了如何在ArcEngine中实现窗口缩放至特定几何图形并进行闪烁效果。关键在于理解IActiveView.Refresh()不会立即重绘窗口,需要调用ScreenDisplay.UpdateWindow()来确保操作顺序正确。文章详细讲解了缩放、闪烁的实现方式,包括直接调用FlashShape、绘制图形以及通过识别要素的方法,并提供了相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缩放到要素以及闪烁形状是非常常规的操作,用处很广泛。单一的来看这两个通常都不会有什么问题,但是当将他们放在一起时,稍不注意就会达不到目的。

其实比较容易引起的问题就是:尽管缩放到要素的代码放在闪烁代码的前面,也刷新了视图,但是执行的时候,却是先闪烁,再缩放。执行顺序不对其实是牵涉到一个非常关键的要点。

要点:IActiveView.Refresh()并不会立刻启动 redraw 方法来重新绘制窗口,要想立刻绘制,需要显式调用ScreenDIsplay.UpdateWindow()方法。

这个要点同样适用于其他需要刷新后立刻执行屏幕操作的地方。

下面分别来讲实现。

移动缩放

public static void ZoomToGeometry(IGeometry geometry, IActiveView activeView)
{
IEnvelope env = geometry.Envelope;
IGeometry5 geo = geometry as IGeometry5;

    if (env.Width == 0 || env.Height == 0)
    {
        IPoint centerPoint = new PointClass();
        centerPoint.X = geo.CentroidEx.X;
        centerPoint.Y = geo.CentroidEx.Y;

        //IDisplayTransformation displayTrans = activeView.ScreenDisplay.DisplayTransformation;
        //displayTrans.SpatialReference = activeView.FocusMap.SpatialReference;

        env.XMin = centerPoint.X - 0.001;
        env.XMax = centerPoint.X + 0.001;
        env.YMin = centerPoint.Y - 0.001;
        env.YMax = centerPoint.Y + 0.001;

        env.CenterAt(centerPoint);
    }
    env.Expand(0.5, 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值