【问题标题】:Zooming in and out in Grid, Images on WinRT (Metro style app)在网格中放大和缩小,WinRT 上的图像(Metro 风格应用程序)
【发布时间】:2012-08-30 06:23:28
【问题描述】:

我正在尝试在我的应用中实现一些东西,我需要显示一张图片,并让用户捏合和拉出图片。

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

【问题讨论】:

  • 我认为您所描述的是所谓的“语义缩放”,您可能会找到一些运气。
  • @LarryOsterman 否。语义缩放是一个概念,它对每条内容使用两个(或更多)级别的细节,而不是仅仅以图形方式缩小它。 msdn.microsoft.com/en-us/library/windows/apps/hh465319.aspx

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


【解决方案1】:

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

你可以明白我的意思here。这可能不是你想要的。但它肯定是一种简单的方法,可能适合一定百分比的场景。甚至可能是你的。

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

【讨论】:

  • 感谢您的回答,我已经尝试过了,但是您无法从后面的代码放大到某个点。为了澄清这个想法,我正在制作一张室内地图,我想突出显示并放大某些区域。
【解决方案2】:

查看 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);
        }
    }
}

【讨论】:

  • 我试过这个,对我来说效果不佳。我无法移植它。而且我认为有一个更简单的方法可以做到这一点,我之前看到有人做过,但那是在某个车间,我无法联系到那个人。
猜你喜欢
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多