简介
在自定义 View的时候,我们经常需要绘制一些自己想要的效果。
这时就需要使用Canvas对象。canvas可以理解为一个画布,用于乘载自定义的控件。
下面将Canvas对象常用方法做个笔记,方便记忆。
一、Canvas常用方法:
1.canvas一般是onDraw方法默认提供的,在不对canvas进设置的前提下,canvas一般是与所在的视图大小相等。
2.对canvas进行设置:
- 移动canvas:
canvas.translate(100, 50);
- 缩放canvas:
/**
* 在X轴方向放大为原来2倍,Y轴方向方大为原来的4倍
*/
canvas.scale(2, 4);
- 旋转canvas:
/**
* 以(100,100)为中心,旋转30度,顺时针方向为正方向
*/
canvas.rotate(30,100,100);
- 保存上一次绘制(画布),保证下一次绘制不影响上一次的画
canvas.save();
3.用canvas画图形:
- 画圆:
/**
* 参数1:圆心X
* 参数2:圆心Y
* 参数3:半径R
* 参数4:画笔对象
*/
canvas.drawCircle(200, 200, 100, p);
- 画线:
/*
* 参数1:startX
* 参数2:startY
* 参数3:stopX
* 参数4:stopY
* 参数5:画笔对象
*/
canvas.drawLine(100, 100, 300, 300, p);
/*
* 同时绘制多条线。
* 参数1:float数组:每四个一组为一条线。最后不足四个,就忽略那些值。
* 参数2:画笔对象
*/
canvas.drawLines(new float[]{100,100,200,200,200,100,300,100}, p);
- 画椭圆:
/*
* 参数1:椭圆左边到视图左边框的距离
* 参数2:椭圆上边到视图上边框的距离
* 参数3:椭圆右边到视图左边框的距离
* 参数4:椭圆下边到视图上边框的距离
*/
RectF oval = new RectF(150, 200, 500, 400);// 画一个椭圆
canvas.drawOval(oval, p);
)// 绘制圆
//参数一是中心点的x轴,参数二是中心点的y轴,参数三是半径,参数四是paint对象
drawCircle(float cx, float cy, float radius,Paint paint);
- 画矩形:
/**
* 参数与上面画椭圆的一样
*/
canvas.drawRect(100,100, 200, 200, p);
//画圆角矩形
RectF oval3 = new RectF(80, 260, 200, 300);// 设置个新的长方形
canvas.drawRoundRect(oval3, 20, 5, p);//第二个参数是x半径,第三个参数是y半径
- 画点:
/**
* 参数1、2:点的x、y坐标
*/
canvas.drawPoint(60, 390, p);//画一个点
/**
* 参数1:多个点,每两个值为一个点。最后个数不够两个的值,忽略。
*/
canvas.drawPoints(new float[]{60,400,65,400,70,400}, p);//画多个点
- 画文字:
/**
* 参数2:文本的x轴的开始位置
* 参数2:文本Y轴的结束位置
* 参数3:画笔对象
*/
canvas.drawText("开始写字了!",50, 50, p);// 画文本
/**
* 参数2:路径
* 参数3:距离路径开始位置的偏移量
* 参数4:距离路径上下的偏移量(可以为负数)
* 参数5:画笔对象
*/
canvas.drawTextOnPath("1234567890101123123", path, 0, -50, p);
- 画图片:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.图片名);
/**
* 参数1:bitmap图片对象
* 参数2:图像左边坐标点
* 参数3:图像上边坐标点
*/
canvas.drawBitmap(bitmap, 200,300, p);
4.虽然canvas可以用来画一些图形,但常用的方法还是drawPath方法,用来画path路径。
5.canvas一般与path、paint结合使用。
6、实战:画板实例
网友评论