Шаг 75.
Visual Prolog.
Операции рисования

    На этом шаге мы рассмотрим операции рисования.

    Для изображения текста, пикселов и различных геометрических фигур существует несколько предикатов VPI, которые начинаются с префикса draw_. Операции рисования в окне используют текущие настройки рисования для данного окна, к которым обращаются как к инструментам рисования. Инструментами являются: перо (Реn), кисть (Brush), режим рисования (Drawmode), шрифт (Font), цвет изображения (Foreground Color), цвет фона (Background Color) и режим заполнения фона (Background Filling Mode).

Инструменты рисования

    Настройки всех текущих инструментов рисования для окна можно записать в отдельную переменную и затем использовать ее для восстановления этих свойств при помощи предикатов win_GetDrawTools/l и win_SetDrawTools/2:

   SaveTools=win_GetDrawTools(Win),
   % Изменяем настройки рисования и рисуем с различными свойствами 
   win_SetDrawTools(Window,SaveTools),  
   % Восстанавливаем сохраненные настройки

    Компоненты объекта инструментов рисования определены в домене drawtools:

   global domains
      drawtools=draw_tools(
         pen,
         brush,
         drawmode,
         font,
         color foreground,
         color background,
         bk_mode)

Перья

    Линии и контуры фигур рисуются при помощи перьев (PEN). Параметры линии, например ширина, стиль и цвет, могут быть изменены установкой атрибутов пера перед его использованием (таблица 1).

Таблица 1. Стили пера
Стиль Значение
ps_Hollow Прозрачная линия
ps_Solid Сплошная линия
ps_Dash Пунктирная линия
ps_Dot Точечная линия
ps_DashDot Штрих-пунктирная линия
ps_DashDotDot Штрих-пунктирно-пунктирная линия

    Для перьев существует специальный домен:

   global domains
      penWidth=integer
      pen=pen(penWidth,penStyle,color)

Получение текущего пера

    Предикат win_GetPen возвращает текущее перо. Часто он используется для временного изменения пера и восстановления старого пера после рисования.

   Pen=win_GetPen(Window)

Установка пера текущим

    Предикат win_SetPen/2 изменяет перо для данного окна. Следующий код устанавливает перо со сплошной красной линией и шириной 2 пиксела.

   PenWidth=2,
   Pen=pen(PenWidth,ps_Solid,color_Red),
   win_SetPen(Window,Pen)

Режимы фона

    Текст отображается текущим цветом изображения, и если домен bk_mode имеет значение bk_Opaque, то фон будет залит текущим цветом фона. При использовании значения bk_Transparent цвет фона будет прозрачным:

   global domains
      bk_mode=integer
   constants
      bk_Transparent=1
      bk_Opaque=2

    Для изменения текущего режима фона используется предикат:

   win_SetBackMode(Window,Bk_Mode)

Кисти

    Для закрашивания фигур используются кисти. Параметрами кисти являются цвет и стиль узора - заполнителя.

   global domains
      brush=brush(patStyle, color)

    Стили узора-заполнителя и их описание приведены в таблице 2.

Таблица 2. Стили узора-заполнителя
Идентификатор стиля Значение
pat_Hollow Нет заполнителя
pat_Solid Однотонная кисть определенного цвета
pat_Horz Горизонтальная штриховка
pat_Vert Вертикальная штриховка
pat_Fdiag Диагональная штриховка снизу вверх (слева направо)
pat_Bdiag Диагональная штриховка сверху вниз (слева направо)
pat_Cross Горизонтальная и вертикальная перекрестная штриховка
pat_DiagCross Диагональная штриховка крест-накрест

Получение и установка текущей кисти

    Предикат win_GetBrush возвращает текущую кисть.

   CurrentBrush=win GetBrush(Window)

    Предикат win_SetBrush/2 изменяет текущую кисть для окна.

   win_SetBrush(Window,NewBrush)

Шрифты

    Текущий шрифт изменяется вызовом предиката:

   win_SetFont(Window,FontBinary)

    Вы можете получить текущий шрифт вызовом предиката:

   FontBinary=win_GetFont(Window)

    На следующем шаге мы рассмотрим режимы рисования.




Предыдущий шаг Содержание Следующий шаг