package com.wuxiaolong.androidsamples.paintcanvas;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;
import com.wuxiaolong.androidsamples.R;
/**
* Created by Administrator
* on 2016/8/22.
*/
public class CanvasView extends View {
private Paint mPaint;
private Bitmap mBitmap;
public CanvasView(Context context) {
super(context);
init();
}
public CanvasView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
mBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.logo);
mPaint = new Paint();
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(Color.WHITE);
mPaint.setStrokeWidth(2);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//canvas.drawARGB(255,5,7,11);
//RectF rectF = new RectF(100f, 100f, 500f, 500f);
//canvas.drawArc(rectF, 0, 150, false, mPaint);
//canvas.drawBitmap(mBitmap, 0, 0, mPaint);
//
////绘制Bitmap的一部分,并对其拉伸
////srcRect绘制Bitmap的哪一部分
//Rect src = new Rect(0, 0, mBitmap.getWidth(), mBitmap.getHeight() / 3);
////dstRecF绘制的Bitmap拉伸到哪里
//RectF dst = new RectF(0, mBitmap.getHeight(), canvas.getWidth(), mBitmap.getHeight() + 200);
//canvas.drawBitmap(mBitmap, src, dst, mPaint);
//
//Matrix matrix = new Matrix();
//matrix.postTranslate(0, mBitmap.getHeight() + 200);
//canvas.drawBitmap(mBitmap, matrix, mPaint);
//canvas.drawCircle(500f, 500f, 200, mPaint);
//canvas.drawColor(Color.BLUE);
//canvas.drawLine(100f, 100f, 500f, 500f, mPaint);
//float[] pts = {100f, 100f, 400f, 400f,
// 400f, 400f, 250f, 560f,
// 250f, 560f, 400f, 800f,
// 400f, 800f, 280f, 880f};
//canvas.drawLines(pts, mPaint);
//有选择地绘制直线
//canvas.drawLines(pts, 4, 10, mPaint);
//RectF rectF = new RectF(100f, 100f, 600f, 500f);
//等同于圆的效果
//RectF rectF = new RectF(100f, 100f, 500f, 500f);
//canvas.drawOval(rectF, mPaint);
//Path path = new Path();
//向Path中加入Arc
//RectF arcRecF = new RectF(0, 0, 500, 500);
//path.addArc(arcRecF, 0, 135);
//canvas.drawPath(path, mPaint);
//canvas.drawPoint(500f,500f,mPaint);
//canvas.drawRect(100f,100f,500f,500f,mPaint);
//RectF rectF = new RectF(100f, 100f, 500f, 500f);
//canvas.drawRect(rectF, mPaint);
//canvas.drawRoundRect(rectF, 150, 50, mPaint);
//mPaint.setTextSize(50);
//String text = "我的微信公众号:吴小龙同学";
//canvas.drawText(text, 2, text.length(), 100, 100, mPaint);
//canvas.drawText("我的微信公众号:吴小龙同学", 100, 400, mPaint);
//Path path = new Path();
//path.addCircle(500, 500, 200, Path.Direction.CW);
//mPaint.setTextSize(50);
// 绘制路径
//canvas.drawPath(path, mPaint);
//String text = "我的微信公众号:吴小龙同学";
//canvas.drawTextOnPath(text, path, 100f, 0f, mPaint);
//Path path = new Path();
//RectF arcRecF = new RectF(0, 0, 500, 500);
//path.addArc(arcRecF, 0, 135);
//canvas.clipPath(path);
//canvas.drawColor(Color.RED);
//canvas.clipRect(100, 100, 400, 500);
//canvas.drawColor(Color.RED);
// 填充颜色
// canvas.drawColor(Color.BLUE);
// canvas.save();
//
// canvas.clipRect(100, 100, 400, 500);
//
// canvas.clipRect(200, 200, 600, 600, Region.Op.XOR);
// canvas.drawColor(Color.RED);
// canvas.restore();
// // 绘制和裁剪一样的矩形便于观察
// canvas.drawRect(100, 100, 400, 500, mPaint);
// canvas.drawRect(200, 200, 600, 600, mPaint);
// canvas.drawColor(Color.BLUE);
// mPaint.setColor(Color.GREEN);
// canvas.drawRect(0, 0, 400, 500, mPaint);
// // 保存画布状态
// canvas.save();
//
// canvas.scale(0.5f, 0.5f);
// mPaint.setColor(Color.RED);
// canvas.drawRect(0, 0, 400, 500, mPaint);
//
// canvas.restore();
//
// canvas.scale(0.5f, 0.5f, 200, 200);
// mPaint.setColor(Color.WHITE);
// canvas.drawRect(0, 0, 400, 500, mPaint);
// canvas.drawColor(Color.GREEN);
// canvas.drawRect(new Rect(0, 0, 400, 400), mPaint);
// // x 方向上倾斜45 度
// canvas.skew(1, 0);
// y 方向上倾斜45 度
// canvas.skew(1, 0);
// canvas.drawColor(Color.BLUE);
// canvas.drawRect(new Rect(0, 0, 400, 400), mPaint);
// canvas.drawColor(Color.BLUE);
// canvas.drawRect(new Rect(0, 0, 400, 400), mPaint);
// mPaint.setColor(Color.YELLOW);
// canvas.rotate(45,400,400);
// canvas.drawRect(new Rect(0, 0, 400, 400), mPaint);
canvas.drawColor(Color.BLUE);
canvas.translate(100, 100);
canvas.drawRect(new Rect(0, 0, 400, 400), mPaint);
}
}