DRAW


Statement for sequenced pixel plotting

Syntax:
Draw [target,] cmd

Parameters:
target
the buffer to draw on
cmd
a string containing the sequence of commands

Description:
Drawing will take place onto the current work page set via ScreenSet or onto the target Get/Put buffer if specified.
The Draw statement can be used to issue several drawing commands all at once; it is useful to quickly draw figures. The command string accepts the following commands:

Commands to plot pixels:
Command Description

Commands to plot pixels:
B Optional prefix: move but do not draw.
N Optional prefix: draw but do not move.
M x,y Move to specified screen location. if a '+' or '-' sign precedes x, movement is relative to current cursor position. x's sign has no effect on the sign of y.
U [n] Move n units up. If n is omitted, 1 is assumed.
D [n] Move n units down. If n is omitted, 1 is assumed.
L [n] Move n units left. If n is omitted, 1 is assumed.
R [n] Move n units right. If n is omitted, 1 is assumed.
E [n] Move n units up and right. If n is omitted, 1 is assumed.
F [n] Move n units down and right. If n is omitted, 1 is assumed.
G [n] Move n units down and left. If n is omitted, 1 is assumed.
H [n] Move n units up and left. If n is omitted, 1 is assumed.

Commands to color:
C n Changes current foreground color to n.
P p,b PAINTs (flood fills) region of border color b with color p.

Commands to scale and rotate:
S n Sets the current unit length, default is 4. A unit length of 4 is equal to 1 pixel.
A n Rotate n*90 degrees (n ranges 0-3).
TA n Rotate n degrees (n ranges 0-359).

Extra commands:
X p Executes commands at p, where p is a STRING PTR.


Commands to set the color, size and angle will take affect all subsequent Draw operations.

Examples:
Screen 13

'Move to (50,50) without drawing
Draw "BM 50,50"

'Set drawing color to 2 (green)
Draw "C2"

'Draw a box
Draw "R50 D30 L50 U30"

'Move inside the box
Draw "BM +1,1"

'Flood fill with color 1 (blue) up to border color 2
Draw "P 1,2"

Sleep

Draw example output

'' Draws a flower on-screen

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

'' pattern for each petal
Dim As Const String petal = _
    _
    ("X" & VarPtr(setangle)) _ '' link to angle-setting string
    _
    & "C15" _       '' set outline color (white)
    & "M+100,+10" _ '' draw outline
    "M +15,-10" _
    "M -15,-10" _
    "M-100,+10" _
    _
    & "BM+100,0" _              '' move inside petal
    & ("X" & VarPtr(fill)) _    '' flood-fill petal (by linking to fill string)
    & "BM-100,0"                '' move back out



'' set screen
ScreenRes 320, 240, 8

'' move to center
Draw "BM 160, 120"

'' set initial angle and color number
a = 0: c = 32

For i = 1 To 24

    '' make angle-setting and filling command strings
    setangle = "TA" & a
    fill = "P" & c & ",15"

    '' draw the petal pattern, which links to angle-setting and filling strings
    Draw petal
   
    '' short delay
    Sleep 100

    '' increment angle and color number
    a += 15: c += 1

Next i

Sleep

Draw example output

Differences from QB:
See also:
Back to 2D Drawing Functions
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki



sf.net phatcode