2008-10-03 3 views
3

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

Что я хочу сделать, это на самом деле извлечь изображения из одного 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; 

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

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