diff options
Diffstat (limited to 'Software/Visual_Studio/SideChains/RealTimeGraphEx/ExtensionMethods/RenderTargetExtensions.cs')
| -rw-r--r-- | Software/Visual_Studio/SideChains/RealTimeGraphEx/ExtensionMethods/RenderTargetExtensions.cs | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphEx/ExtensionMethods/RenderTargetExtensions.cs b/Software/Visual_Studio/SideChains/RealTimeGraphEx/ExtensionMethods/RenderTargetExtensions.cs new file mode 100644 index 000000000..fcedc6083 --- /dev/null +++ b/Software/Visual_Studio/SideChains/RealTimeGraphEx/ExtensionMethods/RenderTargetExtensions.cs @@ -0,0 +1,83 @@ +using SharpDX; +using SharpDX.Direct2D1; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RealTimeGraphEx.ExtensionMethods +{ + public static class RenderTargetExtensions + { + public static void DrawPolygon(this RenderTarget target, SharpDX.Direct2D1.Factory factory, Brush stroke, double strokeWidth, Vector2[] vectors) + { + PathGeometry geo = new PathGeometry(factory); + GeometrySink sink1; + sink1 = geo.Open(); + sink1.BeginFigure(vectors[0], new FigureBegin()); + sink1.AddLines(vectors); + sink1.EndFigure(new FigureEnd()); + sink1.Close(); + + target.DrawGeometry(geo, stroke, (float)strokeWidth); + + vectors = null; + geo.Dispose(); + sink1.Dispose(); + stroke.Dispose(); + } + + public static void DrawMultiPolygon(this RenderTarget target, SharpDX.Direct2D1.Factory factory, List<Brush> strokes, double strokeWidth, List<Vector2[]> vectorsCollection) + { + List<PathGeometry> geos = new List<PathGeometry>(); + List<GeometrySink> sinks = new List<GeometrySink>(); + + foreach (var vectors in vectorsCollection) + { + var geo = new PathGeometry(factory); + GeometrySink sink1; + sink1 = geo.Open(); + sink1.BeginFigure(vectors[0], new FigureBegin()); + sink1.AddLines(vectors); + sink1.EndFigure(new FigureEnd()); + sink1.Close(); + + geos.Add(geo); + sinks.Add(sink1); + } + + for (int i = 0; i < geos.Count; i++) + { + target.DrawGeometry(geos[i], strokes[i], (float)strokeWidth); + } + + vectorsCollection = null; + + for (int i = 0; i < strokes.Count; i++) + { + geos[i].Dispose(); + sinks[i].Dispose(); + strokes[i].Dispose(); + } + } + + public static void FillPolygon(this RenderTarget target, SharpDX.Direct2D1.Factory factory, Brush fill, Vector2[] vectors) + { + PathGeometry geo = new PathGeometry(factory); + GeometrySink sink1; + sink1 = geo.Open(); + sink1.BeginFigure(vectors[0], new FigureBegin()); + sink1.AddLines(vectors); + sink1.EndFigure(new FigureEnd()); + sink1.Close(); + + target.FillGeometry(geo, fill); + + vectors = null; + geo.Dispose(); + sink1.Dispose(); + fill.Dispose(); + } + } +} |
