I`ve tried with MaxGui but the canvas stays the same size when I adjust the window. Do I need to resize the canvas myself in code?
The canvas can be resized by MaxGui automatically -> SetGadgetLayout
Your graphics need to be scaled by you, check out the Redraw() function
SuperStrict Global Window1:TGadget Global Canvas1:TGadget Window1:TGadget = CreateWindow:TGadget("Window1",68,62,392,246,Null,WINDOW_TITLEBAR|WINDOW_RESIZABLE |WINDOW_STATUS |WINDOW_CLIENTCOORDS ) Canvas1:TGadget = CreateCanvas:TGadget(0,0,392,246,Window1:TGadget,Null) SetGadgetLayout( Canvas1:TGadget,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED ) Function MyHook:Object(iId:Int,tData:Object,tContext:Object) Local Event:TEvent=TEvent(tData) If event=Null Return Null If (Event.ID = EVENT_WINDOWSIZE) Or (Event.ID = EVENT_WINDOWMOVE) Or (Event.ID = Event_AppResume) Then Redraw() End If Return tData End Function AddHook EmitEventHook , MyHook Repeat WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE Select EventSource() Case Window1 Window1_WC( Window1:TGadget ) End Select Case EVENT_GADGETPAINT Select EventSource() Case Canvas1 Canvas1_GP( Canvas1:TGadget ) End Select End Select Forever Function Window1_WC( Window:TGadget ) DebugLog "Window Window1 wants to be closed" End End Function Function Canvas1_GP( Canvas:TGadget ) DebugLog "Canvas Canvas1 needs to be redrawn" SetGraphics CanvasGraphics ( Canvas ) SetViewport 0,0,GadgetWidth( Canvas ),GadgetHeight( Canvas ) Redraw() End Function Function Redraw() Local ScaleX:Float = GadgetWidth(Canvas1 )/400.0,ScaleY:Float=GadgetHeight(Canvas1 )/300.0 SetScale( ScaleX,ScaleY) SetGraphics CanvasGraphics ( Canvas1 ) SetViewport 0,0,GadgetWidth( Canvas1 ),GadgetHeight( Canvas1 ) SetColor( 208,216,61 ) SetClsColor( 118,131,184 ) Cls SetColor 255,0,0 DrawOval GadgetWidth(canvas1)/2-(50*ScaleX),GadgetHeight(Canvas1)/2-(50*ScaleY),100,100 Flip End Function
Edit: Removed the background window