C# 影像翻译回归原点

C# 影像翻译回归原点,c#,image-processing,windows-phone-8.1,C#,Image Processing,Windows Phone 8.1,我有一个问题,互联网搜索没有提供任何帮助。 我试图在WP8.1上用C语言翻译一个图像 因此我使用了translate变换。在操纵增量事件中。 它可能会起作用,因为我实际上可以移动它几英寸,但它会在移动后返回原点。即使我把手指放在屏幕上 这个问题我已经解决了三天了,我无法解决。 如果你们能帮上忙,我们将不胜感激 代码见附件 void Isetta_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)

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

因此我使用了translate变换。在操纵增量事件中。 它可能会起作用,因为我实际上可以移动它几英寸,但它会在移动后返回原点。即使我把手指放在屏幕上

这个问题我已经解决了三天了,我无法解决。 如果你们能帮上忙,我们将不胜感激

代码见附件

    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中或初始化页面时设置一次转换,并使用相同的引用。这就是MSDN的功能。

你就是那个人,非常感谢你。解决方案提出后,我感觉自己就像一个前盲人第一次看到光明。