我正在尝试在我的应用程序中实现一些东西,我需要显示一个图像,并让用户捏入和捏出图像。
我认为它可以使用 ScrollViewer,但我无法让它工作,帮助?
我正在尝试在我的应用程序中实现一些东西,我需要显示一个图像,并让用户捏入和捏出图像。
我认为它可以使用 ScrollViewer,但我无法让它工作,帮助?
我不想过分简化这一点,但 WinRT XAML ScrollViewer 内置了手势操作。
你可以在这里看到我的意思。这可能不是你想要的。但它肯定是一种简单的方法,可能适合一定百分比的场景。也许甚至是你的。
在合成中包含 ScrollViewer 的控件通常会在默认模板和启动视觉状态中设置 ZoomMode 的值,您通常会从这个模板化值开始。将 ScrollViewer 作为其组成部分的控件通常使用模板绑定,以便在控件级别设置附加属性将更改控件内 ScrollViewer 部分的滚动行为。否则,可能需要替换模板才能更改 ScrollViewer 部件的滚动行为。
查看 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);
}
}
}