19 июня 2010

Компонент ImageList

Компонент ImageListКомпонент 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'ы:
Свойство Images

Комментариев нет:

Отправить комментарий

Темы