wpf 2-я высокопроизводительная графика

Ну, производительность Haml продолжает улучшаться с каждым выпуском. Это в приемлемом месте в текущее время? Это для Вас для решения (я склонен сказать "Да", но это - выбор на основе потребностей). Если Вам нравятся шаблоны и удобочитаемость, они обеспечивают, то отбрасывание производительности (однако незначительный) должно действительно быть заключительным фактором в Вашем решении.

Один из других инструментов, которых необходимо рассмотреть использование в сочетании с Haml, является make_resourceful, другим драгоценным камнем специалистом по обслуживанию Haml (Nathan Weizenbaum), который упрощает много УСПОКОИТЕЛЬНЫХ вещей в приложении для направляющих.

, Если бы Вы имеете дальше, более конкретные вопросы о Haml (и m_r), я уверен, что Nathan был бы более, чем рад ответить на них. Он может быть достигнут через Jabber/XMPP и электронную почту. Его контактная информация может быть найдена здесь .

7
задан Klay 28 September 2009 в 15:54
поделиться

2 ответа

Вот что я обнаружил:

Я создал класс, который является подклассом Image.

public class MyImage : Image {
    // the pixel format for the image.  This one is blue-green-red-alpha 32bit format
    private static PixelFormat PIXEL_FORMAT = PixelFormats.Bgra32;
    // the bitmap used as a pixel source for the image
    WriteableBitmap bitmap;
    // the clipping bounds of the bitmap
    Int32Rect bitmapRect;
    // the pixel array.  unsigned ints are 32 bits
    uint[] pixels;
    // the width of the bitmap.  sort of.
    int stride;

public MyImage(int width, int height) {
    // set the image width
    this.Width = width;
    // set the image height
    this.Height = height;
    // define the clipping bounds
    bitmapRect = new Int32Rect(0, 0, width, height);
    // define the WriteableBitmap
    bitmap = new WriteableBitmap(width, height, 96, 96, PIXEL_FORMAT, null);
    // define the stride
    stride = (width * PIXEL_FORMAT.BitsPerPixel + 7) / 8;
    // allocate our pixel array
    pixels = new uint[width * height];
    // set the image source to be the bitmap
    this.Source = bitmap;
}

WriteableBitmap имеет метод WritePixels, который принимает массив целых чисел без знака в качестве данных пикселей. Я установил источник изображения WriteableBitmap. Теперь, когда я обновляю данные пикселей и вызываю WritePixels, он обновляет изображение.

Я сохраняю данные бизнес-точки в отдельном объекте в виде списка точек. Я выполняю преобразования в списке и обновляю данные пикселей с преобразованными точками. Таким образом, нет накладных расходов от объектов Geometry.

К вашему сведению, я соединяю свои точки с линиями, нарисованными с помощью так называемого алгоритма Брезенхема.

Этот метод чрезвычайно быстрый. Я обновляю около 50 000 точек (и соединительных линий) в ответ на движения мыши без заметного отставания.

5
ответ дан 7 December 2019 в 10:04
поделиться

Here's a blog post on using Web cameras with InteropBitmap. It includes a full source code project demonstrating the InteropBitmap's usage.

1
ответ дан 7 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: