You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:42:10