在 Windows phone 8.1(运行时)中限制设备屏幕内的图像/控件拖动

Limit image / control drag within the device screen in Windows phone 8.1 (Runtime)

我正在开发 windows phone 8.1 应用程序。我有一个用户控件,并且我已经为同一控件注册了 manipulationdelta 事件处理程序。 我的控件的问题是

  1. 拖动时超出屏幕限制

  2. 如果我在上面设置一些限制,那么它也会超出右侧和底部的屏幕限制。

    double scaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
    
    void control_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
            {
                //transform.TranslateX += e.Delta.Translation.X;
                //transform.TranslateY += e.Delta.Translation.Y;
    
                transform.TranslateX = limit(transform.TranslateX + e.Delta.Translation.X, 0, Window.Current.Bounds.Width * scaleFactor);
                transform.TranslateY = limit(transform.TranslateY + e.Delta.Translation.Y, 0, Window.Current.Bounds.Height * scaleFactor);
            }
    
    double limit(double value, double min, double max)
            {
                if (value > max) return max;
                else if (value < min) return min;
                else return value;
            }
    

我想将我的控件拖动/操作限制在设备屏幕内。

您需要考虑控件的大小。换句话说,你必须用 Window 的宽度减去控件的宽度,并用 Window.

的高度减去控件的高度

顺便说一句,比例因子不是必需的,因为所有的测量已经在"Universal"像素中完成。

transform.TranslateX = limit(transform.TranslateX + e.Delta.Translation.X, 0, Window.Current.Bounds.Width - this.ActualWidth);
transform.TranslateY = limit(transform.TranslateY + e.Delta.Translation.Y, 0, Window.Current.Bounds.Height - this.ActualHeight);