Example: /Tools/Clipper/Clipper Intersecion Test

Online Documentation   -   Statistics   -   FAQ   -   Plugin Parts (All, Dependencies)   -   Class hierarchy

New in Version 22.2 22.3 22.4 22.5 23.0 23.1 23.2 23.3 23.4 23.5 24.0 24.1

The list of the   topics,   classes,   interfaces,   controls,   modules,   global methods by category,   global methods by name,   screenshots,   licenses   and   examples.

Platforms to show: All Mac Windows Linux Cross-Platform

/Tools/Clipper/Clipper Intersecion 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 Intersecion Test

This example is the version from Wed, 9th Jan 2018.

Project "Clipper Intersecion 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 dim subj as new ClipperPathsMBS dim clip as new ClipperPathsMBS //define outer blue 'subject' polygon subj.Append new ClipperPathMBS(array(new ClipperPointMBS(180,200), new ClipperPointMBS(260,200), new ClipperPointMBS(260,150), new ClipperPointMBS(180,150))) //define subject's inner triangular 'hole' (with reverse orientation) subj.Append new ClipperPathMBS(array(new ClipperPointMBS(215,160), new ClipperPointMBS(230,190), new ClipperPointMBS(200,190))) //define orange 'clipping' polygon clip.Append new ClipperPathMBS(array(new ClipperPointMBS(190,210), new ClipperPointMBS(240,210), new ClipperPointMBS(240,130), new ClipperPointMBS(190,130))) //draw input polygons with user-defined routine ... DrawPolygons(g, subj, &c0000FF16, &c00FF0060) //blue DrawPolygons(g, clip, &cFFFF0020, &cFF000030) //orange DrawPolygons(g, subj, &c0000FF16, &c00FF0060, -100, -100) //blue DrawPolygons(g, clip, &cFFFF0020, &cFF000030, -100, 100) //orange //perform intersection ... dim c as new ClipperEngineMBS call c.AddPaths(subj, ClipperMBS.PolyType.Subject, true) call c.AddPaths(clip, ClipperMBS.PolyType.Clip, true) dim cliptype as ClipperMBS.ClipType = ClipperMBS.ClipType.Intersection dim PolyFillType as ClipperMBS.PolyFillType = ClipperMBS.PolyFillType.NonZero dim solution as ClipperPathsMBS if c.Execute(ClipType, solution, PolyFillType, PolyFillType) then //draw solution with user-defined routine ... DrawPolygons(g, solution, &c00FF0030, &cFF006600) //solution shaded green DrawPolygons(g, solution, &c00FF0030, &cFF006600, 100) //solution shaded green with red hole 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
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.


💬 Ask a question or report a problem