有序像素绘图命令
语法
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当前不允许子像素移动:所有运动都舍入到最接近的整数坐标。
参考