@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPaint = new Paint();
mPaint.setColor(Color.BLACK);//设置画笔颜色
mPaint.setTextSize(14);//设置字体大小
canvas.drawText(actionStr, 100, 100, mPaint);//写字
mPaint.setStrokeWidth(10);//设置线条宽度
mPaint.setStyle(Paint.Style.STROKE);//设置空心
canvas.drawCircle(200, 250, 80, mPaint);//画圆
mPaint.setAntiAlias(true);//消除锯齿
canvas.drawLine(100, 150, 300, 350, mPaint);//画线
canvas.drawRect(100, 400, 400, 500, mPaint);//画矩形
canvas.save();//保存画布状态
mPaint.setStyle(Paint.Style.FILL);//设置实心
canvas.clipRect(new Rect(100, 550, 300, 750));//裁剪出一个矩形区域
canvas.drawColor(Color.LTGRAY);//设置画布颜色
canvas.drawCircle(150, 600, 100, mPaint);//在裁剪区域之内,能显示
canvas.restore();//恢复画布状态
mPaint.setStyle(Paint.Style.STROKE);//设置空心
RectF rectF = new RectF(100, 800, 400, 900);// 设置个新的长方形
canvas.drawRoundRect(rectF, 20, 20, mPaint);//画圆弧矩形,第二个参数是x半径,第三个参数是y半径
canvas.drawPoint(400, 200, mPaint);//画一个点
canvas.drawPoints(new float[]{400, 220, 420, 220, 440, 220}, mPaint);//画多个点
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.smile);//实例化一个bitmap
canvas.drawBitmap(bitmap, 500, 150, mPaint);//画图片
Path path = new Path();
path.moveTo(400, 300);// 不会进行绘制,只用于移动移动画笔,相当于起点。
path.lineTo(600, 350); //lineTo 用于进行直线绘制。
path.moveTo(400, 310);// 不会进行绘制,只用于移动移动画笔,相当于起点。
path.quadTo(650, 400, 400, 600); //quadTo 用于绘制圆滑曲线,即贝塞尔曲线。mPath.quadTo(x1, y1, x2, y2) (x1,y1) 为控制点,(x2,y2)为结束点。
path.moveTo(400, 610);// 不会进行绘制,只用于移动移动画笔,相当于起点。
path.cubicTo(400, 700, 500, 550, 600, 900); //cubicTo 同样是用来实现贝塞尔曲线的。mPath.cubicTo(x1, y1, x2, y2, x3, y3) (x1,y1) 为控制点,(x2,y2)为控制点,(x3,y3) 为结束点。
path.moveTo(600, 1000);// 不会进行绘制,只用于移动移动画笔,相当于起点。
RectF mRectF = new RectF(400, 900, 600, 1100);
path.arcTo(mRectF, 0, 270);//arcTo 用于绘制弧线(实际是截取圆或椭圆的一部分
canvas.drawPath(path, mPaint);//画出曲线
RectF rectF1 = new RectF(100, 900, 200, 1000);
canvas.drawArc(rectF1, //弧线所使用的矩形区域大小
0, //开始角度
180, //扫过的角度
false, //是否使用中心
mPaint);
//按照既定点 绘制文本内容
mPaint.setTextSize(16);
mPaint.setStrokeWidth(1);
canvas.drawPosText("Hello world", new float[]{20, 20, //第一个字母在坐标20,20
30, 30, //第二个字母在坐标30,30
40, 40, 50, 50, 60, 60, 70, 70, 80, 60, 90, 50, 100, 40, 110, 30, 120, 20}, mPaint);
canvas.drawTextOnPath("123456789", path, 50, -30, mPaint); //按照既定路径 绘制文本内容
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/pengkv/article/details/47020121