在Windows Phone 8中实现多点触控和捏合缩放

3

我如何在Windows Phone 8中实现捏合缩放和多点触控功能?在我的应用程序中,我在网格中添加了3个图像容器,我需要在我的图像上执行上述操作。请有经验的开发者帮助我在我的应用程序中实现此功能。提前感谢您。

Stez


嗨Stez,我也在尝试在我的应用程序中实现多点触控,但是它不起作用。你解决了这个问题吗? - kartheek
是的,在我的环境中没有任何问题,主要问题在于市场提交。 我认为你面临的问题是缺少引用。 尝试添加所有依赖项并重新编译,它就能正常工作。 - StezPet
你正在使用哪个版本?我正在使用0.5.0,并且遵循了这个链接(http://www.galasoft.ch/touch/wp7/)。它报错“找不到类型MultiTouchBehavior”,而在版本0.6.7中没有安装选项,那么我该如何将.dll文件添加到我的应用程序中呢? - kartheek
您可以使用Codeplex上的最新构建版本,这里是链接http://multitouch.codeplex.com/SourceControl/changeset/view/97043。 - StezPet
1
请在发布模式下构建应用程序,然后从发布文件夹中获取dll。然后您可以将这些dll添加到您的项目中。 - StezPet
显示剩余2条评论
2个回答

2

现在他们为Windows Phone 8添加了新版本。 - StezPet

1

我的解决方案适用于WP7.5和WP8:

XAML代码

<StackPanel  x:Name="Scroll" Margin="0">
                    <Image  CacheMode="BitmapCache" Name="FrontCover"   Source="{Binding FullCover}"  >
                        <Image.RenderTransform>
                            <CompositeTransform x:Name="transform" ScaleX="1" ScaleY="1"  />
                        </Image.RenderTransform>
                        <toolkit:GestureService.GestureListener>
                            <toolkit:GestureListener   PinchDelta="OnPinchDelta" PinchStarted="OnPinchStarted" DragDelta="OnDragDelta"  />
                        </toolkit:GestureService.GestureListener>
                    </Image>
            </StackPanel>

double initialScale;
private void OnPinchStarted(object sender, PinchStartedGestureEventArgs e) { initialScale = transform.ScaleX; }
private void OnPinchDelta(object sender, PinchGestureEventArgs e) { var curZoom = initialScale * e.DistanceRatio; if (curZoom >= 1 && curZoom <= 3) { transform.ScaleX = curZoom; transform.ScaleY = curZoom;
} }
private void OnDragDelta(object sender, DragDeltaGestureEventArgs e) { transform.CenterX = (transform.CenterX - e.HorizontalChange); transform.CenterY = (transform.CenterY - e.VerticalChange);
if (transform.CenterX < 0) transform.CenterX = 0; else if ( transform.CenterX > Scroll.ActualWidth) transform.CenterX = Scroll.ActualWidth; else if (transform.CenterX > (FrontCover.Height * transform.ScaleX)) transform.CenterX = FrontCover.Height * transform.ScaleX;
if (transform.CenterY < 0) transform.CenterY = 0; else if (transform.CenterY > Scroll.ActualHeight) transform.CenterY = Scroll.ActualHeight; else if (transform.CenterY > (FrontCover.Height * transform.ScaleY)) transform.CenterY = FrontCover.Height * transform.ScaleY;
}

我认为这会对其他人有所帮助


GestureListener自2011年11月起已被弃用(http://www.jeff.wilcox.name/2011/11/nov2011phonetoolkit/)。 - William Melani
这不是实现多尺度图像的方式。 - StezPet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接