3.3 位圖
掌握了如何繪制矩形、橢圓等基本圖形后,現(xiàn)在就來看看GDI所提供的最有用的繪圖功能:位圖。
GDI中的Bitmap對象允許我們創(chuàng)建一個屏幕外的圖像(可以使用第3.2節(jié)中用到的繪圖方法和填充方法,可以加載預先繪制的圖形,還可以使用這些方法的組合),然后將該圖像的副本繪制在屏幕上。通過位圖,我們可以將外部的圖形加載到自己的游戲當中,可以利用圖形基礎函數(shù)來構建復雜圖形。只需要調用一個函數(shù)就可以將它們繪制到屏幕上。這些功能是使用GDI時最接近sprites(指移動圖形對象)的。也可以通過每次更新屏幕時改變要繪制的圖像來創(chuàng)建有效的動畫圖形。
3.3.1 使用Graphics類的基本函數(shù)創(chuàng)建位圖
通過在本章中已經(jīng)使用過的繪圖函數(shù)來創(chuàng)建位圖是很簡單的。只要圖像準備好,在屏幕上繪制就是快速和高效的,大大地優(yōu)于重復調用那些繪圖函數(shù)。
用這種方法來創(chuàng)建位圖的話,首先要實例化一個Bitmap對象,在對象的構造函數(shù)中設置好我們所期望的圖像的寬度和高度(單位為像素)。這樣就創(chuàng)建好了一個空的位圖,該位圖在初始時被填充為黑色。
為了能夠在位圖上進行繪圖,我們需要獲得一個Graphics對象,這可以調用靜態(tài)函數(shù)Graphics.FromImage來實現(xiàn)。一旦它執(zhí)行完畢,我們就可以使用所有的繪圖方法來繪制任何想要的圖形(或文本)。要記得這是發(fā)生在位圖中,而不是在屏幕上,位圖是不可見的,直到我們以后對它進行了繪制才會可見(這將很快實現(xiàn))。
程序清單3-8中創(chuàng)建了一個Bitmap對象,將其背景設置為白色,然后在其內(nèi)部繪制了一個圓。
程序清單3-8 創(chuàng)建一個位圖,并在上面繪畫
// 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屬性,不需要單獨存儲這些信息。