В прошлом я использовал несколько методов для рисования изображений в Windows.Forms, и теперь я пересматриваю некоторые основные библиотеки, которые обрабатывают изображения изображений для нашего продукта. Я заинтересован в том, чтобы несколько раз рисовать одно и то же изображение (черепичный) для представления поля фонового управления. Предполагая, что изображение точно соответствует размеру (без масштабирования) и содержит только часть, которую нужно выложить, какой самый быстрый способ рисования этого изображения для экрана?Каков самый быстрый способ рисовать изображение в Windows.Forms?
Одна из оптимизаций, которые я использовал, - это преобразование изображения в PixelFormat.Format32bpp P Argb, который предварительно вычисляет некоторые из альфа-каналов.
Есть ли разница в производительности между DrawImage и DrawImageUnscaled?
Ищите опыт реального мира, а не документированные ожидания.
Обновление: После копания вокруг классов фреймворка я вижу, что класс Control использует TextureBrush, используя изображение, которое должно быть выложено. Это выглядит многообещающе.
DrawImageUnscaled фактически масштабирует изображение ... как это может быть быстрее, чем DrawImage? –
У вас есть обратное - DrawImageUnscaled не будет масштабировать изображение, на самом деле нет параметров для управления размером цели (за исключением указания размера источника). – overslacked
Да ... хотелось бы, чтобы это было правдой. Документы заявляют иначе, и при тестировании он показывает иначе. Посмотрите на фактический код для DrawImageUnscaled, просто вызывает DrawImage напрямую. –