Draw
 
有序像素绘图命令

语法

Draw [target ,] cmd

参数

target
缓冲区来画
cmd
一个包含命令序列的字符串

说明

如果指定,绘图将发生在通过ScreenSet设置的当前工作页面或target Get/ Put缓冲区中。
Draw语句可以一次性发出几个绘图命令;快速画图是有用的。命令字符串接受以下命令:

命令绘制像素:
命令描述
 命令绘制像素:
B可选前缀:移动但不绘制。
N可选前缀:draw但不要移动。
一M×,Y移动到指定的屏幕位置。如果“+”或“ - ”符号位于x之前,则移动相对于当前光标位置。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的PAINT(洪水填充)区域,颜色为p。
 缩放和旋转的命令:
S n设置当前单位长度,默认值为4。单位长度为4等于1像素。
A n旋转n * 90度(n范围0-3)。
TA?旋转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)) _    ''填充花瓣(通过链接填充字符串)
    & "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当前不允许子像素移动:所有运动都舍入到最接近的整数坐标。

参考