gpt4 book ai didi

.net - ManipulationDelta - 只有 Translation 有值,Scale 和 Rotation 总是 'Identity'

转载 作者:行者123 更新时间:2023-12-04 04:34:24 25 4
gpt4 key购买 nike

我尝试使用 ManipulationDelta event 实现多点触控 ui(在棕地项目中) wpf 的。但我只得到平移的值,而不是缩放或旋转的值。

我的测试代码如下所示:

        Private Sub ScrollViewerViewModelManipulationDelta(sender As Object, e As Input.ManipulationDeltaEventArgs) Handles Me.ManipulationDelta

Dim transform As MatrixTransform = TryCast(RenderTransform, MatrixTransform)
If transform Is Nothing Then transform = New MatrixTransform(RenderTransform.Value)
Dim matrix As Matrix = transform.Matrix

If e.DeltaManipulation.Scale.X <> 1 OrElse e.DeltaManipulation.Scale.Y <> 1 Then
matrix.ScaleAt(e.DeltaManipulation.Scale.X,
e.DeltaManipulation.Scale.Y,
e.ManipulationOrigin.X,
e.ManipulationOrigin.Y)
End If
If e.DeltaManipulation.Translation.X <> 1 OrElse e.DeltaManipulation.Translation.Y <> 1 Then
'matrix.Translate(e.DeltaManipulation.Translation.X,
' e.DeltaManipulation.Translation.Y)
End If
If e.DeltaManipulation.Rotation <> 0 Then
matrix.RotateAt(e.DeltaManipulation.Rotation,
e.ManipulationOrigin.X,
e.ManipulationOrigin.Y)
End If

RenderTransform = New MatrixTransform(matrix)

If e.IsInertial Then
e.Complete()
End If

'e.Handled = True

End Sub

知道我在这里缺少什么吗?我尝试了缩放和旋转的手势,但我只得到翻译......

谢谢!
斯特凡

最佳答案

您必须调用 Manipulation.SetManipulationMode ManipulationStarted事件处理程序:

private void ScrollViewerViewModelManipulationStarted(
object sender, ManipulationStartedEventArgs e)
{
Manipulation.SetManipulationMode((UIElement)sender, ManipulationModes.All);
}

关于.net - ManipulationDelta - 只有 Translation 有值,Scale 和 Rotation 总是 'Identity',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20004620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com