代码之家  ›  专栏  ›  技术社区  ›  CodeSpeaker

缩放/滚动到光标

  •  1
  • CodeSpeaker  · 技术社区  · 17 年前

    在scrollviewer中放大/缩小图像时出现问题。 当我使用“放大”按钮时,每次单击该按钮时,我都会将图像的宽度/高度设置为其原始大小的1.25。缩小按钮也是如此,它将比例因子设置为0.75。 到现在为止,一直都还不错。

    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

    1 回复  |  直到 17 年前
        1
  •  1
  •   Community Mohan Dere    6 年前

    在代码中,通过增加图像的宽度和高度来缩放图像。这总是发生在左上角。但是,如果使用缩放变换,则可以设置图像应围绕其缩放的点。

    <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

    另一个注意事项:我不确定你的缩放效果是这样的,但是如果你放大1.25,你应该缩小1/1.25而不是0.75。这将使缩放保持不变,您的缩放会随着您的前进而改变(即,如果我放大两次,缩小两次,我就不会再缩放1)