2016-03-15 3 views
3

Сегодня я задаю вопрос о создании коллекции изображений PNG в компоненте. Я нашел кнопку, принять PNG изображение как gliph, но использовать PNG изображение составленного из четырех состояний изображения, как это:Коллекция изображений Delphi PNG в компоненте

enter image description here

Я модифицированный компонент для использования четырех Differents изображения, каждый для одного состояния. Итак, мои компоненты выглядит следующим образом:

... 
    public 
    FPngImgEnabled: TPngImage; 
    FPngImgDisabled: TPngImage; 
    FPngImgDown: TPngImage; 
    FPngImgOver: TPngImage; 
    FDown: Boolean; 
    Constructor Create(AOwner: TComponent); override; 
    Destructor Destroy; override; 
    procedure Paint; override; 
    published 
    property PngImgEnabled: TPngImage read FPngImgEnabled write SetPngImgEnabled; 
    property PngImgDisabled: TPngImage read FPngImgDisabled write SetPngImgDisabled; 
    property PngImgDown: TPngImage read FPngImgDown write SetPngImgDown; 
    property PngImgOver: TPngImage read FPngImgOver write SetPngImgOver; 
    ... 

Это способ, которым я имею компонент с четырьмя PNG изображений, а затем для SetPng ... процедур. Интересно, есть ли способ использовать коллекцию из четырех изображений PNG; что-то вроде «TPNGImagesList» для концентрации изображений в одном месте.

+1

Что случилось с 'TImageList'? – fantaghirocco

+1

Существует TPngImageList, содержащийся в [PngComponents] (https://code.google.com/archive/p/cubicexplorer/downloads). Возможно, это соответствует вашим потребностям. Может быть, есть даже готовая кнопка - я не проверял. –

+1

Сопровождает: Что случилось с TPNGImageList? Кстати, какая версия Delphi? –

ответ

1

Я думаю, что нужно что-то вроде этого:

type 
    TImgType = (itEnabled, itDisabled, itDown, itOver); 


    ... 
    protected 
    procedure SetImg(Index: TImgType; Value: TPngImage); 
    function GetImg(Index: TImgType): TPngImage;  
    public 
    FImages: TList<TPngImage>; 
    FDown: Boolean; 
    Constructor Create(AOwner: TComponent); override; 
    Destructor Destroy; override; 
    procedure Paint; override; 
    published 
    property Image[Index:TImgType]: TPngImage read GetImg write SetImg; 
    property PngImgEnabled: TPngImage index itEnabled read GetImg write SetImg; 
    property PngImgDisabled: TPngImage index itDisabled read GetImg write SetImg; 
    property PngImgDown: TPngImage index itDown read GetImg write SetImg; 
    property PngImgOver: TPngImage index itOver read GetImg write SetImg; 

    ...