修正了深度缩放

时间:2010-02-18 17:30:47

标签: silverlight deepzoom

有没有办法在深度缩放中对多尺度图像执行固定缩放?即单击一次以缩放X点,Y至2x,再次单击以恢复到原始位置和缩放级别?

我已经编写了放大和缩小的代码,但是在缩放过程中途调用zoomaboutlogicalpoint会导致缩小太远(我想由于鼠标向上事件的1/2因素 - 我可以获得缩放级别吗? )。此外,我希望缩小的图像是中心的(我想我更改点缩放到图像的中间位置,但这似乎不起作用,也许我需要考虑ViewPort位置?)

e.g。

private void msi_MouseLeftButtonDown(object sender,MouseButtonEventArgs e)         {
            点p = e.GetPosition(msi);             缩放(2,p);         }

private void msi_MouseLeftButtonUp(object sender,MouseButtonEventArgs e)         {
            点p = e.GetPosition(msi);             缩放(1/2,p);         }

    public void Zoom(double zoom, Point pointToZoom)
    {
        bool zoomingIn = zoom > 1;
        bool zoomingOut = zoom < 1;
        double minViewportWidth = 0.05;
        double maxViewportWidth = 1;

        if (msi.ViewportWidth < minViewportWidth && zoomingIn)
        {
            return;
        }

        if (msi.ViewportWidth > maxViewportWidth && zoomingOut)
        {
            return;
        }

        Point logicalPoint = this.msi.ElementToLogicalPoint(pointToZoom);
        this.msi.ZoomAboutLogicalPoint(zoom, logicalPoint.X, logicalPoint.Y);

    } 

感谢。

1 个答案:

答案 0 :(得分:0)

在缩小之前重置变换原点似乎已经成功了:

msi.RenderTransformOrigin =新点(msi.Height / 2,msi.Width / 2);