放大和缩小网格,WinRT上的图像(Metro风格应用程序)

时间:2012-05-01 07:01:32

标签: xaml windows-8 windows-runtime winrt-xaml

我正在尝试在我的应用中实现某些功能,我需要显示图像,让用户捏进和缩出图像。

我认为可以使用ScrollViewer,但我无法让它工作,帮助?

2 个答案:

答案 0 :(得分:3)

我讨厌过度简化这一点,但WinRT XAML ScrollViewer内置了手势操作。

你可以看到我的意思here。这可能不是你想要的。但它肯定是一种简单的方法,可能适合某种情况。也许甚至是你的。

  

在合成中包含ScrollViewer的控件通常会在默认模板中为ZoomMode设置一个值并启动可视状态,而这通常是您开始使用的模板化值。使用ScrollViewer作为其合成的一部分的控件通常使用模板绑定,以便在控件级别设置附加属性将更改控件中ScrollViewer部件的滚动行为。否则,可能需要替换模板以更改ScrollViewer部件的滚动行为。

答案 1 :(得分:1)

查看Morten Nielsen关于Building A Multi-Touch Photo Viewer Control的文章。它适用于Silverlight / Windows Phone,但是如果您只是对图像进行操作并在操作事件中更改一些类型 - 它应该可以正常工作。

一个可能足够你的简单解决方案就是将图像放在ScrollViewer中,虽然看它工作 - 你需要一个触摸屏或在模拟器中运行它(使用捏工具,然后拖动和滚动要放大/缩小的图像。

您也可以使用代码缩放它:

<Grid
    Background="{StaticResource ApplicationPageBackgroundBrush}">
    <ScrollViewer
        x:Name="myScrollViewer">
        <Image
            Source="/Assets/SplashScreen.png" />
    </ScrollViewer>
</Grid>

public BlankPage()
{
    this.InitializeComponent();
    myScrollViewer.ZoomMode = ZoomMode.Enabled; // default
    Test();
}

private async void Test()
{
    while (true)
    {
        for (double x = 0; x < 2 * Math.PI; x += Math.PI / 30)
        {
            await Task.Delay(1000 / 30);
            float factor = (float)(1.0 + Math.Sin(x) / 10);
            myScrollViewer.ZoomToFactor(factor);
        }
    }
}