Androidプログラマへの道 〜 Moonlight 明日香 〜 - 画像を上下左右に反転させる
画像を上下左右に反転させるには, マトリックス(Matrix)クラスを利用する.


(出典:Android版「美人時計」より)

画像の反転

  • ReverseImage.java
    • Matrix#preScaleメソッドで, 反転情報を設定する.
      • 上下反転 : (1, -1)
      • 左右反転 : (-1, 1)
      • 上下左右反転 : (-1, -1)
    • Bitmap#createBitmapメソッドで, 反転画像を作成する.
package com.moonlight_aska.android.reverseimage;

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.Color;
import android.graphics.Matrix;
import android.graphics.Paint;

public class ReverseImage extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    MyView view = new MyView(getApplication());
    setContentView(view);
  }

  class MyView extends View {
    private Bitmap bijin;
    private Paint paint = new Paint();
    private Matrix matrix = new Matrix();

    public MyView(Context context) {
      super(context);
      // TODO Auto-generated constructor stub
      Bitmap img = BitmapFactory.decodeResource(getResources(), R.drawable.bijintokei0852);
      // 上下反転
      matrix.preScale(1, -1);
      // 左右反転
      // matrix.preScale(-1, 1);
      // 上下左右反転
      // matrix.preScale(-1, -1);
      bijin = Bitmap.createBitmap(img, 0, 0, img.getWidth(), img.getHeight(), matrix, false);
    }

    @Override
    protected void onDraw(Canvas canvas) {
      // TODO Auto-generated method stub
      canvas.drawColor(Color.WHITE);
      canvas.drawBitmap(bijin, 0, 0, paint);
    }
  }
}