1. 程式人生 > >影象的平移,縮放..

影象的平移,縮放..

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);




}




}