среда, 20 января 2010 г.

Регионы в HiAsm

В последнюю неделю я выяснил, что, оказывается, недостаточно полно знаю HiAsm. Я задался вопросом, как сделать форму нестандартной формы :) Поискал на эту тему в Google и в Яндексе, хотел уже в WinAPI разбираться, но тут случайно увидел на вкладке "Окно" то, что мне и нужно - регионы.

Там для них даже отдельная группа выделена. Специально для тех, кто тоже хочет узнать, как в HiAsm создавать окна произвольной формы, посвящается эта статья.

Для начала создайте новый проект HiAsm и откройте вышеуказанную вкладку. В версии HiAsm 4.02 build 179 там находится 6 компонентов. Первые три почти одинаковы в точках и параметрах, а различаются только фигуры регионов. Можно попробовать, например, с третьим компонентом - RGN_Elliptic. Он создаёт регион эллиптической формы. Для этого нужно указать две точки: левый верхний угол и правый нижний.



Здесь я задаю точки через параметры Point1 и Point2. Нужно нажать на кнопку рядом с параметром, тогда откроется окно для ввода координат. Компонент RGN_SetToWindow служит для применения региона к какому-либо окну. Для этого в точках данных компонента указываем идентификатор окна (Handle) и регион.

Другие два компонента (RGN_Rect и RGN_RoundRect) очень похожи, поэтому разобраться с ними несложно самостоятельно. Однако один из них пригодится мне для следующего примера - объединения регионов компонентом RGN_Combine. Этот компонент расширяет возможности регионов, позволяя создавать действительно оригинальные нестандартные формы.



Очень важно здесь - правильно выставить режим Mode у RGN_Combine. Поэкспериментируйте с разными режимами и поймёте, для чего какой нужен.
А для формы здесь применён параметр BorderStyle=bsNone и DragForm=True.


У нас остаётся один нерассмотренный компонент - RGN_Script. В нём можно написать скрипт своего региона. Это несложно: в редакторе скрипта есть четыре кнопки для добавления команд. Здесь они почти те же самые, что и компоненты, про которые я рассказал. Но наибольший интерес представляет последняя команда - poly. Это многоугольник, компонента для которого нет.

В этой команде нужно указать точки многоугольника. Все точки задаются через запятую: сначала по оси X, потом - Y.



В одном и том же скрипте можно использовать сразу несколько команд. А в этом примере добавлена ещё прозрачность формы: AlphaBlendValue=150.






Желаете создать свой web-публикатор или портал - обратите внимание на скрипт XOOPS. Поддержка разных баз данных.

Для повышения надёжности, производительности и безопасности вашего веб-проекта возьмите сервер в аренду. Сервер на ваш выбор.

3 комментария:

  1. Уважаемый админ, подскажите пожалуйста, как сделать окно в форме голубой восьмиконечной звезды? И можно ли вообще так сделать?
    И ещё. Хорошо, что тут в видео уроке курсор не очень мелкий, но уследить за ним не так-то просто. Значки вроде хорошо видно.

    ОтветитьУдалить
  2. Экспериментируйте со значения узлов "звезды" и получите новые варианты её исполнения.

    ОтветитьУдалить