суббота, 30 января 2010 г.

Красивые компоненты в HiAsm

Красивые компоненты в HiAsm
Всегда хочется сделать свою программу чем-то выделяющейся, не похожей на другие. Внешний вид программы - далеко не последняя в этом деле вещь. И его можно сделать индивидуальным и красивым, если использовать некоторые компоненты.

Вкладка "Интерфейс" в HiAsm такая большая, что при первом взгляде можно много чего не заметить. Первые, наиболее используемые компоненты чаще других попадаются на глаза, они известны ещё с прошлых версий HiAsm.

Сейчас много чего изменилось. Например, появилась технология менеджеров, о которой я рассказывал в статье про красивый список. Менеджер отрисовки делает списки красивее, но только списки и никакие другие компоненты.

А сейчас раскройте вкладку "Интерфейс" в HiAsm и посмотрите на две группы элементов: графические и расширенные. На мой взгляд, деление это излишнее: многие графические компоненты тоже являются там расширенными, а большое количество групп элементов ухудшает восприятие. Но разработчикам виднее.

Посмотрим на сами компоненты.
Кнопка-картинка (ImgBtn). Компонент хорошо подходит для создания кнопок без надписей, с одним только рисунком. В четырёх последних параметрах кнопки задаются рисунки, которые вы сами должны заранее подготовить. Интересный параметр также Split.



Важно знать некоторые особенности этой кнопки. Если не задать картинку для нажатого состояния, то будет использована картинка как для нормального состояния.
Если Flat=False, то при наведении мыши на кнопку картинка не меняется на картинку для выделенного состояния.
И наконец, для использования параметра Split нужно, чтобы картинка имела прозрачные области. Мне удалось этого добиться переводом картинки png в формат ico, т.е. в иконку. Рекомендую программу IcoFX (её легко найти в Интернете). К сожалению, HiAsm не поддерживает открытие картинок png (имеется в виду встроенный редактор картинок).


И конечно, важно правильно выбрать картинку, чтобы было красиво.

Фигура (VisualShape). Это довольно бесполезный компонент, однако иногда может пригодиться для вывода каких-то графических примитивов. Важно только обращать внимание на его параметры Pen, Color и другие. Имейте в виду, что если толщину рамки установить больше 1, то стиль её изменить будет нельзя.



Здесь используется ещё и параметр Transparent, который скрывает все области, которые не закрашены цветом. Именно с помощью него стрелку в примере удалось поместить сверху овала, не показывая при этом серые места, которые у стрелки под заливку не попали.

Светодиод (Led). Очень красивый компонент, если использовать его правильно. Он может быть прямоугольным или овальным (параметр Shape).



Расстановка светодиодов, думаю, здесь понятна. Главное - разобраться с логикой. У светодиодов задействован метод doChangeValue, который изменяет состояние светодиода. А теперь внимательно посмотрите на начальные значения счётчиков: один отстаёт от другого ровно на 1. Сначала первый счётчик выдаёт -1, но такого индекса у IndexToChanel нет, и ничего не происходит. Зато следом второй счётчик выдаёт 0, и это включает первый светодиод.

При второй итерации таймера первый счётчик выдаёт уже 0, что гасит первый светодиод, а второй счётчик выдаёт 1, что включает 2-ой светодиод. И так далее.

Панель прогресса (GProgressBar). Работать с компонентом довольно просто. Это обычная панель прогресса, только с градиентной заливкой. Те, у кого стоит Download Master, знают, что в окне закачки у него есть панель прогресса, щёлкнув по которой, можно изменить её стиль. Теперь и у HiAsm'овцев есть такая возможность.

Светодиодный индикатор (LedLadder). Тоже довольно простой компонент. Интересен тем, что имеет три области: минимальные значения, средние значения и максимальные значения, каждая из которых отображается своим цветом.

Цифровое табло (LedNumber). Компонент тоже прост. Выводит на цифровое табло цифры и некоторые другие символы. К сожалению, не выводит текст. В примере указаны все символы, которые можно вывести в этот компонент.



Градиентная надпись (GLabel). Очень красивая надпись. Конечно, для строгих программ она вряд ли подойдёт, но вот для программ-развлечений и им подобных - самое то!



Важно правильно выбрать цвет тени - ColorShadow. Впрочем, его можно изменять из программы, как это показано в примере. Затем смотрим на группу параметров Extended. Выбираем глубину тени, а дальше 4 параметра определяют градиент фона, а следующие - градиент самой надписи. Также важен параметр Antialiased, который позволяет сгладить неровности шрифта. С ними надпись выглядит не так красиво.

Ну а формула для изменения цвета тени очень проста. Каждую миллисекунду счётчик выдаёт число от 0 до 360. Математика подсчитывает синус (не забудьте выбрать AngleMode=Градусы) и находит его модуль. А так как синус изменяется в пределах от -1 до 1, то изменение получается плавным. И при умножении на 255 получается число от 0 до 255. 255 - это красный цвет, 0 - чёрный.

На самом деле, даже из обычных компонентов при хорошей фантазии можно сварганить что-нибудь интересное. Самое главное - экспериментировать.






Для дома, дачи, участка в условиях отсутствия электроэнергии подойдёт дизельгенератор. Очень мощные и неприхотливые, они обеспечат вас электричеством везде.

В промышленности нужны поршневые компрессоры. Они дешевле винтовых и не могут быть заменены там, где нужен чистый воздух, поскольку поршневые компрессоры работают без масла.

Защитная мастика битумная нужна для предотвращения вредных воздействий на разные конструкции. Цена битумной мастики также указана на сайте.

1 комментарий: