public static void FillPolygon(this Graphics g, Polygon polygon, Color color) { var polygonFillHelper = new PolygonFillHelper(new List<Point>(polygon.Points)); var segments = polygonFillHelper.FillPolygon(g); using (Pen pen = new Pen(color)) { foreach (var segment in segments) { g.DrawLine(pen, segment.p1, segment.p2); } } }
public static void FillPolygon(this Graphics g, Polygon polygon, Bitmap texture, Bitmap destination) { var polygonFillHelper = new PolygonFillHelper(new List<Point>(polygon.Points)); var segments = polygonFillHelper.FillPolygon(g); for (int y = 0; y < segments.Count; y++) { for (int x = 0; x < segments[y].p2.X - segments[y].p1.X; x++) { Color color = texture.GetPixel(x % texture.Width, y % texture.Height); if (segments[y].p1.X + x < destination.Width && segments[y].p1.X + x > 0 && segments[y].p1.Y > 0 && segments[y].p1.Y < destination.Height) destination.SetPixel(segments[y].p1.X + x, segments[y].p1.Y, color); } } }