我正在编写一个通用应用程序,需要在ManipualtionDelta中正确处理操作惯性。操作时我得到正常值,但惯性部分总是为零(旋转和平移)。它只会在Windows Phone中发生这种情况,就像在Windows 8.1中它接缝一样。 为了防止出现问题,我设置了ManipulationModes.All。
答案 0 :(得分:2)
我测试了它。 Windows Phone 8.1中肯定存在惯性
<Grid>
<Ellipse Width="100"
Height="100"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Fill="White"
ManipulationDelta="Ellipse_ManipulationDelta"
ManipulationMode="All">
<Ellipse.RenderTransform>
<CompositeTransform />
</Ellipse.RenderTransform>
</Ellipse>
</Grid>
有了这个:
private void Ellipse_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
var trasnform = (sender as FrameworkElement).RenderTransform as CompositeTransform;
trasnform.TranslateX += e.Delta.Translation.X;
trasnform.TranslateY += e.Delta.Translation.Y;
}
不确定问题。希望我的代码有所帮助。
祝你好运!
答案 1 :(得分:1)
不要在惯性下使用Delta.Translation。它是一个计算值,取决于自上一个事件运行以来经过的时间量。通常第一个是(0,0)。
而是做这样的事情
if (e.IsInertial) {
ComputeMyOwnInertia(e.Velocities)
e.Complete(); // no more inertial events
}
速度为lpx / msec(每毫秒逻辑像素数) 将它乘以~400可得出惯性带给你的估计值。
答案 2 :(得分:0)
Windows Phone平台不支持以下项目:
http://technet.microsoft.com/en-us/windows/ff426933(v=vs.96)