WPF Image触摸移动方法

   1:  TouchPoint mPoint = null;
   2:  double mOffsetX;//水平滚动条当前位置
   3:  double mOffsetY;//垂直滚动条当前位置
   4:  bool mIsTouch = false;//是否触摸
   5:  //触摸事件
   6:  private void mScrollViewer_TouchDown(object sender, TouchEventArgs e)
   7:  {
   8:      mIsTouch = true;//正在触摸
   9:      mOffsetX = this.mScrollViewer.HorizontalOffset;//获取ScrollViewer滚动条当前位置
  10:      mOffsetY = this.mScrollViewer.VerticalOffset;//获取ScrollViewer滚动条当前位置
  11:      mPoint = e.GetTouchPoint(mScrollViewer);//获取相对于ScrollViewer的触摸点位置
  12:  }
  13:   
  14:  //触摸移动事件
  15:  private void mScrollViewer_TouchMove(object sender, TouchEventArgs e)
  16:  {
  17:      if (mIsTouch == true)//如果正在触摸
  18:      {
  19:          TouchPoint point = e.GetTouchPoint(mScrollViewer);//获取相对于ScrollViewer的触摸点位置
  20:          double DiffOffsetX = point.Position.X - mPoint.Position.X;//计算相对位置
  21:          double DiffOffsetY = point.Position.Y - mPoint.Position.Y;//计算相对位置
  22:          this.mScrollViewer.ScrollToHorizontalOffset(mOffsetX - DiffOffsetX);//ScrollViewer滚动到指定位置
  23:          this.mScrollViewer.ScrollToVerticalOffset(mOffsetY - DiffOffsetY);//ScrollViewer滚动到指定位置
  24:      }
  25:  }
  26:   
  27:  //触摸结束事件
  28:  private void mScrollViewer_TouchUp(object sender, TouchEventArgs e)
  29:  {
  30:      mIsTouch = false;//触摸结束
  31:  }

WPF Image触摸移动方法,布布扣,bubuko.com

时间: 2024-12-28 15:05:01

WPF Image触摸移动方法的相关文章

WPF 多点触摸开发[2]:WPF触摸的几个手势的执行顺序

原文:WPF 多点触摸开发[2]:WPF触摸的几个手势的执行顺序 前面我讲了在win7下使用模拟器,进行调试模拟多点触摸,其实际开发中这样也比较麻烦.. 要拿几个鼠标. 所以更多的人会 买个触摸套 套在显示屏上. 这样可支持 2点触摸. 又没有正真触摸屏的昂贵,价格也相对优惠很多. 接下来进入正题 . WPF其实本身对触摸事件就支持. 其中有些高及触屏的操作的手势路由事件. 大大增强了用户体验性. 使得我们能做出类似iphone手机的的触控效果.并使之这些柔和的效果 移植到桌面触摸应用上. 首先

WPF 获得触摸精度和触摸点

原文:WPF 获得触摸精度和触摸点 本文主要告诉大家如何获得所有的触摸设备的触摸精度和触摸点数. 需要通过反射的方法才可以拿到触摸的精度. 使用 Tablet.TabletDevices 可以获得所有的触摸设备,获得触摸点数可以通过下面代码 foreach (TabletDevice device in Tablet.TabletDevices) { Console.WriteLine("触摸点数" + device.StylusDevices.Count);//触摸点数 } 触摸精度

WPF入门教程系列(二) 深入剖析WPF Binding的使用方法

WPF入门教程系列(二) 深入剖析WPF Binding的使用方法 同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProperty)只能拥有一个binding. 这一点可以通过设置binding对象的方法名得知: public static BindingExpressionBase SetBinding( DependencyObject target, DependencyProperty dp, BindingB

ios的hitTest方法以及不规则区域内触摸事件处理方法

ios的hitTest方法以及不规则区域内触摸事件处理方法 概述 在正常的使用场景中,我们处理了比较多的矩形区域内触摸事件,比如UIButton.UIControl.一般来说,这些控件的图形以及触摸区域都是矩形或者圆角矩形的.但是在一些特殊应用场景中我们有时不得不面对这样一种比较严苛的需求,比如要求程序只对某个圆形.五角形等非常规区域的点击事件进行处理,这就需要花点功夫了.本文以圆形为例子来介绍此类场景的处理方法. 先看下面一张图(附图1),我们的目标是实现如下自定义tabbar.中间带突起圆形

WPF关闭应用程序方法

很多人认为关闭应用程序应该很简单,例如WindowsForm里一个Application.Exit();方法就可以解决问题,但在WPF里面可别滥用,因为WPF里Application类没有该方法,倒是有一个Exit的事件驱动,在WPF应用程序里面关闭程序讲究很多: 在WPF应用程序的关闭是有ShutdownMode属性设置,具有3中枚举类型的值: 1)OnLastWindowClose 应用程序最后一个窗体关闭时关闭应用程序 2)OnMainWindowClose 应用程序主窗体关闭时关闭应用程

WPF 利用Process.Start()方法启动指定路径下的exe文件并传递参数接收参数

WPF 利用Process.Start()方法启动指定路径下的exe文件并传递参数接收参数 在开发中遇到这样一个需求:WPF程序A启动WPF程序B并且传递参数,WPF程序B接收参数并处理. 如何来实现这样的需求呢,网络上已经有很多的文章描述这个问题,在这里做个记录. 首先通过如下代码启动WPF客户端B: private void ActionStartClientExcute() { var address = "exe位置"; Process process = new Proces

WPF中三种方法得到当前屏幕的宽和高

原文:WPF中三种方法得到当前屏幕的宽和高 WPF程序中的单位是与设备无关的单位,每个单位是1/96英寸,如果电脑的DPI设置为96(每个英寸96个像素),那么此时每个WPF单位对应一个像素,不过如果电脑的DPI设备为120(每个英寸120个像素),那此时每个WPF单位对应应该是120/96=1.25个像素 一般在程序中我们常常需要得到当前屏幕的宽和高,常见做法有: 1.这两个方法可以返回当前屏幕选择的分辨率,该分辨率是以像素为单位,在DPI为96的情况下我们可以利用它们来做一些控件的定位,因为

WPF中TreeView.BringIntoView方法的替代方案

原文:WPF中TreeView.BringIntoView方法的替代方案 周银辉 WPF中TreeView.BringIntoView()方法并不是那么地好用,不少时候会没有效果,这里有一个替代方案,调用SelectItem()方法可以展开并呈现TreeView上指定的Item: public static class TreeViewHelper { /// <summary> /// Expands all children of a TreeView /// </summary&g

在WPF中使用变通方法实现枚举类型的XAML绑定

问题缘起 WPF的分层结构为编程带来了极大便利,XAML绑定是其最主要的特征.在使用绑定的过程中,大家都普遍的发现枚举成员的绑定是个问题.一般来说,枚举绑定多出现于与ComboBox配合的情况,此时我们希望实现的目标有: 建立选择项与ItemsSource的对应关系: 自动获取用于ItemsSource的枚举源: 自定义下拉框中显示的内容. 对于目标1,考虑最简单的模式,即枚举的定义采用从0开始的连续整数,可以使用IValueConverter接口来实现从枚举到整型的双向转换,以使得枚举成员绑定