2009-05-22 4 views
1

В прошлом я использовал несколько методов для рисования изображений в Windows.Forms, и теперь я пересматриваю некоторые основные библиотеки, которые обрабатывают изображения изображений для нашего продукта. Я заинтересован в том, чтобы несколько раз рисовать одно и то же изображение (черепичный) для представления поля фонового управления. Предполагая, что изображение точно соответствует размеру (без масштабирования) и содержит только часть, которую нужно выложить, какой самый быстрый способ рисования этого изображения для экрана?Каков самый быстрый способ рисовать изображение в Windows.Forms?

Одна из оптимизаций, которые я использовал, - это преобразование изображения в PixelFormat.Format32bpp P Argb, который предварительно вычисляет некоторые из альфа-каналов.

Есть ли разница в производительности между DrawImage и DrawImageUnscaled?

Ищите опыт реального мира, а не документированные ожидания.

Обновление: После копания вокруг классов фреймворка я вижу, что класс Control использует TextureBrush, используя изображение, которое должно быть выложено. Это выглядит многообещающе.

ответ

1

Если вы хотите p/invoke, BitBlt. Если нет, DrawImageUnscaled просто отлично.

+0

DrawImageUnscaled фактически масштабирует изображение ... как это может быть быстрее, чем DrawImage? –

+0

У вас есть обратное - DrawImageUnscaled не будет масштабировать изображение, на самом деле нет параметров для управления размером цели (за исключением указания размера источника). – overslacked

+0

Да ... хотелось бы, чтобы это было правдой. Документы заявляют иначе, и при тестировании он показывает иначе. Посмотрите на фактический код для DrawImageUnscaled, просто вызывает DrawImage напрямую. –

Смежные вопросы