图像翻译 returns 到原点

Imaging Translation returns to origin

我有一个问题,互联网搜索没有提供任何帮助。 我正在尝试用 C#(在 WP8.1 上)翻译图像。

因此我使用了翻译transform()。在 ManipulationDelta 事件中。 它可能会起作用,因为我实际上可以将它移动几英寸,但它 returns 刚好到原点。 (即使我将手指放在屏幕上)

我已经遇到这个问题 3 天了,我无法修复它。 如果你们能提供任何帮助,我们将不胜感激。

(代码附后)

    void Isetta_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        //Actually moving the UI Element

        TranslateTransform tt = new TranslateTransform();
        tt.X += e.Delta.Translation.X;
        tt.Y += e.Delta.Translation.Y;

        Isetta.RenderTransform = tt;

        //Isetta.Height *= e.Delta.Scale;
        //Isetta.Width *= e.Delta.Scale;




    }

您正在为每一帧创建一个新的变换并丢弃旧信息。您应该只创建一次转换并重新使用它。

您可以检查 Isetta.RenderTransform 是否已经是一个 TranslateTransform,如果不是则替换它。类似于:

TranslateTransform tt = Isetta.RenderTransform as TranslateTransform;
if (tt == null) 
{
    tt = new TranslateTransform();
    Isetta.RenderTransform = tt;
}
tt.X += e.Delta.Translation.X;
tt.Y += e.Delta.Translation.Y;

或者您可以只在 Xaml 中或在初始化页面时设置一次转换,并使用相同的引用。这就是 Using manipulation events section in MSDN's Quickstart: Touch input 所做的。