我将GestureListener
添加到图片中,我试图像这样的Stack Overflow回答一样放大:How to zoom in and zoom out Images in WP7?
问题是图像永远不会停止缩放,并且会覆盖页面上的其他控件。这包括页面上的一些重要按钮。
此外,它允许图像变得如此之小以至于很难使图像变得更大,并且允许图像离屏幕太远而太难以将图像带回来。
我的目标是: 将图像保留在分配给它的网格行中,不包括其他控件。 防止图像的宽度/高度变小 防止变得太大的宽度/高度 防止图像被拖出屏幕。
有没有办法解决这个问题? Image
对象的宽度/高度未被GestureListener
修改,因此我不能简单地执行
Image i = sender as Image;
if (i.Height == TOO_BIG)
return;
...
答案 0 :(得分:2)
此博客文章介绍了如何在图像上实现捏合/缩放缩放:http://alvaropeon.wordpress.com/2011/03/10/implementing-pinch-to-zoom-images-in-wp7/此处提供的解决方案是将原始大小限制为4倍,但您可以随意使用。如果您想将其约束为父级,那么只需将父级的 ActualWidth 和 ActualHeight 用作限制。
答案 1 :(得分:2)
我最终解决了这个问题并使其与以下博客中的代码完美配合:
http://www.frenk.com/2011/03/windows-phone-7-correct-pinch-zoom-in-silverlight/
这是一组令人印象深刻的Pinch / Zoom功能。关于覆盖其他控件的图像的问题是通过向网格添加剪辑来修复的,详细信息如下:
http://www.codeproject.com/Articles/36495/Silverlight-ClipToBounds-Can-I-Clip-It-Yes-You-Can.aspx
答案 2 :(得分:1)
我想你可以通过在下面的事件处理程序中限制transform.ScaleX
和transform.ScaleY
来实现。initialScale
< somelength,然后只做代码。
private void OnPinchDelta(object sender, PinchGestureEventArgs e)
{
transform.Rotation = initialAngle + e.TotalAngleDelta;
transform.ScaleX = initialScale * e.DistanceRatio;
transform.ScaleY = initialScale * e.DistanceRatio;
}