Updated: Dec 16, 2023
Follow on twitter

Общие сведения

Скины могут быть загружены в редактор скинов только в распакованном виде. Для распаковки и загрузки в редактор упакованного скина (*.asz) используйте кнопку "Unpack and open" в программе ASkinEditor.exe. Все скины в распакованном виде содержат два основных файла :

  • Общий файл в формате Bitmap, который содержит изображения деталей скина (порядок расположения в файле не важен). Далее этот файл будем называть MasterBitmap.
  • Настройки скина в Ini-формате (файл “Options.dat”). Настройки в нём хранятся как общие для всего скина (секция “GLOBALDATA”), так и отдельные секции для каждого вида элементов управления (большинство секций имеют одинаковые параметры).

  • Итак, создание скина сводится к созданию файла MasterBitmap и последующему конфигурированию файла Options.dat с помощью программы ASkinEditor.exe.

    Файл MasterBitmap

    На рис.1 изображено содержимое файла Master.bmp для скина WLM. MasterBitmap состоит из множества групп изображений различных деталей элементов управления. Каждая группа хранит изображение соответствующей детали для всех возможных состояний :
      - обычное
      - активное (элемент выбран мышью или находится в фокусе)
      - нажатое
      - спец. состояние, зависящее от вида элемента управления (у кнопок это изображение для режима Default, у заголовка FrameBar - заголовок открытого фрейма)).

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

    Пример : на рис.2 находится изображение CheckBox (Checked = True) для трех состояний. Три рисунка одинаковых размеров соединены вместе. Первый – для обычного состояния элемента управления, второй – для выделенного и третий отображается при нажатии. Этих частей может быть и две (если не нужно задавать изображение при нажатии или если оно такое же как при выделении элемента управления), а может быть и одна (если вид элемента управления одинаков во всех состояниях или если элемент управления может иметь только одно состояние). Подготовка изображений таких элементов как формы, кнопки и т.п. не намного сложнее.

  • Цвет фона должен быть Fuchsia (этот цвет является прозрачным в AlphaSkins)
  • Количество цветов на пиксель не имеет значения, но если вы пользуетесь PhotoShop, то MasterBitmap желательно сохранять как Bmp в формате OS/2
  • Изображение фона для элемента управления (текстура) может быть как включенным в файл MasterBitmap, так и находиться в отдельном файле (допустимые форматы – Jpeg и Bmp)
  • Рендеринг

    Прорисовка элемента управления при выводе на экран происходит по следующей схеме : сначала рисуется фон, затем рамка и содержимое компонента. Фон может быть полупрозрачным, залитым равномерным цветом или градиентом или текстурой или всем этим вместе (все эти настройки задаются в редакторе скинов и будут рассмотрены позже).

    Итак, после того как готов фон, на него накладываются изображения углов и сторон из MasterBitmap. Если в углах присутствуют пиксели цвета Fuchsia, то в этих местах контрол будет прозрачным. Стороны могут выводится как повторением так и растягиванием куска из источника (способ вывода определяется в редакторе скинов). На рис.3 представлено изображение ToolBar до рисования рамки и после. При рисовании рамки исходное изображение разбивается на 9 частей (см. рисунок слева). Части 1,3,7,9 (углы) переносятся как есть, стороны рамки заполняются повторяющимися или растягивающимися (опционально) частями 2, 4, 6 и 8 соответственно, а центр заполняется частью 5 если это указано в параметрах секции (когда такое заполнение не задано отрисовка в некоторых случаях происходит значительно быстрее).

    Координаты рисунков для каждого элемента управления, ширины сторон и все остальные параметры задаются в редакторе скинов.

    Маски

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

    Маски в Alphacontrols являются эмуляцией альфаканала и их можно задавать как отдельную область в MasterBitmap, которая должна быть равна по размерам соответствующему рисунку элемента, а также должна находиться непосредственно под ним. Маска может быть только в серых тонах. Чем темнее пиксели, тем меньше будет прозрачность соответствующего пикселя на конечном рисунке. Отсюда следует, что пиксель с маской белого цвета будет полностью прозрачен, а пиксель с маской черного цвета будет полностью непрозрачен.

    На примере можно увидеть рамку кнопки c маской из скина WLM и ее конечный вид после применения этой маски. Угловые пиксели в верхней половине рисунка, которые имеют цвет Fuchsia, в итоге будут полностью прозрачны. Также эти пиксели были бы полностью прозрачны, если бы в маске им соответствовали пиксели белого цвета, но в данном случае это лишнее.



    Installing, using and licensing the demo programs © Sergii Goncharov, Ukraine, Odessa 2004-2023