Delphi: TPicture из TImageList - PullRequest
       29

Delphi: TPicture из TImageList

1 голос
/ 31 августа 2011

Как получить TPicture из TImageList?

Мне нужно сделать Image1.Picture:=...TPicture из списка изображений, чтобы загрузить изображение в TImage.

В списке изображений хранятся все мои изображения PNG, которые являются прозрачными.

Я пытался использовать растровое изображение (GetBitmap), но мне нужна прозрачность. К сожалению, у меня есть белый фон с использованием растрового изображения.

Спасибо!

1 Ответ

4 голосов
/ 31 августа 2011

Обычный TImageList использует растровые изображения. Хотя они могут быть частично прозрачными, на самом деле это просто подделка. В Delphi вы можете рисовать растровые изображения как прозрачные, назначая им один прозрачный цвет. Этот точный цвет будет нарисован на 100% прозрачным, в то время как другие цвета - нет. Обычно цвет берется из нижнего левого угла изображения.

TPicture сама по себе ничего не делает. Это просто контейнер для потомков TGraphic. Вам нужно будет найти тип изображения, которое может быть прозрачным.

Удобный формат PNG. Событие PNG поддерживает альфа-канал, что означает, что каждому пикселю может быть назначено различное значение прозрачности.

К счастью, есть TPngImageLists , которые сочетают в себе простоту TImageList и мощь PNG. Вы можете прочитать эту статью . Это на голландском языке, но, возможно, Google Translate поможет вам. Или, может быть, вы можете найти английский ресурс на эту тему. Я использовал этот список изображений, и он великолепен, потому что вы можете иметь реальные значки с альфа-каналом и при этом использовать их с обычными панелями инструментов и быстродействующими кнопками.

...