我正在尝试在我的应用中实现某些功能,我需要显示图像,让用户捏进和缩出图像。
我认为可以使用ScrollViewer,但我无法让它工作,帮助?
答案 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);
}
}
}