放大/缩小滚动查看器中的图像时出现问题。 当我使用放大按钮时,每次单击按钮时,我都会使用双动画将图像宽度/高度设置为其原始大小的1.25。缩小按钮也是如此,缩放按钮将比例因子设置为0.75。 到目前为止一切都很好。
问题是基于我相对于scrollviewer id的中心点击的位置,就像滚动点击点一样。我基于此计算delta x / y,用于确定x和y轴上的滚动方向。
double deltaX = (ClickPosition.X - center.X)
double deltaY = (ClickPosition.Y - center.Y)
现在,我必须考虑将delta应用于垂直和水平滚动条时的图像的当前缩放系数(也使用双动画进行动画处理)。
当我同时缩放和滚动时,最终位置不会达到我期望的位置。图像缩放的原点似乎总是在图像的0,0(左上角),所以我不知道如何处理它,因此点击中心的左侧比点击更强大的向左滚动中心的右侧。
例: http://212.214.41.66/SilverlightZoom/RealQImageMapTestPage.html
答案 0 :(得分: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的缩放。)