drawCircle(float cx, float cy, float radius, Paint paint)
cx:圆心x坐标
cy:圆心y坐标
radius:半径
canvas.drawCircle(100, 700, 100, mPaint);效果如下图:
绘制点drawPoint(float x, float y, Paint paint)
x:点的x坐标
y:点的y坐标
drawPoints(float[] pts, Paint paint) 绘制一组点
pts:float数组,两位为一组,两两结合代表x、y坐标,例如:pts[0]、pts[1]代表第一个点的x、y坐标,pts[2]、pts[3]代表第二个点的x、y坐标,依次类推。
drawPoints(float[] pts, int offset, int count, Paint paint) 绘制一组点
pts:float数组,两位为一组,两两结合代表x、y坐标,例如:pts[0]、pts[1]代表第一个点的x、y坐标,pts[2]、pts[3]代表第二个点的x、y坐标,依次类推。
offset:代表数组开始跳过几个只开始绘制点,注意这里不是指数组的下标,而是代表跳过几个值。
count:在跳过offset个值后,处理几个值,注意这里的count不是代表点的个数,而是代表数组中值的个数。
canvas.drawPoint(100, 700, mPaint); // 绘制一个点 float[] points = new float[] { 130, 700, 160, 700, 190, 700, 210, 700, 240, 700 }; canvas.drawPoints(points, 2, 4, mPaint); // 绘制一组点(代表跳过前两个值,处理4个值,也就是实际绘制2个点)效果如下图:
绘制椭圆drawOval(float left, float top, float right, float bottom, Paint paint)
left
top
right
bottom
在left、top、right、bottom围成的区域内绘制一个椭圆。
drawOval(RectF oval, Paint paint)
将第一个重载方法的left、top、right、bottom封装到RectF类中,与扇形的重载方法异曲同工。
RectF rectF2 = new RectF(300, 600, 700, 800); // 创建一个RectF canvas.drawOval(rectF2, mPaint);效果如下图:
绘制矩形drawRect(float left, float top, float right, float bottom, Paint paint)
drawRect(Rect r, Paint paint)
drawRect(RectF rect, Paint paint)
drawRect的参数非常好理解,这里就不啰嗦了,直接上代码看效果:
canvas.drawRect(rectF2, mPaint);注:这里的rectF2即上文绘制椭圆时创建的RectF对象。
绘制圆角矩形drawRoundRect(float left, float top, float right, float bottom, float rx, float ry, Paint paint)
drawRoundRect(RectF rect, float rx, float ry, Paint paint)
drawRoundRect是绘制圆角矩形,用法和drawRect类似,唯一不同的是多了两个参数:
rx:x轴方向的圆角弧度
ry:y轴方向的圆角弧度
上代码,看效果:
canvas.drawRoundRect(rectF2, 60, 30, mPaint);这里为了突出两个方向的圆角弧度,特地将rx和ry设置差距比较大,效果如下图:
绘制直线drawLine(float startX, float startY, float stopX, float stopY, Paint paint)
drawLines(float[] pts, int offset, int count, Paint paint)
drawLines(float[] pts, Paint paint)
drawLine和drawLines一个是绘制一个点,一个是绘制一组点,其中drawLines中的float数组中四个值为一组点,其用法可以参照drawPoints。
canvas.drawLine(100, 820, 800, 820, mPaint); float[] lines = new float[]{ 100f, 850f, 800f, 850f, 100f, 900f, 800f, 900f, 100f, 950f, 800f, 950f }; canvas.drawLines(lines, mPaint); // 按floats数组中,四个数为1组,绘制多条线效果如下图:
drawPath() 绘制不规则图形