【问题标题】:Aspect ratio changes on scrolling the zoomed image in Wp7在 Wp7 中滚动缩放图像时长宽比发生变化
【发布时间】:2011-05-06 06:40:26
【问题描述】:

我在滚动查看器中有一个图像。该图像上实现了捏入和捏出功能。 但是在滚动缩放的图像时,纵横比会发生变化,图像会失真。 在 xaml 之后:

 <ScrollViewer HorizontalScrollBarVisibility="Auto"  VerticalScrollBarVisibility="Auto" Name="scroller" >
            <Image  Name="image_new"   Visibility="Visible"    CacheMode="BitmapCache"   >
                <Image.RenderTransform >
                <CompositeTransform x:Name="transform"/>
                </Image.RenderTransform >
                <toolkit:GestureService.GestureListener>
                    <toolkit:GestureListener  Flick="OnFlick" PinchStarted="OnPinchStarted" PinchDelta="OnPinchDelta"  DoubleTap="Onimage_doubletap" Tap="Onimage_singletap" />

                </toolkit:GestureService.GestureListener>

            </Image>
        </ScrollViewer>

.cs 文件中的方法是:

  private void OnPinchStarted(object sender, PinchStartedGestureEventArgs e)
    {

        Point point0 = e.GetPosition(image_new, 0);
        Point point1 = e.GetPosition(image_new, 1);
        Point midpoint = new Point((point0.X + point1.X) / 2, (point0.Y + point1.Y) / 2);
        image_new.RenderTransformOrigin = new Point(midpoint.X / image_new.ActualWidth, midpoint.Y / image_new.ActualHeight);
        initialScale = transform.ScaleX;

    }

    private void OnPinchDelta(object sender, PinchGestureEventArgs e)
    {

        transform.ScaleX = Math.Max(Math.Min(initialScale * e.DistanceRatio, 3.0), 0.5);
        transform.ScaleY = Math.Max(Math.Min(initialScale * e.DistanceRatio, 3.0), 0.5);

    }

【问题讨论】:

    标签: c# silverlight windows-phone-7 gesture


    【解决方案1】:

    我认为这里的问题是您正在更改每个捏合手势的 RenderTransformOrigin,这会导致失真。我会尝试将 RenderTransformOrigin 固定在 0.5,0.5 以确保您获得均匀的比例。

    我假设您正在移动原点以尝试放大/缩小用户开始手势的图像部分。为了实现这一点,我认为您需要使用户能够在放大后平移图像。

    另外一点,比例因子总是相同的,所以你应该只计算一次,然后将它分配给 ScaleXScaleY

    【讨论】:

    • 感谢您的回复...对于平移,我使用了滚动查看器,以便用户可以水平或垂直滚动​​以平移图像。但是在平移时,图像会失真。我已经修复了 RenderTransformOrigin到 0.5,0.5 但问题仍然存在。
    • 嗯...有趣。如果您可以在某处发布项目或简单的重现,我可以更详细地查看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多