0

我正在开发一个画廊应用程序,我需要在 Flipview 上显示图像。在 Flipview 中,我想放大/缩小图像。这是我的代码,我试图在其中显示图像并对其执行复合变换。

<Image Source="Assets/WP_20150914_11_30_50_Pro.jpg"
                Stretch="Uniform"
                HorizontalAlignment="Center"
                VerticalAlignment="Center"
                RenderTransformOrigin="0.5,0.5"
                ManipulationDelta="img_intro_ManipulationDelta"
                ManipulationMode="All">
            <Image.RenderTransform>
                <CompositeTransform/>
            </Image.RenderTransform>
        </Image>

private void img_intro_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
        {
            Image img = sender as Image;

            CompositeTransform ct = img.RenderTransform as CompositeTransform;

            ct.ScaleX *= e.Delta.Scale;
            ct.ScaleY *= e.Delta.Scale;

            if (ct.ScaleX < 1.0) ct.ScaleX = 1.0;
            if (ct.ScaleY < 1.0) ct.ScaleY = 1.0;
            if (ct.ScaleX > 4.0) ct.ScaleX = 4.0;
            if (ct.ScaleY > 4.0) ct.ScaleY = 4.0;

            ct.TranslateX += e.Delta.Translation.X;
            ct.TranslateY += e.Delta.Translation.Y;

            if (ct.TranslateY > (((img.ActualHeight * ct.ScaleY) - img.ActualHeight) / 2))
            {
                ct.TranslateY = (((img.ActualHeight * ct.ScaleY) - img.ActualHeight) / 2);
            }

            if (ct.TranslateY < 0 - ((((img.ActualHeight * ct.ScaleY) - img.ActualHeight)) / 2))
            {
                ct.TranslateY = 0 - ((((img.ActualHeight * ct.ScaleY) - img.ActualHeight)) / 2);
            }

            if (ct.TranslateX > (((img.ActualWidth * ct.ScaleX) - img.ActualWidth) / 2))
            {
                ct.TranslateX = (((img.ActualWidth * ct.ScaleX) - img.ActualWidth) / 2);
            }

            if (ct.TranslateX < 0 - ((((img.ActualWidth * ct.ScaleX) - img.ActualWidth)) / 2))
            {
                ct.TranslateX = 0 - ((((img.ActualWidth * ct.ScaleX) - img.ActualWidth)) / 2);
            }             
        }

这在没有 Flipview 的情况下运行良好。但是当我将它添加到翻转视图时,我将无法翻转到下一个项目或上一个项目。

任何建议如何解决这个问题?

4

1 回答 1

0

而不是使用操作增量将图像放在滚动查看器中,因为它不会每次都触发事件以在 ui 线程上进行操作。

尝试一些事情,比如

<Flipview>
<ScrollViewer MaxZoomFactor="4">
<Image>
</Image>
</Scrollviewer>
</Flipview>

由于 m 目前没有 IDE,因此这是最好的帮助,请尝试并告诉我。

于 2015-09-16T06:53:31.480 回答