正文

GDI圖形編程(10)

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


 

3.3  位圖

掌握了如何繪制矩形、橢圓等基本圖形后,現(xiàn)在就來看看GDI所提供的最有用的繪圖功能:位圖。

GDI中的Bitmap對(duì)象允許我們創(chuàng)建一個(gè)屏幕外的圖像(可以使用第3.2節(jié)中用到的繪圖方法和填充方法,可以加載預(yù)先繪制的圖形,還可以使用這些方法的組合),然后將該圖像的副本繪制在屏幕上。通過位圖,我們可以將外部的圖形加載到自己的游戲當(dāng)中,可以利用圖形基礎(chǔ)函數(shù)來構(gòu)建復(fù)雜圖形。只需要調(diào)用一個(gè)函數(shù)就可以將它們繪制到屏幕上。這些功能是使用GDI時(shí)最接近sprites(指移動(dòng)圖形對(duì)象)的。也可以通過每次更新屏幕時(shí)改變要繪制的圖像來創(chuàng)建有效的動(dòng)畫圖形。

3.3.1  使用Graphics類的基本函數(shù)創(chuàng)建位圖

通過在本章中已經(jīng)使用過的繪圖函數(shù)來創(chuàng)建位圖是很簡(jiǎn)單的。只要圖像準(zhǔn)備好,在屏幕上繪制就是快速和高效的,大大地優(yōu)于重復(fù)調(diào)用那些繪圖函數(shù)。

用這種方法來創(chuàng)建位圖的話,首先要實(shí)例化一個(gè)Bitmap對(duì)象,在對(duì)象的構(gòu)造函數(shù)中設(shè)置好我們所期望的圖像的寬度和高度(單位為像素)。這樣就創(chuàng)建好了一個(gè)空的位圖,該位圖在初始時(shí)被填充為黑色。

為了能夠在位圖上進(jìn)行繪圖,我們需要獲得一個(gè)Graphics對(duì)象,這可以調(diào)用靜態(tài)函數(shù)Graphics.FromImage來實(shí)現(xiàn)。一旦它執(zhí)行完畢,我們就可以使用所有的繪圖方法來繪制任何想要的圖形(或文本)。要記得這是發(fā)生在位圖中,而不是在屏幕上,位圖是不可見的,直到我們以后對(duì)它進(jìn)行了繪制才會(huì)可見(這將很快實(shí)現(xiàn))。

程序清單3-8中創(chuàng)建了一個(gè)Bitmap對(duì)象,將其背景設(shè)置為白色,然后在其內(nèi)部繪制了一個(gè)圓。

程序清單3-8 創(chuàng)建一個(gè)位圖,并在上面繪畫

// Declare the Bitmap object that we are going to create

Bitmap myBitmap;

private void InitializeBitmap()

{

// Create the bitmap and set its width and height

myBitmap = new Bitmap(50, 50);

// Create a Graphics object for our bitmap

using (Graphics gfx = Graphics.FromImage(myBitmap))

{

// Fill the entire bitmap in white

gfx.Clear(Color.White);

// Create a pen for drawing

using (Pen b = new Pen(Color.Black))

{

// Draw a circle within our bitmap

gfx.DrawEllipse(b, 0, 0, myBitmap.Width, myBitmap.Height);

}

}

}

從程序清單3-8中您可以看到,為了獲得Bitmap的尺寸,我們可以使用其Width屬性和Height屬性,不需要單獨(dú)存儲(chǔ)這些信息。


上一章目錄下一章

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