#741 – 使用触摸事件移动控件(Using Touch Manipulation Events to Translate an Element)
来源:互联网 发布:淘宝卖家互刷平台 编辑:程序博客网 时间:2024/06/06 23:16
原文地址:https://wpf.2000things.com/2013/01/24/741-using-touch-manipulation-events-to-translate-an-element/
你可以通过使用触摸操作事件在屏幕上移动控件。让控件随着手指的移动在屏幕上移动。
首先,需要设置需要接收触摸操作事件的控件的IsManipulationEnabled 属性为true ,来开启控件接收触摸操作事件。同时还要为ManipulationStarting 和ManipulationDelta 事件注册事件处理函数。
<Canvas Name="canvMain" Background="Transparent"> <Image Source="JamesII.jpg" Width="100" IsManipulationEnabled="True" RenderTransform="{Binding ImageTransform}" ManipulationStarting="Image_ManipulationStarting" ManipulationDelta="Image_ManipulationDelta"/></Canvas>
上面的代码中,允许用户通过手指移动图像。我们绑定图片控件的
RenderTransform
属性为一个MatrixTransform 类型的实例(后面在代码中定义)。该实例包含一个控制图像“缩放”、“旋转”和“位移”的矩阵。在我们这个例子中,我们只在ManipulationDelta事件中修改矩阵控制位移部分的矢量。public partial class MainWindow : Window, INotifyPropertyChanged{ public MainWindow() { InitializeComponent(); this.DataContext = this; ImageTransform = new MatrixTransform(); // XAML中绑定的MatrixTransform 实例 } private MatrixTransform imageTransform; public MatrixTransform ImageTransform { get { return imageTransform; } set { if (value != imageTransform) { imageTransform = value; RaisePropertyChanged("ImageTransform"); } } } private void Image_ManipulationStarting(object sender, ManipulationStartingEventArgs e) { // Ask for manipulations to be reported relative to the canvas e.ManipulationContainer = canvMain; } private void Image_ManipulationDelta(object sender, ManipulationDeltaEventArgs e) { ManipulationDelta md = e.DeltaManipulation; // 获取当前操作的最新更改 Vector trans = md.Translation; //获取操作在屏幕上水平和垂直移动信息 // Update matrix to reflect translation Matrix m = imageTransform.Matrix; m.Translate(trans.X, trans.Y); // 设置图像在屏幕上的水平和垂直移动距离 imageTransform.Matrix = m; RaisePropertyChanged("ImageTransform"); e.Handled = true; } public event PropertyChangedEventHandler PropertyChanged; private void RaisePropertyChanged(string prop) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(prop)); }}
阅读全文
0 0
- #741 – 使用触摸事件移动控件(Using Touch Manipulation Events to Translate an Element)
- Responding to Touch Events 响应触摸事件
- #747 –在WPF程序的触摸操作中使用惯性移动 (Implementing Inertia during Touch Manipulation)
- starling教程-触摸事件(Touch Events)
- starling教程-触摸事件(Touch Events)
- html5移动端触摸事件touch
- Using Touch Gestures//使用触摸手势
- #686 – 使用动画是控件具有闪烁效果(Using Animation to Make an Image Pulse)
- android 在ViewGroup中处理触摸事件 [Managing Touch Events in a ViewGroup]
- Android inject input events 注入Touch 点(x, y) 触摸输入事件
- Android Touch 触摸事件
- UIScrollView touch 触摸事件
- js 触摸事件 touch
- 【Touch】触摸事件onTouch
- touch触摸事件
- 移动端开发 原生touch事件使用
- #742&743 –使用触摸事件旋转和缩放控件
- Using Intents to Broadcast Events
- HTMLPurifier laravel 过滤输入文本防止XSS攻击安装使用
- Android初体验1
- LeetCode 474 Ones and Zeroes 题解
- 冒泡排序
- 如何自学思维导图
- #741 – 使用触摸事件移动控件(Using Touch Manipulation Events to Translate an Element)
- MySQL乱码问题以及utf8mb4字符集
- 【easyui】treeGrid显示树形结构
- pt-online-schema-change 使用介绍
- 使用tcpdump抓取Android系统手机数据包
- 生物进化思想与程序设计思想的比较
- myecplise整体环境配置
- scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld
- Kafka相关技术文档