Извлечение изображений PNG из списка изображений Delphi 2009 - PullRequest
3 голосов
/ 03 октября 2008

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

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

1 Ответ

1 голос
/ 09 октября 2008

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

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

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

Вы можете преобразовать список изображений в TGetImageImageList, чтобы получить GetImages.

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

Растровое изображение содержит растровое изображение, а маска представляет собой черно-белое растровое изображение, определяющее прозрачные участки.

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

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

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

...