Updated: Dec 16, 2023
Follow on twitter

TsAlphaImageList

Компонент является аналогом стандартного компонента TImageList, но имеется несколько значительных отличий:

  • Возможно изменение свойств Height и Width в run-time, без пропадания иконок.
  • Возможно использование как хранилища изображений разных размеров.
  • Возможна загрузка изображений только в формате Ico и Png 32bpp.
  • Изображения хранятся в исполняемом файле в оригинальном (сжатом) виде.
  • Поддержка свойства NumGlyphs кнопок.

Методы компонента

procedure AcBeginUpdate;
Блокирует вывод изображений, используется обычно на время изменения компонента.

procedure AcEndUpdate(DoChange : boolean = True);
Разрешает вывод изображений, используется для разблокирования компонента после применения процедуры AcBeginUpdate. Если DoChange = True, то рассылается команда перерисовки всем компонентам, связанным с AlphaImageList.

function GetBitmap32(Index: Integer; Image: TBitmap): Boolean;
Возвращает в Image иконку с индексом "Index", конверируя её в Bitmap 32bpp. Если функция выполнена успешно, то возвращается True.

function CreateBitmap32(Index: Integer; aWidth, aHeight : integer): TBitmap;
Создаёт Bitmap 32bpp с заданными размерами, на основе иконки с индексом "Index". Если функция выполнена успешна, то возвращаемый результат не равен Nil.

procedure MoveItem(CurIndex, NewIndex : integer);
Изменяет положение изображения в списке.

TsVirtualImageList

Компонент позволяет выдавать на выходе изображения заданного размера, используя компонент TsAlphaImageList как источник. Сам компонент TsVirtualImageList не хранит изображений, а берёт их из компонента, заданного в свойстве AlphaImageList.

Пример использования компонента TsVirtualImageList в связке с TsAlphaImageList можно скачать здесь (3.7 Mb).

Методы компонента

procedure AcBeginUpdate;
Блокирует вывод изображений, используется обычно на время изменения компонента.

procedure AcEndUpdate(DoChange : boolean = True);
Разрешает вывод изображений, используется для разблокирования компонента после применения процедуры AcBeginUpdate. Если DoChange = True, то рассылается команда перерисовки всем компонентам, связанным с AlphaImageList.

function GetBitmap32(Index: Integer; Image: TBitmap): Boolean;
Возвращает в Image иконку с индексом "Index", конверируя её в Bitmap 32bpp. Если функция выполнена успешно, то возвращается True.

Процедуры и функции модуля

function DrawAlphaImgList(const ImgList : TCustomImageList; const DestBmp : TBitmap; const Left : integer; const Top : integer; const ImageIndex : integer; const Blend : integer; const GrayedColor : TColor; State : integer; const NumGlyphs : integer; const Reflected : boolean) : TSize;

Рисует изображение из ImgList, заданное номером ImageIndex, на DestBmp в формате Bitmap 32bpp. Вывод изображения может производиться с несколькими эффектами, такими как полупрозрачность, зеркальное отражение и др. Возвращаемым результатом функции является размер выводимого рисунка.

  • Параметры Left и Top указывают координаты верхнего левого угла, куда следует выводить изображение.
  • State указывает номер состояния, для которого рисуется иконка. Такие эффекты как полупрозрачность и заданный оттенок могут рисоваться только при State = 0.
  • NumGlyphs задаёт количество состояний в одном изображении. Свойство работает так же как одноимённое свойство в компоненте TBitBtn.
  • Blend задаёт степень прозрачности иконки (0..100). Если свойство = 0 или если State <> 0, то изображение выводится как есть, без прозрачности. На примере изображены иконки при Blend = 0 и 50.
  • GrayedColor задаёт оттенок цвета, в котором будет рисоваться иконка. Если цвет равен clNone или State <> 0, то изображение выводится как есть. Чем светлее цвет, задаваемый этим параметром, тем чётче будет выглядеть иконка. Ниже находятся примеры иконок при clNone и $BEA76D.
  • Reflected включает зеркальное отражение иконки. На примере изображены иконки при выключенном и включенном параметре Reflected.


procedure DrawAlphaImgListDC(const ImgList : TCustomImageList; const DC : hdc; const Left : integer; const Top : integer; const ImageIndex : integer; const Blend : integer; const GrayedColor : TColor; const State : integer; const NumGlyphs : integer; const Reflected : boolean);

Полный аналог предыдущей процедуры, отличие только в том, что рисунок выводится не на Bitmap, а на DeviceContext (DC : hdc).


function AddImageFromRes(aInstance: LongWord; ImageList : TsAlphaimageList; const ResName: String; ImageFormat : TsImageFormat): Boolean;

Загружает иконку Png в ImageList из ресурса, заданного с помощью ResName : String. Ресурс Png должен быть скомпилирован как RcData.



Installing, using and licensing the demo programs © Sergii Goncharov, Ukraine, Odessa 2004-2023