B3D style scaling window

BlitzMax Forums/BlitzMax Programming/B3D style scaling window

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