'Example
Sub Page1_Click
DrawPolygon(cvs, Array (Array As Int(100dip, 100dip), Array As Int(200dip, 0), _
Array As Int (300dip, 100dip), Array As Int(200dip, 200dip), Array As Int(100dip, 100dip)), _
xui.Color_Red, True, 2dip)
cvs.Invalidate
End Sub
Sub DrawPolygon (cvs1 As B4XCanvas, Points As List, Color As Int, Filled As Boolean, StrokeWidth As Double)
If Points.Size < 1 Then Return
#if B4A or B4i
Dim FirstPoint() As Int = Points.Get(0)
Dim p As B4XPath
p.Initialize(FirstPoint(0), FirstPoint(1))
For i = 1 To Points.Size - 1
Dim point() As Int = Points.Get(i)
p.LineTo(point(0), point(1))
Next
cvs1.DrawPath(p, Color, Filled, StrokeWidth)
#Else
Dim jcvs As JavaObject = cvs1
jcvs = jcvs.GetFieldJO("cvs").RunMethodJO("getObject", Null).RunMethod("getGraphicsContext2D", Null)
jcvs.RunMethod("save", Null)
Dim xpoints(Points.Size), ypoints(Points.Size) As Double
For i = 0 To Points.Size - 1
Dim point() As Int = Points.Get(i)
xpoints(i) = point(0)
ypoints(i) = point(1)
Next
Dim paint As Object = fx.Colors.From32Bit(Color)
If Filled Then
jcvs.RunMethod("setFill", Array(paint))
jcvs.RunMethod("fillPolygon", Array(xpoints, ypoints, Points.Size))
Else
jcvs.RunMethod("setStroke", Array(paint))
jcvs.RunMethod("setLineWidth", Array(StrokeWidth))
jcvs.RunMethod("strokePolygon", Array(xpoints, ypoints, Points.Size))
End If
jcvs.RunMethod("restore", Null)
#End If
End Sub