首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将平移限制为Silverlight MultiScaleImage中的可见图像区域

将平移限制为Silverlight MultiScaleImage中的可见图像区域
EN

Stack Overflow用户
提问于 2010-01-08 03:04:50
回答 1查看 651关注 0票数 1

Silverlight专家在外面,我需要帮助。我使用Deep Zoom Composer为一个客户端生成了一个大地图图像(20MB+)的Silverlight应用程序。但是客户端不希望用户平移到MultiScaleImage中图像边界之外的黑色区域。我该怎么做呢?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-31 03:37:46

我找到了解决这个问题的小方法。当ViewPortChanged事件触发时,我将新更改的MultiScaleImage的ViewportOrigin传递给下面的方法。问题是视图端口是异步更改的,用户实际上可以看到图像被移回它的边界。

代码语言:javascript
复制
public void SetViewportOrigin(Point point)
    {
        Point bottomRight = ZoomImage.ElementToLogicalPoint(new Point(ZoomImage.ActualWidth / ZoomImage.ViewportWidth - ZoomImage.ActualWidth, ZoomImage.ActualWidth / (ZoomImage.ViewportWidth * 1.33184438 /*ZoomImage.AspectRatio*/) - ZoomImage.ActualHeight));
        bottomRight.X -= ZoomImage.ViewportOrigin.X;
        bottomRight.Y -= ZoomImage.ViewportOrigin.Y;

        if (point.X < 0)
        { //left edge
            point.X = 0;
            Debug.WriteLine("left edge");
        }
        else if (point.X > bottomRight.X)
        {//right edge
            point.X = bottomRight.X;
            Debug.WriteLine("right edge");
        }

        if (point.Y > 1.0)
        {//bottom edge

            point.Y = 1.0;
            Debug.WriteLine("bottom edge1");
        }

        if (point.Y < 0)
        {//top edge
            point.Y = 0;
            Debug.WriteLine("top edge");
        }
        else if (point.Y > bottomRight.Y) //bottom edge
        {
            point.Y = bottomRight.Y;
        }

        ZoomImage.ViewportOrigin = point;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2022876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档