To my knowledge there is no command in Gambas like scale in VB.

May be the following examples are useful, for those who have to change the coordinate system.

You need a drawing area and a command button to get the example going.

You can change the values of xmin, xmax, ymin and ymax, to fit your wishes.

Example 1 coordinate system

PUBLIC SUB Button1_Click()
DIM dymax AS Integer
' maximal value of y = Height, which is drawn
DIM dymin AS Integer 
' minimal value of y, which is drawn ( = 0 )
DIM ymax AS Integer
DIM ymin AS Integer
DIM y AS Float
DIM dy AS Float
DIM dyi AS Integer

DIM dxmax AS Integer
' maximal value of x = Width, which is drawn
DIM dxmin AS Integer 
' minimal value of x, which is drawn ( mostly dxmin = 0 )

DIM xmax AS Integer
DIM xmin AS Integer
DIM x AS Float
DIM dx AS Float
DIM dxi AS Integer

dymax = DrawingArea1.Height
dymin = 0 
ymax = 4
ymin = -1 

dxmax = DrawingArea1.Width
dxmin = 0 
xmax = 12
xmin = -1 

'x-Axis is drawn
FOR x = xmin TO xmax STEP 0.005
y = 0 
' Formula 
'Relation of a length / maximallength is equal in both systems 
'(dy - dymin) / (dymax - dymin) = (y - ymin) / (ymax - ymin )
'dy - dymin = (y - ymin) / (ymax - ymin ) * (dymax - dymin) 
dy = CFloat(y - ymin) / (ymax - ymin ) * (dymax - dymin) + dymin 
' Formula for x 
'(dx - dxmin) / (dxmax - dxmin) = (x - xmin) / (xmax - xmin )
'dx - dxmin = (x - xmin) / (xmax - xmin ) * (dxmax - dxmin) 
dx = CFloat(x - xmin) / (xmax - xmin ) * (dxmax - dxmin) + dxmin 
'PRINT x,y,dx,dy
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 
'PRINT x,y,dx,dy
dyi = Fix(dy)
dxi = Fix(dx) 
Draw.Begin(DrawingArea1)
Draw.Point(dxi,DrawingArea1.Height- dyi)
Draw.End
NEXT 
END

Example 2 y = 1 / x

Take the code from example 1. Get another Command button and put the following code to it. Be careful because when x = 0 then 1 / x will not work.

PUBLIC SUB Button2_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

dymax = DrawingArea1.Height
dymin = 0 
ymax = 4
ymin = -1 

dxmax = DrawingArea1.Width
dxmin = 0 
xmax = 12
xmin = -1 

' y = 1/x is drawn 
FOR x = 0.01 TO xmax STEP 0.005
y = CFloat(1) / x
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

-- ReinerHoffmann - 18 Jan 2004