#Region Project Attributes
#MainFormWidth: 400
#MainFormHeight: 400
#End Region
Sub Process_Globals
Type point(x As Float, y As Float)
Type path(color As Int, pathlist As List)
Private fx As JFX
Private MainForm As Form
Private cnv As Canvas
Private drawing As List
Private isDrawing As Boolean
Private btn As Button
Private path As path
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.Show
drawing.Initialize
path.Initialize
path.pathlist.Initialize
cnv.Initialize("cnv")
btn.Initialize("btn")
btn.Text = "Undo"
MainForm.RootPane.AddNode(cnv,0,0,MainForm.Width,MainForm.Height)
MainForm.RootPane.AddNode(btn,MainForm.Width*0.75,MainForm.Height*0.05,MainForm.Width*0.2,MainForm.Height*0.1)
cnv.ClearRect(0,0,cnv.Width,cnv.Height)
End Sub
Sub MainForm_MousePressed (EventData As MouseEvent)
path.pathlist.Clear
path.color = fx.Colors.To32Bit(fx.Colors.RGB(Rnd(0,255),Rnd(0,255),Rnd(0,255)))
isDrawing = True
End Sub
Sub MainForm_MouseDragged (EventData As MouseEvent)
If isDrawing Then
Dim p As point
p.Initialize
p.x = EventData.X
p.y = EventData.Y
path.pathlist.Add(p)
cnv.DrawCircle(p.x,p.y,4,fx.Colors.From32Bit(path.color),True,2)
End If
End Sub
Sub MainForm_MouseReleased (EventData As MouseEvent)
isDrawing = False
Dim l As path
l.Initialize
l.pathlist.Initialize
l.pathlist.AddAll(path.pathlist)
l.color = path.color
drawing.Add(l)
End Sub
Sub btn_MouseClicked (EventData As MouseEvent)
If drawing.Size = 0 Then Return
drawing.RemoveAt(drawing.Size-1)
cnv.ClearRect(0,0,cnv.Width,cnv.Height)
For Each l As path In drawing
For Each p As point In l.pathlist
cnv.DrawCircle(p.x,p.y,4,fx.Colors.From32Bit(l.color),True,2)
Next
Next
End Sub