如何在Xamarin.Forms中获取PanGesture事件的位置信息?
如何在Xamarin.Forms的PanGesture中获取手势的X、Y坐标?
在Xamarin.Forms的PanGestureRecognizer中,要获取手势的位置偏移信息,直接通过PanUpdatedEventArgs的内置属性即可实现,核心依赖以下两个属性:
TotalX:记录从手势开始到当前时刻的累计水平偏移量TotalY:记录从手势开始到当前时刻的累计垂直偏移量
同时可以通过GestureStatus属性判断手势所处的阶段(开始、持续、结束),方便针对性处理。以下是补全后的代码示例:
public MainPage() { InitializeComponent(); canvasView.PaintSurface += pictureboxpaint; var panGesture = new PanGestureRecognizer(); panGesture.PanUpdated += mousemove; picturebox.GestureRecognizers.Add(panGesture); } private void mousemove(object sender, PanUpdatedEventArgs e) { // 根据手势阶段做不同处理 switch (e.StatusType) { case GestureStatus.Started: // 手势开始时的初始化操作 break; case GestureStatus.Running: // 获取当前累计偏移量 double offsetX = e.TotalX; double offsetY = e.TotalY; // 这里可以用offsetX和offsetY做后续逻辑,比如更新Image的位置 // 示例:picturebox.TranslationX = offsetX; // picturebox.TranslationY = offsetY; break; case GestureStatus.Completed: // 手势结束时的收尾操作 break; } }
补充说明
- 如果需要获取手势相对于屏幕的绝对坐标,可以结合
VisualElement的X、Y属性(即Image元素在父容器中的位置),计算方式为:绝对X = picturebox.X + e.TotalX,绝对Y = picturebox.Y + e.TotalY TotalX和TotalY的偏移量是相对于手势开始时的初始位置计算的,每次手势开始时会重置为0
内容的提问来源于stack exchange,提问作者user22973130
相关产品推荐
相关产品推荐

