Platforms to show: All Mac Windows Linux Cross-Platform
/Tools/Clipper/Clipper Ellipse Test
Required plugins for this example: MBS Tools Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Tools/Clipper/Clipper Ellipse Test
This example is the version from Wed, 9th Jan 2018.
Project "Clipper Ellipse Test.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
EventHandler Sub Open()
dim p as new Picture(Width, Height, 32)
dim g as Graphics = p.Graphics
//set up the subject and clip polygons ...
dim ellipses as new ClipperPathsMBS
ellipses.Append ClipperMBS.EllipsePoints(100,100,300,300)
ellipses.Append ClipperMBS.EllipsePoints(125,130,275,180)
ellipses.Append ClipperMBS.EllipsePoints(125,220,275,270)
dim clp as new ClipperPathsMBS
clp.Append ClipperMBS.EllipsePoints(140,70,220,320)
//display the subject and clip polygons ...
DrawPolygons(g, ellipses, &c33FFFF80)
DrawPolygons(g, clp, &cFFFF3380)
//get the intersection of the subject and clip polygons ...
dim clpr as new ClipperEngineMBS
call clpr.AddPaths(ellipses, ClipperMBS.PolyType.Subject, true)
call clpr.AddPaths(clp, ClipperMBS.PolyType.Clip, true)
dim solution as new ClipperPathsMBS
if clpr.Execute(ClipperMBS.ClipType.Intersection, solution, ClipperMBS.PolyFillType.EvenOdd, ClipperMBS.PolyFillType.EvenOdd) then
//finally draw the intersection polygons ...
DrawPolygons(g, solution, &c80808040)
end if
Backdrop = p
End EventHandler
Sub DrawPolygon(g as graphics, p as ClipperPathMBS, c as color, ox as integer = 0, oy as integer = 0)
dim coordinates(0) as integer
dim points() as ClipperPointMBS = p.Values
for each point as ClipperPointMBS in points
coordinates.Append point.x + ox
coordinates.Append point.y + oy
next
g.ForeColor = c
g.FillPolygon coordinates
End Sub
Sub DrawPolygons(g as Graphics, paths as ClipperPathsMBS, c1 as color, c2 as color, ox as integer = 0, oy as integer = 0)
dim pathsList() as ClipperPathMBS = paths.Values
dim b as Boolean
for each p as ClipperPathMBS in pathsList
if b then
DrawPolygon(g, p, c2, ox, oy)
else
DrawPolygon(g, p, c1, ox, oy)
end if
b = not b
next
End Sub
Sub DrawPolygons(g as Graphics, paths as ClipperPathsMBS, c as color, ox as integer = 0, oy as integer = 0)
dim pathsList() as ClipperPathMBS = paths.Values
dim b as Boolean
for each p as ClipperPathMBS in pathsList
DrawPolygon(g, p, c, ox, oy)
b = not b
next
End Sub
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
End Project
See also:
The items on this page are in the following plugins: MBS Tools Plugin.