最終更新:
moonlight_aska 2013年03月03日(日) 23:24:53履歴
キャンバス(Canvas)を平行移動, 回転, 拡大させるには, 描画の基準となる座標軸を操作する.
座標軸を縦横指定の幅だけ移動する.

- TranslateCanvas.java
- Canvas#translateメソッドで, dx, dyそれぞれ100平行移動させる.
package com.moonlight_aska.android.TranslateCanvas;
import android.os.Bundle;
import android.view.View;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
public class TranslateCanvas extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyView view = new MyView(getApplication());
setContentView(view);
}
class MyView extends View {
private Bitmap robot;
private Paint paint = new Paint();
public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
robot = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
// dx, dyそれぞれ100平行移動
canvas.translate(100, 100);
// 平行移動したキャンバスにBMP画像を描画
canvas.drawBitmap(robot, 0, 0, paint);
}
}
}~

座標軸を回転する.
ラジアン単位による回転角度で指定することで, 時計回りに座標軸が回転する.

ラジアン単位による回転角度で指定することで, 時計回りに座標軸が回転する.
- RotateCanvas.java
- Canvas#rotateメソッドで, 点(100, 100)を中心に45度時計回りに回転させる.

class MyView extends View {
private Bitmap robot;
private Paint paint = new Paint();
public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
robot = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
// 点(100, 100)を中心に45度回転
canvas.rotate(45, 100, 100);
// 回転したキャンバスにBMP画像を描画
canvas.drawBitmap(robot, 100, 100, paint);
}
}

座標軸の目盛りを拡大する.

- ScaleCanvas.java
- Canvas#scaleメソッドで, 目盛りを拡大する.
class MyView extends View {
private Bitmap robot;
private Paint paint = new Paint();
public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
robot = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
// 目盛りを2倍に拡大
canvas.scale(2, 2);
// 目盛りを拡大したキャンバスにBMP画像を描画
canvas.drawBitmap(robot, 100, 100, paint);
}
}

コメントをかく