Sub Test() Dim c As New PatternCanvas Dim a As Double, x As Long, y As Long c.Size = cdrPatternCanvas64x64 c.Clear DrawCircle c, 32, 16, 16, True c.CopyArea 0, 0, 31, 31, 32, 0 c.RotateArea 32, 0, 63, 31, -90 c.CopyArea 0, 0, 63, 31, 0, 32 c.RotateArea 0, 32, 63, 63, 180 With ActiveLayer.CreateRectangle(0, 0, 2, 2) .Fill.ApplyPatternFill cdrTwoColorPattern .Fill.Pattern.Canvas = c End WithEnd Sub' ==== The following two subroutines draw a circle on a canvasPrivate Sub DrawCircle(c As PatternCanvas, CenterX As Long, CenterY As Long, Radius As Long, Filled As Boolean) Dim p As Long, x As Long, y As Long x = 0 y = Radius Plot c, x, y, CenterX, CenterY, Filled p = 1 - Radius While x < y If p < 0 Then x = x + 1 p = p + 2 * x + 1 Else x = x + 1 y = y - 1 p = p + 2 * (x - y) + 1 End If Plot c, x, y, CenterX, CenterY, Filled WendEnd SubPrivate Sub Plot(c As PatternCanvas, x As Long, y As Long, cx As Long, cy As Long, Filled As Boolean) If Filled Then c.Line (cx + x, cy + y)-(cx - x, cy + y) c.Line (cx + x, cy - y)-(cx - x, cy - y) c.Line (cx + y, cy + x)-(cx - y, cy + x) c.Line (cx + y, cy - x)-(cx - y, cy - x) Else c.PSet (cx + x, cy + y) c.PSet (cx - x, cy + y) c.PSet (cx + x, cy - y) c.PSet (cx - x, cy - y) c.PSet (cx + y, cy + x) c.PSet (cx - y, cy + x) c.PSet (cx + y, cy - x) c.PSet (cx - y, cy - x) End IfEnd Sub