2009-10-06 99 views
1

在滚动查看器中放大/缩小图像时出现问题。 当我使用放大按钮时,每次单击按钮时,我都会使用双倍动画来将图像的宽度/高度改为其原始大小的1.25倍。将缩放因子设置为0.75的缩小按钮也是如此。 目前为止这么好。缩放/滚动到光标

问题是,根据我点击相对于scrollviewer id的中心喜欢滚动的点击点。我计算了一个基于这个的delta x/y,它用来确定在x和y轴上滚动的方向。

double deltaX = (ClickPosition.X - center.X) 
double deltaY = (ClickPosition.Y - center.Y) 

现在我有将增量到垂直和水平滚动条(其也与双动画动画)时要考虑到的图像的当前缩放因子。

当我缩放和滚动的同时,最终的位置并没有达到我期望的位置。图像缩放的原点似乎始终位于图像的0,0(左上角),所以我不知道如何处理该图像,因此单击中间左侧的滚动会比点击左侧更强中心的右侧。

例子: http://212.214.41.66/SilverlightZoom/RealQImageMapTestPage.html

来源: http://212.214.41.66/SilverlightZoom/ImageMap.zip

+0

我查看了您的代码。是否有任何理由为什么使用宽度和高度缩放图像而不是使用缩放转换? – Johannes 2009-10-07 11:02:39

回答

1

在代码中,您可以通过增加宽度和图像的高度缩放图像。这将始终发生在左上角。但是,如果使用缩放变换,则可以设置缩放图像的点。

<Image x:Name="img" Margin="151,127,208,142" Source="Waterfall.jpg" Stretch="Fill"> 
        <Image.RenderTransform> 
        <ScaleTransform x:Name="imagescale" ScaleX="1.2" ScaleY="1.2" CenterX="100" CenterY="100"> 
        </ScaleTransform> 
        </Image.RenderTransform> 
        </Image> 

此代码示例是从here

采取这应该允许您通过绑定到一个属性来设置缩放到ClickPosition。

另一个说明:我不确定你的缩放比例是否如此,但如果放大1.25倍,则应该缩小1/1.25而不是0.75。这将保持缩放不变,随着您的变焦缩放变化(即,如果我放大两倍并缩小两次,我不会再缩放1)。