411 REFERENCE · Wikibooks
Gambas/Graphics
Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.
Back to Gambas
If you want to produce some graphics in gambas you should get used to the drawingarea control.
Draw a Line
This little program will draw a line.
You have to start a new graphics project. You take a form as your start form.
You need a drawingarea and a commandbutton on the form to get it going.
PUBLIC SUB Button1_Click()
Draw.Begin(DrawingArea1)
Draw.Line(1, 130, 500, 400)
Draw.End
END
When you want to draw some more lines, then try this example:
PUBLIC SUB Form_Open()
DIM B AS Integer
Draw.Begin(DrawingArea1)
FOR B = 1 TO 200 STEP 10
Draw.Line(1, B, 500, B)
NEXT
Draw.End
END
Some other lines are drawn here:
PUBLIC SUB Button1_Click()
DIM B AS Integer
Draw.Begin(DrawingArea1)
' Draws a line horizontally across the centre of the form
Draw.Line (0, ME.Height / 2, ME.Width, ME.Height / 2)
' Draws a line vertically down the centre of the form
Draw.Line (ME.Width / 2, 0,ME.Width / 2, ME.Height)
' Draws a line from the top left, to the bottom right
Draw.Line (0, 0,ME.Width, ME.Height)
' Draws a line from the top right, to the bottom left
Draw.Line (ME.Width, 0,0, ME.Height)
Draw.End
END
When you want to manipulate the width of your line , then try this example:
PUBLIC SUB Form_Open()
DIM B AS Integer
Draw.Begin(DrawingArea1)
Draw.Line(10,100, 20, 100)
FOR B = 1 TO 100 STEP 10
Draw.LineWidth=B
Draw.Line(10+B,100, 20+B, 100)
NEXT
Draw.End
END
If you want to change the color of your line to white, then try this example:
Draw.Begin(DrawingArea1)
Draw.ForeColor = &HFFFFFF
Draw.Line(1, 130, 500, 400)
Draw.End
The next small example will draw a box and fill it with white color.
PUBLIC SUB Button1_Click()
Draw.Begin(DrawingArea1)
Draw.FillColor = &HFFFFFF
draw.FillStyle = 1
'draw.ForeColor = &HFFFFFF the outline will be white also
Draw.Rect (100, 100,200,200)
Draw.End
END
The Spiral Program
This program shows you a nice spiral.
There is no scale command in Gambas (at least, not yet). Therefore the x and y coordinates are transformed in the program. The coordinate system ranges from xmin = - 2 to xmax = 2 and ymin = - 2 to ymax = 2.
You need a Drawingarea and a Commandbutton to get the example going.
How does this look ? See
The code:
PUBLIC SUB Button1_Click()
DIM dymax AS Integer
DIM dymin AS Integer
DIM ymax AS Integer
DIM ymin AS Integer
DIM y AS Float
DIM dy AS Float
DIM dyi AS Integer
DIM dxmax AS Integer
DIM dxmin AS Integer
DIM xmax AS Integer
DIM xmin AS Integer
DIM x AS Float
DIM dx AS Float
DIM dxi AS Integer
DIM k AS Float
DIM a AS Float
DIM w AS Float
dymax = DrawingArea1.Height
dymin = 0
ymax = 2
ymin = -2
dxmax = DrawingArea1.Width
dxmin = 0
xmax = 2
xmin = -2
'x-axis is drawn
FOR x = xmin TO xmax STEP 0.005
y = 0
dy = CFloat(y - ymin) / (ymax - ymin ) * (dymax - dymin) + dymin
dx = CFloat(x - xmin) / (xmax - xmin ) * (dxmax - dxmin) + dxmin
dyi = Fix(dy)
dxi = Fix(dx)
Draw.Begin(DrawingArea1)
Draw.Point(dxi,DrawingArea1.Height- dyi)
Draw.End
NEXT
'y - Axis is drawn
FOR y = ymin TO ymax STEP 0.005
x = 0
dy = CFloat(y - ymin) / (ymax - ymin ) * (dymax - dymin) + dymin
dx = CFloat(x - xmin) / (xmax - xmin ) * (dxmax - dxmin) + dxmin
dyi = Fix(dy)
dxi = Fix(dx)
Draw.Begin(DrawingArea1)
Draw.Point(dxi,DrawingArea1.Height- dyi)
Draw.End
NEXT
'Here the spiral starts
FOR k = -100 TO 150 STEP 0.5
a = 0.97
'Distance from 0,0 to the point
w = 0.15
'Angle under whiche the point is seen from the origin
a = a ^k
w = w * k
x = a * Cos(w)
'x coordinate of each point
y = a * Sin(w)
'y coordinate of each point
dy = CFloat(y - ymin) / (ymax - ymin ) * (dymax - dymin) + dymin
dx = CFloat(x - xmin) / (xmax - xmin ) * (dxmax - dxmin) + dxmin
dyi = Fix(dy)
dxi = Fix(dx)
Draw.Begin(DrawingArea1)
Draw.Point(dxi,DrawingArea1.Height- dyi)
Draw.End
NEXT
END