3.2.6 绘制多边形
多边形是由多条线段首尾相连并且闭合的图形。组成多边形的线段甚至可能会相互交叉,因此,诸如三角形、正方形以及矩形等都属于多边形。
在GDI中绘制一个多边形时,与使用DrawLines方法绘制折线有很多相似之处,但有两个主要区别:
● 多边形总是闭合的,即最后一个点要与第一个点相连。
● 多边形的内部区域可以用某种颜色填充,DrawLines则无法实现该功能。
多边形被定义为一个Point结构数组(方式与DrawLines方法中的参数相同),通过DrawPolygon方法绘制在窗体中。如果数组中首点与尾点的位置不同,那么这两点之间会自动通过一条线段连接在一起从而实现图形的闭合。
要填充多边形的内部区域,首先要创建一个画刷(在第3.2.4节的“画刷”小节中已经介绍过),然后调用FillPolygon方法即可。如果您还想在多边形的边界外显示一个轮廓,那么就依次调用FillPolygon与DrawPolygon(请确保是在填充完内部区域后再绘制轮廓,否则填充了的多边形会将轮廓完全遮盖)。
程序清单3-4绘制了一个多边形并对其进行填充,结果如图3-5所示。
程序清单3-4 填充并绘制多边形的轮廓
private void Form1_Paint(object sender, PaintEventArgs e)
{
// Define the points for our polygon
Point[] points = { new Point(40, 20), new Point(90, 80),
new Point(110, 50), new Point(20, 50) };
// First draw the filled polygon...
using (SolidBrush polyBrush = new SolidBrush(Color.LightBlue))
{
e.Graphics.FillPolygon(polyBrush, points);
}
// ...and then draw the outline in black on top of it
using (Pen polyPen = new Pen(Color.Black))
{
e.Graphics.DrawPolygon(polyPen, points);
}
}