package com.sonzer.CanvasDemo;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.Rect;import android.graphics.RectF;import android.graphics.drawable.BitmapDrawable;import android.view.View;import android.view.animation.AlphaAnimation;import android.view.animation.Animation;import android.view.animation.RotateAnimation;import android.view.animation.ScaleAnimation;import android.view.animation.TranslateAnimation;/** * 绘图常用方法演示 * @author sonzer * */public class CanvasView extends View {private Paint mPaint1 = null;private Bitmap mBitmap = null;public CanvasView(Context context) {super(context);// 初始化画笔mPaint1 = new Paint();mPaint1.setColor(Color.RED);// 设置笔刷颜色mPaint1.setStrokeWidth(2);// 设置笔刷粗细mPaint1.setAntiAlias(true);// 设置抗锯齿//初始化图片mBitmap = ((BitmapDrawable) getResources().getDrawable(R.drawable.sonzer_pic)).getBitmap();mBitmap = rotate(mBitmap, 10, 0, 0);// 图像旋转mBitmap = scale(mBitmap, 0.3f, 0.3f, 0, 0);// 图像缩放mBitmap = dispose(mBitmap, mBitmap.getWidth(), mBitmap.getHeight());// 灰度处理// 抗锯齿(感觉不明显)// canvas.setDrawFilter(new PaintFlagsDrawFilter(0,// Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));alphaAnimation();//透明度渐变动画//translateAnimation();//平移动画//scaleAnimation();//缩放动画//rotateAnimation();//旋转动画}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);canvas.drawColor(Color.WHITE);// 设置画布背景颜色canvas.clipRect(0, 0, 320, 480);// 设置画布范围canvas.drawLine(20, 20, 100, 30, mPaint1);// 绘制线段canvas.drawPoint(60, 50, mPaint1);// 绘制点canvas.drawRect(new Rect(20, 70, 120, 100), mPaint1); // 绘制矩形canvas.drawRoundRect(new RectF(140, 70, 230, 100), 10, 10, mPaint1); // 绘制圆角矩形canvas.drawCircle(50, 140, 30, mPaint1);// 绘制圆形canvas.drawArc(new RectF(140, 110, 230, 170), 180, 90, true, mPaint1);// 绘制圆弧canvas.drawOval(new RectF(240, 110, 280, 170), mPaint1);// 绘制椭圆形canvas.drawText("绘制文字", 20, 200, mPaint1);// 绘制文字float[] points = new float[] { 35, 220, 20, 250, 20, 250, 50, 250, 35,220, 50, 250 };canvas.drawLines(points, mPaint1);// 绘制线段序列,相当3条线,6个坐标canvas.drawBitmap(mBitmap, 20, 270, null);// 绘制图片}/*** 图像旋转* * @param mBitmap* @param angle* @param px* @param py* @return*/public Bitmap rotate(Bitmap mBitmap, float angle, float px, float py) {Matrix matrix = new Matrix();matrix.reset();matrix.setRotate(angle, px, py);mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(),mBitmap.getHeight(), matrix, true);return mBitmap;}/*** 图像缩放* * @param sx* @param sy* @param px* @param py* @return*/public Bitmap scale(Bitmap mBitmap, float sx, float sy, float px, float py) {Matrix matrix = new Matrix();matrix.reset();matrix.setScale(sx, sy, px, py);mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(),mBitmap.getHeight(), matrix, true);return mBitmap;}/*** 灰度处理* * @param mBitmap* @param width* @param height* @return*/public Bitmap dispose(Bitmap mBitmap, final int width, final int height) {int bitmap[] = new int[width * height];mBitmap.getPixels(bitmap, 0, width, 0, 0, width, height);for (int i = 0; i > 16) & 0xff;int g = (bitmap[index] >> 8) & 0xff;int b = (bitmap[index]) & 0xff;// 计算灰度值double gray = r * 0.3 + g * 0.59 + b * 0.11;// 0xff000000 | (R 
<div class="it610-blog-content-contain" style="font-size: 14px"></div>

更多相关文章

  1. android SDK安装后设置环境变量
  2. Android语音输入打字效果渐变以及纠错效果
  3. Android(安卓)全屏
  4. 图片走廊
  5. android设置背景半透明效果
  6. Android(安卓)WebView相关属性
  7. Mac版Android(安卓)studio中使用lambda表达式设置jdk版本问题
  8. Eclipse下android相关设置
  9. android全屏设置代码

随机推荐

  1. Android数据加密之Des加密
  2. Android常用控件(更新中)
  3. Android进阶——Android消息机制之Looper
  4. android文字阴影效果
  5. 老罗Android视频[详细版]全集下载(含源码)
  6. Android(安卓)热修复方案Tinker(四) 资源
  7. android文字阴影效果
  8. Android跨进程通信IPC之5——Binder的三
  9. Android(安卓)核心分析(13) -----Android
  10. Android工具箱之迁移到AppCompat