Поделиться через


Рисование изображений из списка изображений

Чтобы нарисовать изображение, используйте функцию члена CImageList::D raw . Вы укажете указатель на объект контекста устройства, индекс изображения для рисования, расположение в контексте устройства, в котором нарисовывается изображение, и набор флагов для указания стиля рисования.

При указании стиля Draw ILD_TRANSPARENT используется двухэтапный процесс для рисования маскированного изображения. Во-первых, он выполняет логическую операцию И на битах изображения и битах маски. Затем он выполняет логическую операцию XOR для результатов первой операции и фоновых битов контекста целевого устройства. Этот процесс создает прозрачные области в полученном изображении; То есть каждый белый бит в маске приводит к тому, что соответствующий бит в результирующем изображении будет прозрачным.

Перед рисованием маскированного изображения на сплошном цвете фона следует использовать функцию-член SetBkColor , чтобы задать цвет фона списка изображений таким же цветом, что и назначение. Настройка цвета устраняет необходимость создания прозрачных областей в изображении и позволяет Draw просто копировать изображение в контекст целевого устройства, что приводит к значительному увеличению производительности. Чтобы нарисовать изображение, укажите стиль ILD_NORMAL при вызове Draw.

Цвет фона для списка маскированных изображений (CImageList) можно задать в любое время, чтобы он правильно рисовался на любом сплошном фоне. Задание цвета фона CLR_NONE приводит к тому, что изображения будут вырисовываться прозрачно по умолчанию. Чтобы получить цвет фона списка изображений, используйте функцию элемента GetBkColor .

Стили ILD_BLEND25 и ILD_BLEND50 опустите изображение с цветом выделения системы. Эти стили полезны, если вы используете маскированные изображения для представления объекта, который пользователь может выбрать. Например, можно использовать стиль ILD_BLEND50 для рисования изображения при его выборе.

Изображение, отличное от маски, копируется в контекст целевого устройства с помощью операции растра SRCCOPY . Цвета в изображении отображаются одинаково независимо от цвета фона контекста устройства. Стили рисования, указанные в Draw документе, также не влияют на внешний вид немаскированного изображения.

Помимо функции-члена Рисования, другая функция DrawIndirect расширяет возможность отрисовки изображения. DrawIndirect принимает в качестве параметра структуру IMAGELISTDRAWPARAMS . Эта структура может использоваться для настройки отрисовки текущего изображения, включая использование кодов операций растровой операции (ROP). Дополнительные сведения о кодах ROP см. в разделе "Коды операций raster" и "Растровые изображения" в виде кистей в пакете SDK для Windows.

См. также

Использование CImageList
Controls