基础触屏
1多点触屏(Multi_Touch).
Multi-TouchGesture(通过轴来实现)/All Point(互电容)
多指多人同时操作
个性化
2.Multi-Touch Vista(多点触屏模拟)
下载地址: http://Multitouchvista.codeplex.com
解压后,运行Driver:installdriver.com
设置计算机管理-设备管理-Universal SoftWare HID Device -Disabled -anled
运行Multitouch.Service.Console.exe(运行后不要关闭)
运行Multitouch.Driver.Console.exe
运行Multitouch.Configuration.WPF.exe
注意事项:Driver Publisher Warning (选择继续)
Universal Software HID device (重新启用一下)
3.基本触屏操作:
Raw Touch:基本触屏;
触碰:Touch Down
分离:Touch up
移动:Touch Move
Demo:
Private Dictionary<int, Ellipse >movingEllipses=new Dictionary<int, Ellipse >();
Private Random rand=new Random();//用于生成随机数
Private void touchpad_TouchDown(objectssender,TouchEventsASrgs e)
{
Ellipse ellipse=new Ellipse();当手触摸的时候产生一个圆圈
ellipse.Width=30;圆宽
ellipse.Height=30;圆高
ellipse.Stroke=Brushes.Write;边框颜色
ellipse.Fill=new SolidColorBrush(Corlor.FromRgb((byte).rand.Next(0,255),(byte).rand.Next(0,255), (byte).rand.Next(0,255)));生成随机数
TouchPoint touchpoint=e.GetTouchPoint(this.Grid1);
Canvas.SetTop(ellipse,touchpiont.Bounds.Top);
Canvas.SetLeft(ellipse,touchpiont.Bounds.Left);
movingEllipses[e.TouchDevice.Id]=ellipse;、、保存每个圆圈和ID
touchpad.Children.Add(ellipse);//把圆圈加到touchpad中(touchpad是一个Grid)
}
Private void touchpad_TouchUp(objectssender,TouchEventsASrgs e)
{
//把圆圈移除掉
Ellipseellipse= movingEllipses[e.TouchDevice.Id];
Touchpad.Children.Remove(ellipse);
movingEllipses.Remove(ellipse);
}
Private void touchpad_TouchMove(objectssender,TouchEventsASrgs e)
{
Ellipseellipse= movingEllipses[e.TouchDevice.Id];
TouchPionttouchpiont=e.GetTouchPiont(touchpad);
Canvas.SetTop(ellipse,touchpiont.Bounds.Top);
Canvas.SetLeft(ellipse,touchpiont.Bounds.Left);
}
高级触屏操作:(旋转,缩放,移动)
高级触屏5种状态:
ManipulationStarting 开始
ManipulationStarted 开始状态
ManipulationDelta 持续状态
ManipulationInertiaStarting惯性
ManipulationCompleted完成
Expression Blend4:
<CanvasX:Name=”touchpad” ------------à// image 要设置成支持多点触屏操作
<image Canvas.Top=”” Canvas.Left=”” source=” ”IsmanipulationEnabled=”true”>
<Image.Rendtransform>
<MatrixTransform></MatrixTransform>
</Image.Rendtranform>
</image>
<image Canvas.Top=”” Canvas.Left=”” source=” ”></image>
<image Canvas.Top=”” Canvas.Left=”” source=” ”></image>
</Canvas>
Private voidtouchpad_manipulationStarting(objects sender,TouchEventsASrgs e)
{
e.ManipulationContainer=this.touchpad;//定义容器
e.Mode=ManipulationModes.All;//定义在容器当中我们都可以做什么操作,选择了All说明什么都可以做
}
Private voidtouchpad_manipulationDelta(objects sender,TouchEventsASrgs e)
{
FrameWorkElementelement=( FrameWorkElement)e.Source;
Element.Opacoty=0.5;
//存放所有操作状态
Matrix matrix=((MatrixTransform)element.Rendtransform).Matrix;
//得到中心点
Point center=newPiont (element.ActualWidth/2,element.ActualHGeight/2);
Center=matrix.Transform(Center);//变化的中心点
//缩放
Matrix.ScaleAt(e.DeltaManipulation.Scal.X,e.DeltaManipulation.Scal.Y,center.X,center.Y);
//旋转
Matrix.RotateAt(e.DeltaManipulation.Rotation,center,x,center.y);
//移动
Matrix.translate(e.DeltaManipulation.Translation.X,e.DeltaManipulation.Translation.Y);
((MatrixTransform)element.RenderTransform).Matrix=matrix;
}
Private voidtouchpad_manipulationCompleted(objects sender,TouchEventsASrgs e)
{
FrameworkElementelement=( FrameworkElement)e.Source;
Element.Opcity=1;
}
//添加惯性状态,使其有物理特性
Private voidtouchpad_manipulationInertiastarting(objects sender,TouchEventsASrgs e)
{
e.TranslationBehavior=newInertiaTranslationBehavor();
e.TranslationBehavor.InitiaVelocity=e.InitiaVelocities.LinearVelocity//初始速度,线性运动
e.TranslationBehavor .DesiresDeceleration=10.0*96.0/(1000.0*1000.0)//减速状态
e.TranslationBehavior=new InertiaExpansionBehavor();//平移
e.TranslationBehavor.InitiaVelocity=e.InitiaVelocities.LinearVelocity//初始速度,线性运动
e.TranslationBehavor .DesiresDeceleration=10.0*96.0/(1000.0*1000.0)//减速状态
e.ExpansionBehavior=newInertiaTranslationBehavor();//缩放
e.ExpansionBehavior.InitiaVelocity=e.InitiaVelocities.LinearVelocity//初始速度,线性运动
e.ExpansionBehavior.DesiresDeceleration=10.0*96.0/(1000.0*1000.0)//减速状态
e.RotationBehavior=newInertiaRotationBehavor();//旋转
e.RotationBehavior.InitiaVelocity=e.InitiaVelocities.LinearVelocity//初始速度,线性运动
e.RotationBehavior.DesiresDeceleration=10.0*96.0/(1000.0*1000.0)//减速状态
}