天天看點

圖像的平移,縮放..

package com.itheima.img;

import android.os.Bundle;

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.graphics.Matrix;

import android.graphics.Paint;

import android.view.Menu;

import android.widget.ImageView;

public class MainActivity extends Activity {

ImageView iv_src , iv_target;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

iv_src = (ImageView) findViewById(R.id.iv_src);

iv_target = (ImageView) findViewById(R.id.iv_target);

//先讓原圖顯示

//1. 得到原圖

Bitmap srcBitmap = BitmapFactory.decodeFile("/mnt/sdcard/tp1.jpg");

iv_src.setImageBitmap(srcBitmap);

//旋轉的圖檔顯示  --- 但凡是對圖像進行操作 (平移、旋轉、縮放) ,都是對這張圖像在記憶體中的拷貝操作,

//而不是對本圖進行操作。

//2.得到拷貝的圖檔 

//先建立出來一份空白的位圖,這個位圖的寬度和高度與原圖一模一樣 , 配置資訊也一模一樣。

//以下寫的代碼相當于是臨摹一張正版的圖檔一樣 ,假設臨摹的是八駿圖 .   這裡相當于是得到了一張空白的紙張

Bitmap copytBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig());

//3.  定義畫闆  畫闆上放置空白的紙張,一會要進行作畫

Canvas canvas = new Canvas(copytBitmap);

//4. 定義畫筆

Paint paint = new Paint();

// paint.setColor(color)

//5. 定義矩陣 -- 目前是按照1:1的比例作畫

Matrix  matrix = new Matrix();

//指定旋轉15度

//matrix.setRotate(180, copytBitmap.getWidth() / 2 , copytBitmap.getHeight() / 2);

//matrix.setTranslate(50, 50);

//縮放 ,寬度是原來的0.2倍 ,高度是原來的0.8倍

//matrix.setScale(0.2f, 0.8f);

//把y坐标都全部改成負數

matrix.setScale(1, -1) ; 

//讓其平移回來顯示 setXXXX并不會在以前的效果基礎上再設定新的效果。

// postXXXX在以前的基礎上作變更。

matrix.postTranslate(0, copytBitmap.getHeight());

//6. 開始作畫  參數一: 參照哪一個圖檔作畫 參數二:矩陣  參數三: 畫筆

canvas.drawBitmap(srcBitmap, matrix, paint);

//7.顯示圖檔

iv_target.setImageBitmap(copytBitmap);

}

}

繼續閱讀