Компонент ImageList предназначен для хранения набора однотипных
изображений. Конечно, изображения можно хранить и по отдельности - но в
наборе удобнее. ImageList можно рассматривать как массив изображений - в
частности, к элементам такого набора вы можете обращаться по индексу.Компонент ImageList расположен на вкладке Win32 Палитры компонентов:
Перенесите его на форму. Сейчас в нашем ImageList изображений нет. Давайте добавим несколько изображений. Для этого сделайте двойной щелчок на расположенном на форме компоненте ImageList1. Появится диалоговое окно для работы с изображениями. Естественно, что для добавления изображения используется кнопка Add. При нажатии на нее появляется стандартное окно для выбора файла. Выберите какой-нибудь bmp-файл с изображением размера 32 на 16. Естественно, что такой файл надо предварительно создать. В файле должно быть 2 изображения 16 на 16. Нажмите на кнопку Open. Так как у нас 2 изображения, то должно появится окно с вопросом, предлагающим разделить нашу картинку на две (на две, так как картинки должны быть квадратные). Отвечаем, естественно, да:
Теперь в нашем диалоговом окне появилось 2 изображения:
Назначение остальных кнопок понятно. Отметим все же, что удалять
можно и отдельные изображения из загруженного файла - т. е. фактически
из графического файла можно взять только нужные картинки.Также отметьте себе, что изображения в диалоговом окне можно менять местами (перетаскиванием мышью).
Закройте диалоговое окно. Давайте теперь используем наш ImageList. Добавьте на форму компонент Image с вкладки Additional Палитры компонентов и обычную кнопку. В обработчик для щелчка по кнопке внесите следующий код:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
static int index=0;
//Выводим очередное изображение в Image1.
ImageList1->GetBitmap(index, Image1->Picture->Bitmap);
index++; //Берем индекс следующей картинки.
Invalidate(); //Перерисовываем.
}
Теперь если вы запустите программу и будете щелкать на кнопке, то в
Image1 будут последовательно появляться изображения из ImageList1 -
сначала с индексом 0, потом с индексом 1 и т. д. В приведенном фрагменте
используется метод GetBitmap класса TImageList. Первым параметром он
берет номер картинки из ImageList (нумерация идет с нуля), вторым - куда
эта картинка пишется. У нас она пишется в Image1.Вообще говоря довольно-таки много компонентов имеют свойство Images. Это свойство как раз и имеет тип ImageList. Например, если вы разместите на форме компонент MainMenu, то для этого свойства вы сможете выбрать все ImageList'ы:
Комментариев нет:
Отправить комментарий