1

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

问题是,基于我相对于滚动查看器 id 的中心单击的位置,我喜欢向点击点滚动。我基于此计算一个增量 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

4

1 回答 1

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>

此代码示例取自此处

这应该使您能够通过将 ClickPosition 绑定到属性来设置缩放比例。

另一方面:我不确定您是否打算像那样进行缩放,但是如果您放大 1.25,则应该缩小 1/1.25 而不是 0.75。这将保持缩放不变,您的缩放会随着您的前进而变化(即,如果我放大两次并缩小两次,我将不再有 1 的缩放。)

于 2009-10-08T07:37:35.647 回答