Bitmapの使用について
bitmapを作成するには:
切り取りbitmap:
ストレッチbitmap:
createBitmapのたびに、新しいメモリが割り当てられ、リソースの消費をもたらすので、BitmapのcreateBitmapを使うのは簡単で便利ですが、最適な方法ではありません.新しいBitmapを作成せずにCanvasで絵を描くときに直接スケールしたりカットしたりする方法を紹介します.
ここで、Rectオブジェクトは、(0,0)から(200)までの矩形領域を表す.このコードはthisをbmは、スクリーン上の(0,0)~(200)までの領域をスケーリングして描画する.
ここでこれをbmの(100100)~(300300)領域を取り出し、画面の(100100)~(200)領域に自動的にスケールして描画する.
matrixでスケーリングすることもできます.
回転bitmap:
maxtrixでも実現されており、詳細は補足されます.
Bitmap bm = null;
bm = Bitmap.createBitmap(w, h, Config.ALPHA_8); // (8 )
bm = Bitmap.createBitmap(w, h, Config.ARGB_4444); //
bm = Bitmap.createBitmap(w, h, Config.ARGB_8888); //
bm = BitmapFactory.decodeFile(path); // bitmap, /sdcard/logo.png
bm = BitmapFactory.decodeResource(getResources(), R.drawable.test); //R.drawable.test /res/drawable-*/test.jpg png
bm = ((BitmapDrawable)getResources().getDrawable(R.drawable.show)).getBitmap(); //
切り取りbitmap:
Bitmap sbm = Bitmap.createBitmap(this.bm, 0, 0, w, h); // (0,0) w, h
ストレッチbitmap:
DisplayMetrics dm = getResources().getDisplayMetrics();
int mScreenWidth = dm.widthPixels; //
int mScreenHeight = dm.heightPixels; //
Bitmap lbm = Bitmap.createScaledBitmap(this.bm, mScreenWidth, mScreenHeight, true);
createBitmapのたびに、新しいメモリが割り当てられ、リソースの消費をもたらすので、BitmapのcreateBitmapを使うのは簡単で便利ですが、最適な方法ではありません.新しいBitmapを作成せずにCanvasで絵を描くときに直接スケールしたりカットしたりする方法を紹介します.
canvas.drawBitmap(this.bm, null, new Rect(0, 0, 200, 200), null);
ここで、Rectオブジェクトは、(0,0)から(200)までの矩形領域を表す.このコードはthisをbmは、スクリーン上の(0,0)~(200)までの領域をスケーリングして描画する.
canvas.drawBitmap(this.bm, new Rect(100, 100, 300, 300), new Rect(100, 100, 200, 200), null);
ここでこれをbmの(100100)~(300300)領域を取り出し、画面の(100100)~(200)領域に自動的にスケールして描画する.
matrixでスケーリングすることもできます.
Matrix matrix = new Matrix();
matrix.postScale(1.0f, 1.0f); // 1 ,
Bitmap newbtm = Bitmap.createBitmap(btm, 0, 0, this.btm.getWidth(), this.btm.getHeight(), matrix, true);
回転bitmap:
maxtrixでも実現されており、詳細は補足されます.