Russian Belarusian English German Japanese Ukrainian

ImageList - список изображений

CuBook25

Компонент ImageList представляет собой набор изображений одинаковых размеров, на которые можно ссылаться по индексам, начинающимся с 0. Во многих компонентах меню, списках и других встречались свойства, представляющие собой ссылки на компонент ImageList. Этот компонент позволяет организовать эффективное и экономное управления множеством пиктограмм и битовых матриц. Он может включать в себя монохромные битовые матрицы, содержащие маски для отображения прозрачности рисуемых изображений.
 
Изображения в компонент TImageList могут быть загружены в процессе проектирования с помощью редактора списков изображений. Окно редактора вызывается двойным щелчком на компоненте TImageList или щелчком правой кнопки мыши и выбором команды контекстного меню.
 
В окне редактора списков изображений вы можете добавить в списки изображения, пользуясь кнопкой Add, удалить изображение из списка кнопкой Delete, очистить весь список кнопкой Clear. При добавлении изображения в список открывается обычное окно открытия файлов изображений, в котором вы можете выбрать интересующий вас файл. Множество изображений, размещаемых обычно на кнопках, содержится в папке ...\Program Files Common Files\Borland Shared\Images\Buttons. Только учтите, что размер всех изображений в списке должен быть одинаковым. Как правило, это размер, используемый для пиктограмм в меню, списках, кнопках. При добавлении в список изображений для кнопок надо иметь в виду, что они часто содержат не одно, а два и более изображений. В этих случаях при попытке добавить изображение задается вопрос: «Bitmap dimensions for ... are greater then imagelist dimensions. Separate into ... separate bitmaps?» (Размерность изображения ... больше размерности списка. Разделить на ... отдельных битовых матрицы?). Если вы ответите отрицательно, то все изображения уменьшатся в горизонтальном размере и лягут как одно изображение. Использовать его в дальнейшем будет невозможно. Поэтому на заданный вопрос надо отвечать положительно. Тогда загружаемая битовая матрица автоматически разделится на отдельные изображения, и потом вы можете удалить те из них, которые вам не нужны, кнопкой Delete.
 
Каждое загруженное в список изображение получает индекс. Именно на эти индексы впоследствии вы можете ссылаться в соответствующих свойствах разделов меню, списков, кнопок и т.д., когда вам надо загрузить в них то или иное изображение. Изменить последовательность изображений в списке вы можете, просто перетащив изображение мышью на новое место. В редакторе списков изображений вы можете, выделив то или иное изображение, установить его свойства: Transparent Color и Fill Color. Но это можно делать только в том сеансе работы с редактором списков изображений, в котором загружено данное изображение. Для изображений, загруженных в предыдущих сеансах, изменение этих свойств невозможно.
 
Свойство Transparent Color определяет цвет, который используется в маске для прозрачного рисования изображения. По умолчанию это цвет левого нижнего пиксела изображения. Для пиктограмм данное свойство устанавливается в clNone, поскольку пиктограммы уже маскированы. Свойство Fill Color определяет цвет, используемый для заполнения пустого пространства при перемещении и центрировании изображения. Для пиктограмм данное свойство устанавливается в clNone.
 
Группа радиокнопок Options определяет способ размещения изображения битовой матрицы с размерами, не соответствующими размерам, принятым в списке:
Тип Описание
Crop Отображается часть изображения, помещающаяся в размер списка, начиная с левого верхнего угла.
Stretch Размеры изображения изменяются, становясь равными размерам списка. При этом возможны искажения.
Center Изображение центрируется, а если его размер больше размера списка,то не помещающиеся области отсекаются.
 
Основными свойствами TlmageList являются:
Свойство Тип Описание
Height Integer Высота изображений в списке.
Width Integer Ширина изображений в списке.
AllocBy Integer Определяет количество изображений, на которое увеличивается список для добавления новых изображений.
Count Integer Определяет число изображений в списке. Свойство только для чтения.
 
Остальные свойства определяют цвета и способы рисования изображения.
 
Теперь рассмотрим некоторые методы ImageList. Прежде всего, остановимся на методе Draw:
void __ fastcall Draw(Graphics::TCanvas* Canvas, int X, int Y, int Index, bool Enabled = true);
Этот метод рисует на канве Canvas изображение из списка, имеющее индекс Index. Параметры X и Y указывают координаты левого верхнего угла рисуемого изображения. Параметр Enabled указывает, должно ли изображение рисоваться нормально, или серым (при значении false), как рисуются недоступные компоненты. Поскольку по умолчанию значение Enabled равно true, то для обычного режима рисования этот параметр может не указываться.
 
Метод №1.
void __fastcall GetBitmap (int Index, Graphics::TBitmap* Image);
void __fastcall GetIcon(int Index, Graphics::TIcon* Image);
переносят изображение с индексом Index из списка в графический объект Image. Далее это изображение можно использовать любым образом.
Ряд методов позволяют добавлять в список новые изображения:
int __fastcall Add(Graphics::TBitmap* Image, Graphics::TBitmap* Mask);
int __fastcall Addlcon(Graphics::TIcon* Image);
int __fastcall AddMasked(Graphics::TBitmap* Image,
Graphics::TColorMaskColor);
Эти методы добавляют в список изображение Image и возвращают индекс, присваиваемый этому изображению. Параметр Mask позволяет вместе с изображением добавить его маску. Если свойство Masked списка равно false, то этот параметр игнорируется.
 
Метод AddMasked эквивалентен Add, но вместо маски в нем указывается цвет MaskColor для автоматической генерации маски. Каждый пиксел этого цвета в изображении заменяется черным цветом и, следовательно, становится прозрачным.
 
Метод №2.
HIDESBASE void __fastcall Insert(int Index, Graphics :: TBitmap* Image, Graphics::TBitmap* Mask);
void __fastcall Insertlcon(int Index, Graphics::TIcon* Image);
void __fastcall InsertMasked(int Index, Graphics::TBitmap* Image, Graphics::TColor MaskColor);
аналогичны предыдущим, но вставляют изображение в список, задавая ему индекс Index. Индексы последующих изображений соответствующим образом сдвигаются.
 
Метод №3.
void __fastcallReplace(intIndex, Graphics::TBitmap* Newlmage, Graphics::TBitmap* Mask);
void __fastcall Replacelcon(int Index, Graphics::TIcon* Newlmage);
void __fastcall ReplaceMasked(int Index, Graphics::TBitmap* Newlmage, Graphics::TColor MaskColor);
отличаются тем, что замещают изображение с индексом Index новым изображением Newlmage.
 
Метод №4.
void __fastcall Delete(int Index);
удаляет из списка изображение с индексом Index.
 
Метод №5.
void __fastcall Move(int Curlndex, int Newlndex);
перемещает изображение с индексом Curlndex на новое место, указанное параметром Newlndex.
 
Как видим, в компоненте ImageList имеются все методы, необходимые для программно формирования и перестройки списка изображений. Впрочем, большинство этих методов приходится использовать сравнительно редко, так как обычно список изображений формируется во время проектирования, а не программно.
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий