Нужно что-то, чтобы быстро рисовать много изображений в WPF

Я работаю над Генератором клеточных автоматов в .NET 3.5. Я решил использовать WPF, потому что хотел узнать что-то новое о WPF.

Я рисую Одномерные автоматы, такие как Правило 30, и Двумерные, например Жизнь .

Мне нужно что-то, чтобы быстро нарисовать много изображений.

] Например, размер сетки составляет 64 x 64, а размер ячейки - 12 пикселей. Итак, я рисую 64 * 64 = 4096 изображений за один шаг. И интервал между одним шагом составляет около 100 мс.

Я переписываю свое приложение на WinForms, и все в порядке. Но в WPF это медленно, и я не знаю почему.


Мой пример рисования в WPF:

У меня есть класс, производный от Image. В этом классе я рисую растровое изображение и использую его в свойстве Source.

        public void DrawAll()
    {

        DrawingGroup dg = new DrawingGroup();


        for (byte i = 0; i < this.DimensionX; ++i)
        {

            for (byte j = 0; j < this.DimensionY; ++j)
            {

                Piece p = this.Mesh[i][j];

                Rect rect = new Rect(j * this.CellSize + (j + 1), i * this.CellSize + (i + 1),
                    this.CellSize, this.CellSize);

                ImageDrawing id = new ImageDrawing();
                id.Rect = rect;

                if (p == null)
                    id.ImageSource = this._undefinedPiece.Image.Source;
                else
                    id.ImageSource = p.Image.Source;


                dg.Children.Add(id);


            }

        }

        DrawingImage di = new DrawingImage(dg);

        this.Source = di;

    }

Второй пример рисования в WPF:

Я унаследовал класс от Canvas и переопределил функцию OnRender. На основе этой статьи: http: // sachabarber.

  • Кто первым упомянул Инверсия контейнера управления ?
  • Какой публичный контейнер IoC появился первым?

5
задан Matt Ball 16 February 2011 в 21:30
поделиться