如何显示一系列图像,而不会冻结整个程序几秒钟

时间:2015-07-06 16:51:26

标签: c# wpf image performance

我有以下问题:

我想在 c#中制作小二维游戏。 显示由多个图像组成的背景。为了使 GIF动画成为可能,我使用了 MediaElement 对象。 我将这些MediaElements添加到我的画布。 但是当我运行我的程序时,性能是一场灾难。显示图像几乎需要半分钟。

我显然需要更好的想法来显示图像数组,而不会减慢所有内容。

这是我的起点:

class BackgroundMediaElement : MediaElement
{

    public BackgroundMediaElement(string imageSourcePath, int rowInCanvas, int columnInCanvas, int lengthOfSquare)
    {
        this.UnloadedBehavior = MediaState.Manual;
        this.Source = new Uri(imageSourcePath, UriKind.Relative);

        Canvas.SetTop(this, rowInCanvas*lengthOfSquare);
        Canvas.SetLeft(this, columnInCanvas*lengthOfSquare);

        this.Play();

        this.MediaEnded += method_MediaEnded;
    }

    private void method_MediaEnded(object sender, RoutedEventArgs e)
    {
        //MediaElement m = (MediaElement)sender;
        this.Position = TimeSpan.FromMilliseconds(1);
    }
}

我创建了200多个元素并将它们添加到我的Canvas中。 但它甚至减缓了40个元素。 一个图像甚至没有一个KBy。

1 个答案:

答案 0 :(得分:2)

这根本不是您正在寻找的技术。您可以非常好地使用C#来制作游戏,但您应该寻找合适的Game Engine Unity支持2D游戏,并允许您在C#中进行编码。点击here了解详情。

专注于创造游戏,而不是与无关紧要的东西作斗争:)