public static void AddPathFigureSegment( this D2D.GeometrySink sink, Jupiter.Media.PathSegment segment) { var bezierSegment = segment as BezierSegment; if (bezierSegment != null) { sink.AddBezier( new D2D.BezierSegment { Point1 = bezierSegment.Point1.ToSharpDX(), Point2 = bezierSegment.Point2.ToSharpDX(), Point3 = bezierSegment.Point3.ToSharpDX() }); return; } var lineSegment = segment as LineSegment; if (lineSegment != null) { sink.AddLine( lineSegment.Point.ToSharpDX()); return; } var polyBezierSegment = segment as PolyBezierSegment; if (polyBezierSegment != null) { var beziers = new D2D.BezierSegment[polyBezierSegment.Points.Count / 3]; for (int i = 0; i < beziers.Length; i++) { beziers[i].Point1 = polyBezierSegment.Points[i * 3].ToSharpDX(); beziers[i].Point2 = polyBezierSegment.Points[i * 3 + 1].ToSharpDX(); beziers[i].Point3 = polyBezierSegment.Points[i * 3 + 2].ToSharpDX(); } sink.AddBeziers(beziers); return; } var polyLineSegment = segment as PolyLineSegment; if (polyLineSegment != null) { var lines = new SharpDX.DrawingPointF[polyLineSegment.Points.Count]; for (int i = 0; i < lines.Length; i++) { lines[i] = polyLineSegment.Points[i].ToSharpDX(); } sink.AddLines(lines); return; } var quadraticBezierSegment = segment as QuadraticBezierSegment; if (quadraticBezierSegment != null) { sink.AddQuadraticBezier( new D2D.QuadraticBezierSegment { Point1 = quadraticBezierSegment.Point1.ToSharpDX(), Point2 = quadraticBezierSegment.Point2.ToSharpDX() }); return; } var polyQuadraticBezierSegment = segment as PolyQuadraticBezierSegment; if (polyQuadraticBezierSegment != null) { var quadraticBeziers = new D2D.QuadraticBezierSegment[polyBezierSegment.Points.Count / 2]; for (int i = 0; i < quadraticBeziers.Length; i++) { quadraticBeziers[i].Point1 = polyBezierSegment.Points[i * 2].ToSharpDX(); quadraticBeziers[i].Point2 = polyBezierSegment.Points[i * 2 + 1].ToSharpDX(); } sink.AddQuadraticBeziers(quadraticBeziers); return; } var arcSegment = segment as ArcSegment; if (arcSegment != null) { sink.AddArc( new D2D.ArcSegment { Point = arcSegment.Point.ToSharpDX(), Size = arcSegment.Size.ToSharpDX(), RotationAngle = (float)arcSegment.RotationAngle, SweepDirection = arcSegment.SweepDirection.ToSharpDX(), ArcSize = arcSegment.IsLargeArc ? D2D.ArcSize.Large : D2D.ArcSize.Small }); return; } }
/// <summary> /// Adds lines to each of the specified <paramref name="points"/> /// </summary> /// <param name="path">Path to add the lines to</param> /// <param name="points">Points for each line</param> public static void AddLines (this IGraphicsPath path, params PointF[] points) { path.AddLines (points); }
public static void AddRectangleGeometry( this D2D.GeometrySink sink, Jupiter.Media.RectangleGeometry rectangleGeometry) { sink.BeginFigure( new DrawingPointF( (float)(rectangleGeometry.Rect.Left), (float)(rectangleGeometry.Rect.Top)), D2D.FigureBegin.Filled); sink.AddLines( new [] { new DrawingPointF( (float)(rectangleGeometry.Rect.Right), (float)(rectangleGeometry.Rect.Top)), new DrawingPointF( (float)(rectangleGeometry.Rect.Right), (float)(rectangleGeometry.Rect.Bottom)), new DrawingPointF( (float)(rectangleGeometry.Rect.Left), (float)(rectangleGeometry.Rect.Bottom)), }); sink.EndFigure(D2D.FigureEnd.Closed); }
public static void AddLines(this TextBox textBox, ConcurrentQueue<string> texts) { var counter = 0; Count += texts.Count; ++Calls; while (texts.Count > 0) { string name = ""; texts.TryDequeue(out name); textBox.AddLine(name); if (++counter > 10) { new System.Threading.Timer((_) => textBox.BeginInvoke(new Action(() => textBox.AddLines(texts))), null, 200, 0); return; } } }