3.2.6 繪制多邊形
多邊形是由多條線段首尾相連并且閉合的圖形。組成多邊形的線段甚至可能會(huì)相互交叉,因此,諸如三角形、正方形以及矩形等都屬于多邊形。
在GDI中繪制一個(gè)多邊形時(shí),與使用DrawLines方法繪制折線有很多相似之處,但有兩個(gè)主要區(qū)別:
● 多邊形總是閉合的,即最后一個(gè)點(diǎn)要與第一個(gè)點(diǎn)相連。
● 多邊形的內(nèi)部區(qū)域可以用某種顏色填充,DrawLines則無(wú)法實(shí)現(xiàn)該功能。
多邊形被定義為一個(gè)Point結(jié)構(gòu)數(shù)組(方式與DrawLines方法中的參數(shù)相同),通過DrawPolygon方法繪制在窗體中。如果數(shù)組中首點(diǎn)與尾點(diǎn)的位置不同,那么這兩點(diǎn)之間會(huì)自動(dòng)通過一條線段連接在一起從而實(shí)現(xiàn)圖形的閉合。
要填充多邊形的內(nèi)部區(qū)域,首先要?jiǎng)?chuàng)建一個(gè)畫刷(在第3.2.4節(jié)的“畫刷”小節(jié)中已經(jīng)介紹過),然后調(diào)用FillPolygon方法即可。如果您還想在多邊形的邊界外顯示一個(gè)輪廓,那么就依次調(diào)用FillPolygon與DrawPolygon(請(qǐng)確保是在填充完內(nèi)部區(qū)域后再繪制輪廓,否則填充了的多邊形會(huì)將輪廓完全遮蓋)。
程序清單3-4繪制了一個(gè)多邊形并對(duì)其進(jìn)行填充,結(jié)果如圖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);
}
}