c#填充除GraphicsPath之外的所有内容

时间:2009-12-20 12:08:02

标签: c# graphics path

我有一些看起来像这样的代码:

GraphicsPath p = new GraphicsPath();
// Add some elements to p ...
// ...

g.FillPath(bgBrush, p);
// where g : Graphics and bgBrush : Brush

这会产生如下情况:

### |
  ##|
 ## |

如何填写路径的确切补充?

期望的输出:

   #|
##  |
#  #|

1 个答案:

答案 0 :(得分:8)

我很惊讶到目前为止没有人回答 - 解决方案非常简单。只需在路径中添加一个Rectangle,内部的所有内容都将被恢复。

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        Graphics g = e.Graphics;
        g.Clear(BackColor);

        GraphicsPath p = new GraphicsPath();
        // add the desired path
        p.AddPie(100, 100, 100, 100, 0, 270);

        // add the rectangle to invert the inside
        p.AddRectangle(new Rectangle(50, 50, 200, 200));

        g.FillPath(Brushes.Black, p);
    }