Public Sub Example5() ' A custom shape that could be wrapped in a function Dim X0 As Float = 25.6 Dim Y0 As Float = 25.6 Dim RectWidth As Float = 204.8 Dim RectHeight As Float = 204.8 Dim Radius As Float = 102.4 Dim X1, Y1 As Float X1 = X0 + RectWidth Y1 = Y0 + RectHeight If Not (RectWidth > 0.0) Or Not (RectHeight > 0.0) Then Return If RectWidth / 2 < Radius Then If RectHeight / 2 < Radius Then Paint.MoveTo(X0, (Y0 + Y1) / 2) Paint.CurveTo(X0, Y0, X0, Y0, (X0 + X1) / 2, Y0) Paint.CurveTo(X1, Y0, X1, Y0, X1, (Y0 + Y1) / 2) Paint.CurveTo(X1, Y1, X1, Y1, (X1 + X0) / 2, Y1) Paint.CurveTo(X0, Y1, X0, Y1, X0, (Y0 + Y1) / 2) Else Paint.MoveTo(X0, Y0 + Radius) Paint.CurveTo(X0, Y0, X0, Y0, (X0 + X1) / 2, Y0) Paint.CurveTo(X1, Y0, X1, Y0, X1, Y0 + Radius) Paint.LineTo(X1, Y1 - Radius) Paint.CurveTo(X1, Y1, X1, Y1, (X1 + X0) / 2, Y1) Paint.CurveTo(X0, Y1, X0, Y1, X0, Y1 - Radius) Endif Else If (RectHeight / 2 < Radius) Then Paint.MoveTo(X0, (Y0 + Y1) / 2) Paint.CurveTo(X0, Y0, X0, Y0, X0 + Radius, Y0) Paint.LineTo(X1 - Radius, Y0) Paint.CurveTo(X1, Y0, X1, Y0, X1, (Y0 + Y1) / 2) Paint.CurveTo(X1, Y1, X1, Y1, X1 - Radius, Y1) Paint.LineTo(X0 + Radius, Y1) Paint.CurveTo(X0, Y1, X0, Y1, X0, (Y0 + Y1) / 2) Else Paint.MoveTo(X0, Y0 + Radius) Paint.CurveTo(X0, Y0, X0, Y0, X0 + Radius, Y0) Paint.LineTo(X1 - Radius, Y0) Paint.CurveTo(X1, Y0, X1, Y0, X1, Y0 + Radius) Paint.LineTo(X1, Y1 - Radius) Paint.CurveTo(X1, Y1, X1, Y1, X1 - Radius, Y1) Paint.LineTo(X0 + Radius, Y1) Paint.CurveTo(X0, Y1, X0, Y1, X0, Y1 - Radius) Endif Endif Paint.ClosePath Paint.Brush = Paint.Color(Color.RGB(128, 128, 255)) Paint.Fill(True) Paint.Brush = Paint.Color(Color.RGB(128, 0, 0, 128)) Paint.LineWidth = 10.0 Paint.Stroke End