Android bitmap中Matrix的几个操作

来源:互联网 发布:印度 网络空间作战部队 编辑:程序博客网 时间:2024/04/30 12:12
package com.example.green2_2;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;import android.graphics.Paint.Style;import android.graphics.Path;import android.graphics.Rect;import android.graphics.RectF;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.view.View;public class EView extends View{Paint pt=new Paint();public EView(Context context) {super(context);// TODO Auto-generated constructor stub}protected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);pt.setColor(Color.RED);pt.setStyle(Style.STROKE);pt.setStrokeWidth(3);canvas.drawLine(0 , 0, 40,40, pt);//canvas.drawArc(null, 34, 29, false, pt);canvas.drawRect(20, 20, 60, 90, pt);canvas.drawCircle(44,44, 30, pt);Rect rect=new Rect(90, 90, 150, 150);RectF rectf=new RectF(rect);//必须用RectF转换 Bitmap btp=null; Matrix mtx=new Matrix();canvas.drawRect(rect, pt);canvas.drawArc(rectf, 45, 145, false, pt);//canvas.drawArc(rect, 90, 45, false, pt);Path pth=new Path();pth.lineTo(150, 150);pth.lineTo(150, 180);pth.close();//pth.close();canvas.drawPath(pth, pt);pt.setStrokeWidth(1);pt.setColor(Color.DKGRAY);canvas.drawText("Bill Gates",100, 79, pt);canvas.drawTextOnPath("You are great!", pth, 1, 1, pt);btp=BitmapFactory.decodeResource(this.getResources(),R.drawable.ic_launcher);//btp=(BitmapDrawable)this.getResources().getDrawable(R.drawable.ic_launcher);canvas.drawBitmap(btp, 200, 100, pt);mtx.setTranslate(100, 100);//在Bitmap的各个set...方法中,各个方法会覆盖mtx.setRotate(45);mtx.setRotate(45, 20, 20);//以坐标点(20,20)为中心进行旋转45度mtx.postSkew(1f, 2f);//post类的函数可以延续前面的set类函数mtx.preTranslate(100, 100);//pre类的函数的目的在于将这个函数的功能作为mtx的第一个函数执行canvas.drawBitmap(btp, mtx, pt);//对位图进行变形(各种图片的操作)}}

0 0
原创粉丝点击