Извлечение изображений PNG из Delphi 2009 imagelist

В TImageList Delphi 2009 есть поддержка изображений PNG, добавив их в редактор изображений. Есть ли способ извлечь TPngImage из TImagelist и сохранить альфа-канал?

То, что я хочу сделать, это на самом деле извлечь изображения из одного TImageList, сделать их отключенной версией и затем добавить их в другой TImageList. Во время этой операции я, конечно, хотел бы сохранить альфа-канал изображений PNG.

1 ответ

Я сделал что-то подобное с Delphi 2006.

TImageList содержит защищенный метод GetImages. Доступ к нему можно получить с помощью "защищенной ошибки"

type
 TGetImageImageList = class (TImageList) // Please use a better name!
 end;

Вы можете нарисовать imagelist в TGetImageImageList, чтобы добраться до GetImages.

begin
 TGetImageList(ImageList).GetImages(index, bitmap, mask);
end;

Растровое изображение содержит растровое изображение, а маска - черно-белое растровое изображение, которое определяет секции прозрачности.

Теперь вы можете изменить растровое изображение и сохранить его, используя:

function Add(Image, Mask: TBitmap): Integer;

Надеюсь, это даст вам достаточно указаний для дальнейшего изучения.

licensed under cc by-sa 3.0 with attribution.