2021年2月5日星期五

FillPath Union of Polygons in a Inclusive(non-XOR) Fashion

I need to fill a complex region with anti-aliasing.

The region is composed of numerous rotated rectangles (as of petal of a sunflower) and a central circle.

Region does not support anti-aliasing

so I tried FillPath but areas where rectangles overlap are not filled. (XOR'ed)

        // Has alpha so FillPath-ing multiple times doesn't help          Color color = Color.FromArgb(128, 32, 64, 255);          Brush brush = new SolidBrush(color);          Region region = null;          //GraphicsPath bigPath = new GraphicsPath();          for (int i = 0; i < nPetals; i++)          {              GraphicsPath pat = new GraphicsPath();              Point p1, p2, p3, p4; // Actual code omitted              pat.AddPolygon(new[] { p1, p2, p3, p4 });                         //bigPath.AddPolygon(new[] { p1, p2, p3, p4 });              if (region == null)                  region = new Region(pat);              else region.Union(pat);          }                     var pathCirc = new GraphicsPath();          pathCirc.AddEllipse(100,200,3,3);          region.Union(path);               g.FillRegion(brush, region);    //Aliased          //g.FillPath(brush, bigPath);   //XOR'ed  

Is there any way to GraphicsPath.AddPolygon/AddEllipse() non-XOR way?

enter image description here

https://stackoverflow.com/questions/66067247/fillpath-union-of-polygons-in-a-inclusivenon-xor-fashion February 06, 2021 at 12:47AM

没有评论:

发表评论