Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解 (2)

Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

绘制圆形

drawCircle(float cx, float cy, float radius, Paint paint)

cx:圆心x坐标

cy:圆心y坐标

radius:半径

canvas.drawCircle(100, 700, 100, mPaint);

效果如下图:

Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

绘制点

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个点)

效果如下图:

Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

绘制椭圆

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);

效果如下图:

Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

绘制矩形

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对象。

Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

绘制圆角矩形

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设置差距比较大,效果如下图:

Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

绘制直线

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组,绘制多条线

效果如下图:

Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

drawPath() 绘制不规则图形

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwygzd.html