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.