На этом шаге мы рассмотрим операции рисования.
Для изображения текста, пикселов и различных геометрических фигур существует несколько предикатов 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).
| Стиль | Значение | 
|---|---|
| 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.
| Идентификатор стиля | Значение | 
|---|---|
| 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)
На следующем шаге мы рассмотрим режимы рисования.