#748 – 获得按下时对应位置点的大小(Getting the Size of a Contact Point during Raw Touch)

来源:互联网 发布:黑白网络官网 编辑:程序博客网 时间:2024/05/17 06:19

原文地址:https://wpf.2000things.com/2013/02/04/748-getting-the-size-of-a-contact-point-during-raw-touch/

在低级别的触屏Touch 事件中,我们可以获得手指与屏幕接触的位置的面积大小。获得这个信息可以通过TouchPoint.Bounds 属性(请注意,即使驱动层不支持,该属性也有值,可能会有为0的大小)。

下面是一个例子,在触摸的位置根据接触的大小画一个椭圆。

public partial class MainWindow : Window{    public MainWindow()    {        InitializeComponent();        TouchEllipses = new Dictionary<int, Ellipse>();    }     private Dictionary<int, Ellipse> TouchEllipses;     private void Canvas_TouchDown(object sender, TouchEventArgs e)    {        canvMain.CaptureTouch(e.TouchDevice);        TouchPoint tp = e.GetTouchPoint(canvMain);         Ellipse el = new Ellipse();        el.Stroke = Brushes.Black;        el.Fill = Brushes.Black;         el.Width = tp.Bounds.Width > 0 ? tp.Bounds.Width : 50;        el.Height = tp.Bounds.Height > 0 ? tp.Bounds.Height : 50;         Canvas.SetLeft(el, tp.Position.X - (el.Width / 2));        Canvas.SetTop(el, tp.Position.Y - (el.Height / 2));         canvMain.Children.Add(el);        TouchEllipses.Add(e.TouchDevice.Id, el);         e.Handled = true;    }     private void Canvas_TouchUp(object sender, TouchEventArgs e)    {        canvMain.Children.Remove(TouchEllipses[e.TouchDevice.Id]);        TouchEllipses.Remove(e.TouchDevice.Id);         e.Handled = true;    }}


阅读全文
0 0
原创粉丝点击