歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android游戲編程之基本圖形編程

使用位圖

加載和檢查位圖:Bitmap類我們可通過BitmapFactory單元素就可以從文件加載位圖。

由於我們將圖像以資源形式儲存,因此我們從assets/目錄加載一幅圖像。

InputStream inputStream = assetManager.open("bob.png");

Bitmap bitmap = BitmapFactory.decodeStream(inputStream);

我們可以通過一下方法獲取圖像的像素寬度和高度:

int width = bitmap.getWidth();

int height = bitmap.getHeight();

接下來我們想知道是以什麼樣的顏色格式來存儲位圖:

Bitmap.Config config = bitmap.getConfig();

Bitmap.Config是一個枚舉,其值如下:

Config.ALPHA_8    Config.ARGB_4444  Config.ARGB_8888  Config.RGB_565

 


我們可嘗試使用BitmapFactory以一個特定的顏色格式來加載一幅圖像,甚至是它的原始格式不同。

InputStream inputStream = assetManager.open("bob.png");

BitmapFactory.Options options = new BitmapFactory.Options();

options.inPreferredConfig = Bitmap.Config.ARGB_4444;

Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, options);

我們可以通過BitmapFactory.Options.inPreferredConfig成員來為Bitmap實例指定一個所需的顏色格式。在這裡,bob.png文件是ARGB888格式的PNG圖像,我們可通過BitmapFactory加載它並將其轉換成ARGB444位圖。

 


也可以使用下面的靜態方法來創建一個空的Bitmap實例:

Bitmap bitmap = Bitmap.createBitmap(int width, int height, Bitmap.Config config);

Canvas類也可以操作位圖:

Canvas canvas = new Canvas(bitmap);

我們通過下面辦法釋放任何不再需要的位圖:

Bitmap.recycle();

一旦我們加載位圖,就可以通過Canvas來繪制,最簡單的辦法如下:

canvas.drawBitmap(Bitmap bitmap, float topLeftX, float topLeftY, Paint paint);

第二和第三個參數用於指定位圖位於屏幕左上角的坐標。最後一個參數可以設置為null,也可以通過Paint來指定一下高級的繪制參數。

還有一個方法:

canvas.drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint);

這個方法非常有用,它允許我們通過第二個參數繪制指定的部分為圖。Rect類保存一個矩形的左上角和右下角坐標。當我們通過第二個參數src來指定部分位圖時,將會在位圖的坐標系統內進行繪制,如果指定為null,那麼將使用整個位圖。

第三個參數定義了部分為圖將要繪制在什麼地方,同樣采用Rect實例的形式。不過這一次的角坐標將通過Canvas上的目標對象的坐標系統來給定(一個視圖或者另一個視圖)。無論目標矩形比源矩形大還是小,Canvas都會做出調整。最後一個參數通常設置為null。不過這個縮放代價很大,只有在絕對必要的時候使用它。

Copyright © Linux教程網 All Rights Reserved