2

我正在尝试在我的应用程序中实现一些东西,我需要显示一个图像,并让用户捏入和捏出图像。

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

4

2 回答 2

3

我不想过分简化这一点,但 WinRT XAML ScrollViewer 内置了手势操作。

你可以在这里看到我的意思。这可能不是你想要的。但它肯定是一种简单的方法,可能适合一定百分比的场景。也许甚至是你的。

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

于 2012-08-29T22:23:28.570 回答
1

查看 Morten Nielsen 关于构建多点触控照片查看器控件的文章。它适用于 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);
        }
    }
}
于 2012-05-01T09:27:12.247 回答