public override void DrawPath(RBrush brush, RGraphicsPath path) { var b = brush.ToBrushA(); var p = path.ToPathA(); if (b.isImage) { //Console.WriteLine("Graphics.DrawPath(B.Image)"); var rect = p.rect; var texture = b.RenderTexture(IntPtr.Zero, rect); var rects = p.GetSDLRects(); foreach (SDL.SDL_Rect r in rects) { var dst_rect = r; SDL.SDL_Rect src_rect = dst_rect; src_rect.x -= rect.x; src_rect.y -= rect.y; if (SDL.SDL_RenderCopy(_renderer, texture, ref src_rect, ref dst_rect) < 0) { Helpers.ShowSDLError("Graphics.DrawPath(B):Unable to SDL_RenderCopy!"); } } SDL.SDL_DestroyTexture(texture); } else { //Console.WriteLine("Graphics.DrawPath(B.Color)"); b.color.SetToSDLRenderer(); var rects = p.GetSDLRects(); SDL.SDL_RenderFillRects(_renderer, rects.ToArray(), rects.Count); } }
public override void DrawPath(RPen pen, RGraphicsPath path) { //! Arcs draws with width 1px pen.ToPenA().color.SetToSDLRenderer(); var p = path.ToPathA(); for (int i = 1; i < p.pathItems.Count; i++) { if (p.pathItems[i].arc) { var points = p.GetArcSDLPoints(pen.ToPenA(), p.pathItems[i]); SDL.SDL_RenderDrawPoints(_renderer, points.ToArray(), points.Count); } else { this.DrawLine(pen, p.pathItems[i - 1].x, p.pathItems[i - 1].y, p.pathItems[i].x, p.pathItems[i].y); } } }