protected virtual void Draw(IGraphics g, int startIndex, int length, float thickness) { g.BeginEntity(this); if (length == 0) { } else if (length == 1) { var p = _points [startIndex]; var r = thickness / 2; g.FillOval(p.X - r, p.Y - r, thickness, thickness); } else { g.BeginLines(true); var end = startIndex + length; for (var i = startIndex; i < end - 1; i++) { g.DrawLine( _points [i].X, _points [i].Y, _points [i + 1].X, _points [i + 1].Y, thickness); } g.EndLines(); } }
protected virtual void Draw (IGraphics g, int startIndex, int length, float thickness) { g.BeginEntity (this); if (length == 0) { } else if (length == 1) { var p = _points [startIndex]; var r = thickness / 2; g.FillOval (p.X - r, p.Y - r, thickness, thickness); } else { g.BeginLines (true); var end = startIndex + length; for (var i = startIndex; i < end - 1; i++) { g.DrawLine ( _points [i].X, _points [i].Y, _points [i + 1].X, _points [i + 1].Y, thickness); } g.EndLines (); } }
public void Render(IGraphics g, OpenGLTextureReference tex) { g.SetColor (Colors.White); var x = tex.X + tex.ShapeOffset.X; var y = tex.Y + tex.ShapeOffset.Y; switch (ShapeType) { case OpenGLShapeType.Line: g.DrawLine (x, y, x + A, y + B, C); break; case OpenGLShapeType.Rect: if (Fill) { g.FillRect (x, y, A, B); } else { g.DrawRect (x, y, A, B, C); } break; case OpenGLShapeType.RoundedRect: if (Fill) { g.FillRoundedRect (x, y, A, B, C); } else { g.DrawRoundedRect (x, y, A, B, C, D); } break; case OpenGLShapeType.Oval: if (Fill) { g.FillOval (x, y, A, B); } else { g.DrawOval (x, y, A, B, C); } break; case OpenGLShapeType.Character: g.SetFont (Font); g.DrawString (Char.ToString (), x, y); break; case OpenGLShapeType.Polygon: { var dx = x - Poly.Points[0].X; var dy = y - Poly.Points[0].Y; var dpoly = new Polygon (); for (var i = 0; i < Poly.Points.Count; i++) { dpoly.AddPoint (Poly.Points[i].X + dx, Poly.Points[i].Y + dy); } if (Fill) { g.FillPolygon (dpoly); } else { g.DrawPolygon (dpoly, A); } } break; case OpenGLShapeType.Arc: if (Fill) { g.FillArc (x, y, A, B, C); } else { g.DrawArc (x, y, A, B, C, D); } break; case OpenGLShapeType.Polyline: { var dx = x - PolylinePoints[0].X; var dy = y - PolylinePoints[0].Y; g.BeginLines (true); for (var i = 0; i < PolylineLength - 1; i++) { g.DrawLine ( PolylinePoints[i].X + dx, PolylinePoints[i].Y + dy, PolylinePoints[i + 1].X + dx, PolylinePoints[i + 1].Y + dy, A); } g.EndLines (); } break; default: throw new NotSupportedException (); } }