Bitmap を使ってみた

Bitmap は
java.lang.Object
  ↳ android.graphics.Bitmap
を使用します

また外部ファイルやリソースを読み込むために
java.lang.Object
  ↳ android.graphics.BitmapFactory
を使用します

例えば drawable に入れてあるリソースを Bitmap として使うには
BitmapFactory クラスで変換して利用する
その後 Bitmap クラスを用いて大きさを変換させたり
回転させたり...

というわけで、Bitmap をいじってみた

サンプルプログラム
  1. import android.app.Activity;  
  2. import android.content.Context;  
  3. import android.graphics.Bitmap;  
  4. import android.graphics.BitmapFactory;  
  5. import android.graphics.Canvas;  
  6. import android.graphics.Matrix;  
  7. import android.graphics.Paint;  
  8. import android.os.Bundle;  
  9. import android.view.View;  
  10.   
  11. public class BitmapTest extends Activity {  
  12.   private static final int NUM = 4;  
  13.   Bitmap bitmap[];  
  14.   Matrix matrix;  
  15.   @Override  
  16.   public void onCreate(Bundle savedInstanceState) {  
  17.     super.onCreate(savedInstanceState);  
  18.     setContentView(new BitmapTestView(this));  
  19.   }  
  20.   
  21.   class BitmapTestView extends View {  
  22.     public BitmapTestView(Context context) {  
  23.       super(context);  
  24.       bitmap = new Bitmap[NUM];  
  25.   
  26.       // リソースから Bitmap を取得   
  27.       bitmap[0] = BitmapFactory.decodeResource(getResources(), R.drawable.icon);  
  28.       // Bitmap のサイズの取得  
  29.       int width = bitmap[0].getWidth();  
  30.       int height = bitmap[0].getHeight();  
  31.      
  32.       // 45°回転させた Bitmap を作成  
  33.       matrix = new Matrix();  
  34.       matrix.postRotate(45.0f);  // 回転させる角度を指定  
  35.       bitmap[1] = Bitmap.createBitmap(bitmap[0], 00, width, height, matrix, true);  
  36.      
  37.       // Bitmap のスケールを指定して作成  
  38.       // この場合 (x * 0.5) × (y * 2) の大きさの画像になる  
  39.       matrix = new Matrix();  
  40.       matrix.postScale(0.5f, 2.0f);  // スケールを指定  
  41.       bitmap[2] = Bitmap.createBitmap(bitmap[0], 00, width, height, matrix, true);  
  42.      
  43.       // Bitmap の大きさを指定して作成  
  44.       // この場合 80 × 48 の大きさの画像になる  
  45.       bitmap[3] = Bitmap.createScaledBitmap(bitmap[0], 8048true);  
  46.     }  
  47.   
  48.     @Override  
  49.     public void onDraw(Canvas canvas) {  
  50.       Paint paint = new Paint();  
  51.       for (int i = 0; i < NUM; i++) {  
  52.         // Bitmap の描画  
  53.         canvas.drawBitmap(bitmap[i], i * 800, paint);  
  54.       }  
  55.     }  
  56.   }  
  57. }  

プログラムを実行すると...


こんな感じ!

ちなみに 引数の filter の部分(最後の引数)の値を変えて比較してみると...


こんな感じに! (左:true, 右:false)
filter をかけるとアンチエイリアスがかかっているっぽい

参考サイト
http://developer.android.com/intl/ja/reference/android/graphics/Bitmap.html
http://developer.android.com/intl/ja/reference/android/graphics/BitmapFactory.html

0 件のコメント:

コメントを投稿