2014-02-10 231 views
2

我有绘制两个多边形的问题。 我想填充两个三角形,但其中一个大于第二个。 我在winforms中使用UserControl。 代码:C#填充多边形(三角形)

Point[] DOWN = new Point[] {new Point(0, 0), new Point(10, 0), new Point(5, 5)}; 
Point[] UP = new Point[] { new Point(0, 15), new Point(10, 15), new Point(5, 10) }; 

protected override void OnPaint(PaintEventArgs e) 
     { 
      base.OnPaint(e); 
      SolidBrush brush = new SolidBrush(Color.FromArgb(253, 198, 19));  
      e.Graphics.FillPolygon(brush, DOWN); 
      e.Graphics.FillPolygon(brush, UP); 
      brush.Dispose(); 
     } 

This is result of fill polygons 在哪里的问题?

+0

第一个三角形是OK –

回答

2

尝试将PixelOffsetMode属性:

e.Graphics.PixelOffsetMode = PixelOffsetMode.Half; 
using (SolidBrush brush = new SolidBrush(Color.FromArgb(253, 198, 19))) { 
    e.Graphics.FillPolygon(brush, DOWN); 
    e.Graphics.FillPolygon(brush, UP); 
} 

结果:

enter image description here

0

尽量保持逆时针顺序,从最高点开始:

new Point(5, 10), new Point(10, 15), new Point(0, 15) 

告诉我们,如果这有助于。有时候这些算法在边界条件下表现不佳。

+0

问题仍然存在:( –