Canvasを行列で変形する
Matrixを使ってCanvasを変形できます、
前回紹介したメソッド群はこの機能を使いやすくラッピングしたものです。
行列操作
|
void
|
setMatrix(Matrix matrix)
|
現在、Canvasに設定されているMatrixを完全に入れ替える。
|
void
|
concat(Matrix matrix)
|
現在、Canvasに設定されているMatrixに前側から掛け算を行う。
|
Matrix
|
getMatrix()
|
現在、Canvasに設定されているMatrixを取得する。
API level 16で非推奨になりました。
|
void
|
getMatrix(Matrix ctm)
|
現在、Canvasに設定されているMatrixを私たMatrixに設定する。
API level 16で非推奨になりました。
|
public class MyCanvasMatrix extends View {
public MyCanvasMatrix(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
//描画に使用するBitmapを読み込む
Bitmap icLauncherBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
int right = canvas.getWidth() - icLauncherBitmap.getWidth();
int bottom = canvas.getHeight() - icLauncherBitmap.getHeight();
Matrix matrix = new Matrix();
matrix.setTranslate(50,50);
canvas.setMatrix(matrix);
Matrix rote = new Matrix();
rote.postRotate(15, right / 2 , bottom / 2);
canvas.concat(rote);
Matrix matrix1 = canvas.getMatrix();
Toast.makeText(getContext() , matrix1.toString(), Toast.LENGTH_LONG).show();
/** 左上に画像を表示する。*/
canvas.drawBitmap(icLauncherBitmap,0,0, null);
/** 右上に画像を表示する。*/
canvas.drawBitmap(icLauncherBitmap , right,0, null);
/** 左下に画像を表示する。*/
canvas.drawBitmap(icLauncherBitmap,0, bottom, null);
/** 右下に画像を表示する。*/
canvas.drawBitmap(icLauncherBitmap,right,bottom, null);
/** 中心に画像を表示する。 */
canvas.drawBitmap(icLauncherBitmap,right/2,bottom/2, null);
}
}