C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 57 - Компонент TImageList / С++ Builder 5 / Borland C++

Шаг 57 - Компонент TImageList

Этот компонент инкапсулирует соответствующий элемент управления Windows под названием IMAGELIST. На первый взгляд - по большому счету, зачем нужны специальные списки для хранения изображений? Вроде легче использовать встроенные списочные классы - у C++ это чаще всего vector, у Delphi TList. Но БГ привел эти списки к системному значению. Например, элементы дерева хранятся в IMAGELIST, изображения вкладок TabControl. Даже картинки с иконками хранятся в специальном списке - называется системный IMAGELIST.

Надо так надо. Как же с ним работать? При двойном щелчке на компоненте открывается окошко:

gif/57_1.gif (5036 b)

Здесь как бы все должно быть интуитивно понятно :), значит идем дальше. Обычно бывает понятие выделенных, имеющих фокус, не имеющих фокуса и прозрачных элементов. Это состояние отражается на выводе текста и картинки (если она, конечно, есть...). Эта дополнительная функция (помимо основной - хранения указателей на графические объекты) обеспечивается свойствами BkColor, BlendColor, DrawingStyle. Правдо, все это хозфйство работает, только если с изображениями имеются маски - черно-белые изображения, определяющий белым цветом выводимые области, а черным - скрытые. Если не ошибаюсь :). Монохромные маски чаще всего используются при выводе спрайтов - фигур, имеющих произвольную прозрачность в зависимости от формы.

Все эти состояние - выделен, фокусирован, невидим - зависят от маски. BlendColor - определяет цвет видимой части, BkColor - невидимой. Если элемент выделен, то BlendColor затемняет его наполовину. Если фокусирован - на четверть. Если невидим - вместо невидимой части выводится BkColor. DrawingStyle can be one of the following values - (что-то на второй неродной потянуло :)) - dsFocused, dsSelected, dsNormal, dsTransparent. Все, о чем я говорил.

Все методы добавления и экстракции типичны, думаю, по ним вопросов не должно быть. Скажу только, что TImageList может хранить матрицы и иконки. Предполагается, что иконка изначально маскирована. Маска к матрице может добавляться только во время выполнения методом Add. Второй параметр - маска может быть равен NULL.

Более подробно будут каждый раз рассматриваться специфичные области IMAGELIST - использование TreeView, ListView. Не очень в ряд здесь будет shell's namespace. Впрочем, кому как. Забавные вещи можно вытворять. Я один раз ради интереса присвоил TImageList::Handle объекту Handle системного списка. Программу закрыл, она у меня ради интереса все иконки освободила, в смысле, память под них. Открываю я ихСплорер, а там ни одной иконки. Между прочим, все быстрее работать стало... Кстати, автоматическое освобождение происходит от свойства ShareImages.

Это было отступление.


| |
Автор Аванесов Самвел.
[AD]