Draw
 
Оператор для печати последовательности пикселей

Синтаксис

Draw [target,] cmd

Параметры

target
буфер , в котором нужно провести рисование
cmd
строка, содержащая последовательность команд

Описание

Рисование состоится на текущей рабочей странице, устанавливаемой с помощью ScreenSet или на указанном буфере target Get/Put.
Оператор Draw может использоваться для рисования сразу нескольких команд; полезно, для быстрого рисования фигур. Командная строка принимает следующие команды:

Команды для построения пикселей:
КомандаОписание
  Команды для построения пикселей:
B Необязательный префикс: двигаться, но не рисовать.
N Необязательный префикс: рисовать, но не двигаться.
M x,y Двигаться абсолютно или относительно. Если х или у имеют знак (+ или -), движение осуществляется относительно текущей точки, т. е. значения х и у будут прибавлены к значениям соответствующих текущих координат. Если знаков нет, то движение абсолютное, т. е. из текущей точки в точку с данными координатами.
U [n] Переместиться на n единиц вверх. Если n не указан, подразумевается 1.
D [n] Переместиться на n единиц вниз.  Если n не указан, подразумевается 1.
L [n] Переместиться на n единиц влево. Если n не указан, подразумевается 1.
R [n] Переместиться на n единиц вправо. Если n не указан, подразумевается 1.
E [n] Переместиться на n единиц вверх и вправо. Если n не указан, подразумевается 1.
F [n] Переместиться на n единиц вниз и вправо. Если n не указан, подразумевается 1.
G [n] Переместиться на n единиц вниз и влево. Если n не указан, подразумевается 1.
H [n] Переместиться на n единиц вверх и влево. Если n не указан, подразумевается 1.
  Команды для цвета:
C n Изменяет текущий цвет переднего плана для n.
P p,b Цвет краски (заливка)  границы b с цветом p.
 Команды для масштабирования и поворота:
S n Устанавливает текущую длину единицы, по умолчанию 4. Длина единицы 4 равна 1 пикселю.
A nПоворот на n * 90 градусов (n в диапазоне 0-3).
TA n Поворот на n градусов (n в диапазоне 0-359).
  Дополнительные команды:
X p Выполняет команды из p, где p — STRING PTR.


Команды для задания цвета, размера и угла вступят в силу для всех последующих операций Draw.

Пример

Screen 13

'Переместиться в (50,50) без рисования
Draw "BM 50,50"

'Задать цвет рисования 2 (зеленый)
Draw "C2"

'Нарисовать прямоугольник
Draw "R50 D30 L50 U30"

'Переместиться внутрь прямоугольника
Draw "BM +1,1"

'Заливка цветом 1 (синий) с границей цвета 2 
Draw "P 1,2"

Sleep



'' Рисует на экране цветок

Dim As Integer i, a, c
Dim As String fill, setangle

'' шаблон для каждого лепестка
Dim As Const String petal = _
    _
    ("X" & VarPtr(setangle)) _ '' ссылка на строку регулировки угла
    _
    & "C15" _       '' задать цвет контура (белый)
    & "M+100,+10" _ '' нарисуем контур
    "M +15,-10" _
    "M -15,-10" _
    "M-100,+10" _
    _
    & "BM+100,0" _              '' перемещение внутрь лепестка.
    & ("X" & VarPtr(fill)) _    '' Заливка лепестка (связываем со строкой fill)
    & "BM-100,0"                '' выйти обратно



'' установка экрана
ScreenRes 320, 240, 8

'' переместиться в центр
Draw "BM 160, 120"

'' установить начальный угол и номер цвета
a = 0: c = 32

For i = 1 To 24

    '' сделать регулировку угла и строку с заливкой
    setangle = "TA" & a
    fill = "P" & c & ",15"

    '' Нарисуем шаблон лепестка, который связывает регулировку угла и строку с заливкой
    Draw petal
    
    '' короткая задержка
    Sleep 100

    '' приращение угла и номера цвета
    a += 15: c += 1

Next i

Sleep



Отличия от QB

  • target является новым в FreeBASIC
  • QB используется специальный указатель VARPTR$ с командой X p.
  • FB в настоящее время не позволяют субпиксельное движение: все движения округляются до ближайшего целого числа координат.

См. также