wpf 多点触控的问题
想请问下..wpf中的多点触控 当控件在惯性时如何能让控件不超过window边框(即得到和窗口的相对偏移) .在下方的代码即为开始惯性 但是我不知道该如何得到控件时时相对窗体的偏移,只能在惯性之后才能得到.
private void image_ManipulationInertiaStarting(object sender, ManipulationInertiaStartingEventArgs e)
{
e.TranslationBehavior = new InertiaTranslationBehavior();
e.TranslationBehavior.InitialVelocity = e.InitialVelocities.LinearVelocity;
//e.TranslationBehavior.DesiredDeceleration = 10.0 * 96.0 / (1000.0 * 1000.0);
e.TranslationBehavior.DesiredDeceleration = App.InteriaParam * 96.0 / (1000.0 * 1000.0);//数值越小惯性越大
e.ExpansionBehavior = new InertiaExpansionBehavior();
e.ExpansionBehavior.InitialVelocity = e.InitialVelocities.ExpansionVelocity;
e.ExpansionBehavior.DesiredDeceleration = 0.1 * 96 / 1000.0 * 1000.0;
e.RotationBehavior = new InertiaRotationBehavior();
e.RotationBehavior.InitialVelocity = e.InitialVelocities.AngularVelocity;
e.RotationBehavior.DesiredDeceleration = 720 / (1000.0 * 1000.0);
}
------解决方案--------------------
private void Window_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
Rectangle rectToMove = e.OriginalSource as Rectangle;
Matrix rectsMatrix = ((MatrixTransform)rectToMove.RenderTransform).Matrix;
//旋转
rectsMatrix.RotateAt(e.DeltaManipulation.Rotation, e.ManipulationOrigin.X, e.ManipulationOrigin.Y);
//缩放
rectsMatrix.ScaleAt(e.DeltaManipulation.Scale.X, e.DeltaManipulation.Scale.X,
e.ManipulationOrigin.X, e.ManipulationOrigin.Y
);
//移动
if (_IfBorder) //如果物体到达边框,我执行的是反弹操作,直接移动变量取反了,动作很生硬,要是想反弹动作平滑,自己在这写算法