【问题标题】:Constraints on Image Width/Height on WP7 GestureListenerWP7 GestureListener 上的图像宽度/高度约束
【发布时间】:2011-03-31 23:04:48
【问题描述】:

我将GestureListener 添加到我想要缩放的图像中,此处堆栈溢出答案:How to zoom in and zoom out Images in WP7?

问题是图像不会停止缩放,并且会覆盖页面上的其他控件。这涵盖了页面上的一些重要按钮。

此外,它允许图像变得非常小以至于很难将其放大,并且允许图像离开屏幕太远以至于很难将其拉回来。

我的目标是: 将图像保留在分配给它的网格行中,以免覆盖其他控件。 防止图像的宽度/高度变小 防止宽度/高度过大 防止图像被拖出屏幕。

有没有办法解决这个问题? Image 对象的 Width/Height 没有被 GestureListener 修改,所以我不能简单地这样做

Image i = sender as Image;
if (i.Height == TOO_BIG)
return;
...

【问题讨论】:

    标签: c# xaml windows-phone-7


    【解决方案1】:

    这篇博文展示了如何在图像上实现 Pinch/Zoom 缩放:http://alvaropeon.wordpress.com/2011/03/10/implementing-pinch-to-zoom-images-in-wp7/ 那里提出的解决方案是将原始尺寸限制为 4 倍,但您可以随心所欲。如果您想将其限制为它的父级,则只需获取父级的 ActualWidthActualHeight 作为您的限制。

    【讨论】:

      【解决方案2】:

      我最终解决了这个问题,并让它与以下博客中的代码完美配合:

      http://www.frenk.com/2011/03/windows-phone-7-correct-pinch-zoom-in-silverlight/

      这是一组令人印象深刻的捏合/缩放功能。我遇到的关于覆盖其他控件的图像的问题是通过向网格添加剪辑来解决的,这在此处进行了详细说明:

      http://www.codeproject.com/Articles/36495/Silverlight-ClipToBounds-Can-I-Clip-It-Yes-You-Can.aspx

      【讨论】:

        【解决方案3】:

        我想你可以通过在下面的事件处理程序中限制 transform.ScaleXtransform.ScaleY 来做到这一点。如果 initialScale

        private void OnPinchDelta(object sender, PinchGestureEventArgs e)
            {
                transform.Rotation = initialAngle + e.TotalAngleDelta;
                transform.ScaleX = initialScale * e.DistanceRatio;
                transform.ScaleY = initialScale * e.DistanceRatio;
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-15
          • 2018-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多