正文

GDI圖形編程(6)

Windows移動(dòng)游戲開(kāi)發(fā)實(shí)戰(zhàn) 作者:(美)Adam Dawes


 

3.2.7  繪制矩形

矩形是另一種簡(jiǎn)單的GDI圖形結(jié)構(gòu),我們可以照搬多邊形的函數(shù)結(jié)構(gòu),使用DrawRectangle函數(shù)來(lái)繪制矩形輪廓或者使用FillRectangle來(lái)填充矩形。

可以通過(guò)兩種方法來(lái)對(duì)矩形的位置及大小進(jìn)行設(shè)置:傳遞一個(gè)填充了生成矩形所需要的信息的Rectangle結(jié)構(gòu);或指定矩形的x坐標(biāo)、y坐標(biāo)、width值以及height值。

注意:

當(dāng)為這些方法指定了矩形的第一個(gè)角時(shí),就不需要再指定其對(duì)角的坐標(biāo)了。只需要指定矩形的寬度與高度。如果有對(duì)角的坐標(biāo)數(shù)據(jù),那么矩形的寬度與高度可以通過(guò)這些公式來(lái)得到:width = (x2 – x1) ,height = (y2 – y1)。

注意,在使用DrawRectangle方法時(shí),矩形的寬度和高度包含兩個(gè)邊界:如果您指定了一個(gè)矩形,其y坐標(biāo)為10,height為20,那么該矩形的實(shí)際高度為21像素(包含了10~30之間的所有點(diǎn),10與30兩個(gè)點(diǎn)也包含其中)。

在使用FillRectangle進(jìn)行矩形填充時(shí),矩形的右邊線(xiàn)與底邊線(xiàn)會(huì)排除在外,結(jié)果會(huì)填充一個(gè)高度為20像素的矩形(包含了10~29之間的所有像素,10與29兩個(gè)點(diǎn)也包含其中)。

矩形的寬度與高度值可以為負(fù),也可以為0(會(huì)顯示為一條水平線(xiàn)或垂直的線(xiàn))。注意,如果兩個(gè)尺寸都為0的話(huà),那么不會(huì)繪制任何東西;您可以從第3.2.9節(jié)中獲得更多信息。

GDI沒(méi)有專(zhuān)門(mén)提供繪制正方形的方法,正方形只是寬度與高度相同的矩形。使用這些方法也無(wú)法繪制旋轉(zhuǎn)了的矩形(即矩形的水平邊與屏幕的側(cè)邊不垂直),不過(guò)這可以通過(guò)前面所討論的繪制多邊形的方法來(lái)實(shí)現(xiàn)。

3.2.8  繪制橢圓

橢圓與圓的創(chuàng)建方式同矩形非常相似,它們通過(guò)DrawEllipse與FillEllipse方法來(lái)創(chuàng)建,并且要傳遞給這些方法的參數(shù)也與矩形函數(shù)中的一致。創(chuàng)建好的橢圓可以精確地包含在矩形的邊界中,如圖3-6所示。

與正方形一樣,在繪制圓時(shí),只需要為寬度和高度設(shè)置相同的值即可。沒(méi)有函數(shù)能夠繪制旋轉(zhuǎn)橢圓;這樣的橢圓可以使用包含了很多小線(xiàn)段的多邊形通過(guò)擬合橢圓的形狀來(lái)生成,也可以通過(guò)自己編寫(xiě)算法來(lái)計(jì)算橢圓所涵蓋的像素來(lái)生成,但GDI本身不會(huì)為我們完成該功能。

注:以上內(nèi)容圖略,圖片內(nèi)容請(qǐng)參考原圖書(shū)


上一章目錄下一章

Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)