久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

android matrix - qianda115的日志 - 網(wǎng)易博客

 liluvu 2010-11-05
本文將講述如何如何在Android中使用Matrix實現(xiàn)圖片的縮放和旋轉(zhuǎn),,通過本文學(xué)習(xí),,你將學(xué)會如何通過Matrix操作圖像,。
代碼示例:
直接上代碼了,,我在代碼中附帶了詳細的解釋,,代碼如下:
package com.eoeandroid.demo.testcode;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ImageView.ScaleType;
public class bitmaptest extends Activity {
public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setTitle("eoeAndroid教程: 縮放和旋轉(zhuǎn)圖片 -by:IceskYsl");
        LinearLayout linLayout = new LinearLayout(this);
        // 加載需要操作的圖片,這里是eoeAndroid的logo圖片
        Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),
               R.drawable.eoe_android);
        //獲取這個圖片的寬和高
        int width = bitmapOrg.getWidth();
        int height = bitmapOrg.getHeight();
        //定義預(yù)轉(zhuǎn)換成的圖片的寬度和高度
        int newWidth = 200;
        int newHeight = 200;
        //計算縮放率,,新尺寸除原始尺寸
        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;
        // 創(chuàng)建操作圖片用的matrix對象
        Matrix matrix = new Matrix();
        // 縮放圖片動作
        matrix.postScale(scaleWidth, scaleHeight);
        //旋轉(zhuǎn)圖片 動作
        matrix.postRotate(45);
        // 創(chuàng)建新的圖片
        Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,
                          width, height, matrix, true);
        //將上面創(chuàng)建的Bitmap轉(zhuǎn)換成Drawable對象,,使得其可以使用在ImageView, ImageButton中
        BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
        //創(chuàng)建一個ImageView
        ImageView imageView = new ImageView(this);
        // 設(shè)置ImageView的圖片為上面轉(zhuǎn)換的圖片
        imageView.setImageDrawable(bmd);
        //將圖片居中顯示
        imageView.setScaleType(ScaleType.CENTER);
        //將ImageView添加到布局模板中
        linLayout.addView(imageView,
          new LinearLayout.LayoutParams(
                      LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT
                )
        );
        // 設(shè)置為本activity的模板
        setContentView(linLayout);
    }
}
復(fù)制代碼
這里沒用定義XML布局模板,而是直接在代碼中生成了需要的模板和視圖組件,你可以可以定義XML模板,,其他原理是一樣的,。
在游戲開發(fā)中,自定義View是一個相當(dāng)重要的功能,,下面先講一講在View上繪制所需的四個基本主鍵:
Bitmap:用于容納像素點(android.graphics.Bitmap)
Canvas:負責(zé)調(diào)用繪制方法,,是整個過程的入口
要繪制的對象:比如繪制一個Bitmap,矩形或者圓
Paint: 設(shè)置繪制圖形的顏色和樣式
Matrix:它包含一個3x3的矩陣,用于做變換匹配(圖像處理中有講),,Matrix沒有一個結(jié)構(gòu)體,,它必須被初始化,通過實現(xiàn)reset()方法或者set..()方法來實現(xiàn),。
下面來看代碼:
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
//import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Canvas;
import android.graphics.Paint;
//import android.graphics.Rect;
public class TestMartix extends Activity {
//新建Bitmap,Canvas和Paint
private Bitmap img,r_img;
private Canvas canvas;
private Paint paint;
//由于是自定義view,所以不需要調(diào)用Layout文件
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//調(diào)用自定義View
setContentView(new MyView(this));
}
public class MyView extends View{
//View的初始化
public MyView(Context context) {
super(context);
//BitmapFactory:從源創(chuàng)建一個Bitmap對象,,這些源包括:文件,流或者數(shù)組
img = BitmapFactory.decodeResource(getResources(),R.drawable.img);
//新建一個Matrix對象
Matrix matrix = new Matrix();
//讓矩陣實現(xiàn)翻轉(zhuǎn),,參數(shù)為FLOAT型
matrix.postRotate(90);
//matrix.postRotate(0);
//獲取Bitmap的高與寬
int width = img.getWidth();
int height = img.getHeight();
//源Bitmap通過一個Matrix變化后,,返回一個不可變的Bitmap
b_img = Bitmap.createBitmap(img, 0, 0, width, height, matrix, true);
paint = new Paint();
}
//在自定義VIEW時,必須實現(xiàn)此方法
public void onDraw(Canvas canvas){
//在重寫父類的方法時,,必須先調(diào)用父類的方法
super.onDraw(canvas);
//利用Canvas在View上繪制一個Bitmap,,并設(shè)置它的樣式和顏色
canvas.drawBitmap(b_img, 10, 10, paint);
//該方法是用來更新View的方法,多與線程結(jié)合使用,。
//this.invalidate ()
//下面三段代碼用于在View上繪制一個實心矩形,,設(shè)置顏色為綠色,
//paint.setColor(Color.GREEN);
//paint.setAntiAlias(true);
//canvas.drawRect(new Rect(30,30,100,100), paint);
}
}
}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多