当前位置: 首页 > news >正文

Xamarin.Forms菜鸟笔记--10.获取点击/滑动 Image位置

当点击一个Image标签的图片时,获取点击此图片的坐标位置
在Form中创建继承自Image的类

public class CustomImage : Image
{/// <summary>/// 点击/// </summary>public event Action<double, double> OnTapped;/// <summary>/// 滑动/// </summary>public event Action<double, double, double, double> OnSlide;/// <summary>/// /// </summary>/// <param name="x"></param>/// <param name="y"></param>public void RaiseTapped(double x, double y){OnTapped?.Invoke(x, y); // 触发点击位置事件}/// <summary>/// /// </summary>/// <param name="dx"></param>/// <param name="dy"></param>/// <param name="ux"></param>/// <param name="uy"></param>public void RaiseSlide(double dx, double dy, double ux, double uy){OnSlide?.Invoke(dx, dy,ux,uy); // 触发滑动事件}
}

在xaml中使用

xmlns:c="clr-namespace:abc.Controls"
<c:CustomImage Source="" x:Name="BackImg" HorizontalOptions="Start" VerticalOptions="FillAndExpand" OnTapped="HandleImageTapped" OnSlide="HandleImageSlide" />

在安卓中实现

[assembly: ExportRenderer(typeof(CustomImage), typeof(CustomImageRender))]
namespace abc.Droid.Render
{public class CustomImageRender : ImageRenderer{public CustomImageRender(Context context) : base(context) { }protected override void OnElementChanged(ElementChangedEventArgs<Image> e){base.OnElementChanged(e);if (e.NewElement != null){this.Touch += OnTouch;this.Touch += OnSlide;}if (e.OldElement != null){this.Touch -= OnTouch;this.Touch += OnSlide;}}private void OnTouch(object sender, TouchEventArgs e){if (e.Event.Action == MotionEventActions.Up){var x = e.Event.GetX();var y = e.Event.GetY();var customImage = (CustomImage)Element;customImage?.RaiseTapped(x, y);}}private void OnSlide(object sender, TouchEventArgs e){if (e.Event.Action == MotionEventActions.Up){var x = e.Event.GetX();var y = e.Event.GetY();var customImage = (CustomImage)Element;customImage?.RaiseSlide(0,0,x, y);}else if (e.Event.Action == MotionEventActions.Down){var x = e.Event.GetX();var y = e.Event.GetY();var customImage = (CustomImage)Element;customImage?.RaiseSlide( x, y, 0, 0);}}}
}
http://www.dtcms.com/a/544784.html

相关文章:

  • 网络环路“侦探”指南:如何快速定位与根除网络风暴
  • Android 自定义Switch
  • HBuilder 上架 iOS 应用全流程指南:从云打包到开心上架(Appuploader)上传的跨平台发布实践
  • PHP基础知识
  • Obsidian 入门教程
  • 响应式购物网站模板广州网站优化电话
  • 中山 网站建设 骏域做ag视频大全网站
  • Vue二进制数据渲染成图片
  • 未来智能网联汽车的网络安全档案建立方法
  • 防止表单重复提交功能简单实现
  • 网络安全等级保护测评高风险判定实施指引(试行)--2020与2025版对比
  • Squid 可观测性最佳实践
  • 【深度学习新浪潮】DeepSeek-OCR深度解析:视觉-文本压缩驱动的新一代OCR技术革命
  • 官方网站建设投标书网站建设包含哪些
  • 相应式手机网站建设网站建设专员一定要会网站建设吗
  • 手机云台ESD整改案例-阿赛姆电子
  • 拆解ASP.NET MVC 核心优势:松耦合、易测试、SEO 友好、RESTful 实战指南
  • 远期合约和期权合约的区别是什么?
  • 2025年国内数字化档案管理软件选型速览
  • 基于FPGA的雷达信号处理设计工具包分享
  • 基于MATLAB的多机器人编队控制系统设计与实现
  • 网站建设计划表模板西安的网站设计单位
  • linux Debian 12 安装 Docker(手动)
  • 天津网站建设培训wordpress网页如何公开
  • 从零到一:用仓颉语言打造你的第一个鸿蒙应用
  • VUE的“单向数据绑定” 和 “双向数据绑定”
  • Profile-Guided Optimization(PGO):Rust 性能优化的终极武器
  • 仓颉FFI实战:C/C++互操作与性能优化
  • FAQ09934:相机prevew时候出现水印问题
  • 基于XML方式的声明式事务管理 -》某配置文件解读