在 Windows phone 8.1(运行时)中限制设备屏幕内的图像/控件拖动
Limit image / control drag within the device screen in Windows phone 8.1 (Runtime)
我正在开发 windows phone 8.1 应用程序。我有一个用户控件,并且我已经为同一控件注册了 manipulationdelta 事件处理程序。
我的控件的问题是
拖动时超出屏幕限制
如果我在上面设置一些限制,那么它也会超出右侧和底部的屏幕限制。
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);
我正在开发 windows phone 8.1 应用程序。我有一个用户控件,并且我已经为同一控件注册了 manipulationdelta 事件处理程序。 我的控件的问题是
拖动时超出屏幕限制
如果我在上面设置一些限制,那么它也会超出右侧和底部的屏幕限制。
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);