WPF中有单独的触摸事件,也可以开启触摸消息。系统为了兼容老的应用程序,触摸消息会模拟成鼠标事件传递。某些应用场景,我们必须得获取到触摸面积才好开展我们的业务。下面整理几种获取触摸面积的方法。
WPF中提供的触摸事件有Touch
事件,Stylus
事件或者通过StylusPlugIns
注入。
一、通过触摸事件获取
在Touch
事件中,可以通过参数TouchEventArgs
获取。
//这个是Touch事件传递的参数
TouchEventArgs e;
var area = e.GetTouchPoint(null).Bounds;
//或者
var area = e.TouchDevice.GetTouchPoint(null).Bounds;
获取触摸的边界值,触摸面积也就是Size值。
二、通过触摸点获取
如果是通过Stylus
事件或者StylusPlugIns
,可以从StylusPoint
中获取。
//通过这种方式获取触摸点集
var stylusPoints= e.GetStylusPoints(null);
//stylusPointProperty 参数可以是 StylusPointProperties.Height 或者 StylusPointProperties.Width
public static double GetStylusPointProperty(StylusPoint stylusPoint, StylusPointProperty stylusPointProperty)
{
double value = 0.0;
//这里没有做限制是高度或者宽度属性,只做演示,可以自己加逻辑
if (stylusPoint.HasProperty(stylusPointProperty))
{
value = stylusPoint.GetPropertyValue(stylusPointProperty);
StylusPointPropertyInfo propertyInfo = stylusPoint.Description.GetPropertyInfo(stylusPointProperty);
if (!DoubleUtil2.AreClose(propertyInfo.Resolution, 0.0))
{
value /= propertyInfo.Resolution;
}
else
{
value = 0.0;
}
//属性值的单位
if (propertyInfo.Unit == StylusPointPropertyUnit.Centimeters)
{
value /= 2.54;
}
value *= 96.0;
}
return value;
}
本文会经常更新,请阅读原文: https://huchengv5.gitee.io//post/WPF-%E8%8E%B7%E5%8F%96%E8%A7%A6%E6%91%B8%E9%9D%A2%E7%A7%AF%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E6%B3%95.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名胡承(包含链接: https://huchengv5.gitee.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。