1、Why

因为需要自己写一个自定义日历控件,所以需要了解一些android图形的基础类。

这篇文章里主要关于Path类的API。

、moveTo

moveTo 不会进行绘制,只用于移动移动画笔。
结合以下方法进行使用。

3、lineTo

lineTo 用于进行直线绘制。

mPath.lineTo(300, 300); canvas.drawPath(mPath, mPaint); 

默认从坐标(0,0)开始绘制。如图:

Image

刚才我们不说了moveTo是用来移动画笔的吗?

mPath.moveTo(100, 100);mPath.lineTo(300, 300);canvas.drawPath(mPath, mPaint);

把画笔移动(100,100)处开始绘制,效果如图:

Image(1)与之相似的一个API是:

rLineTo(int width, int height):

相对于原有的点,移动的相对距离。

width: line终点相对于起点移动的水平距离

height:line终点相对于起点移动的竖直距离

4、quadTo

quadTo 用于绘制圆滑曲线,即贝塞尔曲线。

mPath.quadTo(x1, y1, x2, y2) (x1,y1) 为控制点,(x2,y2)为结束点。

同样地,我们还是得需要moveTo来协助控制。

mPath.moveTo(100, 500);mPath.quadTo(300, 100, 600, 500);canvas.drawPath(mPath, mPaint);

效果如图:

Image(2)

5、cubicTo

cubicTo 同样是用来实现贝塞尔曲线的。

mPath.cubicTo(x1, y1, x2, y2, x3, y3) (x1,y1) 为控制点,(x2,y2)为控制点,(x3,y3) 为结束点。

那么,cubicToquadTo 有什么不一样呢?

官方是这么说的:

Same as cubicTo, but the coordinates are considered relative to the current point on this contour.

说白了,就是多了一个控制点而已。

然后,我们想绘制和上一个一样的曲线,应该怎么写呢?

mPath.moveTo(100, 500);mPath.cubicTo(100, 500, 300, 100, 600, 500);

看看效果:Image(3)一模一样!如果我们不加 moveTo 呢?

则以(0,0)为起点,(100,500)和(300,100)为控制点绘制贝塞尔曲线:

Image(4)

6、arcTo

arcTo 用于绘制弧线(实际是截取圆或椭圆的一部分)。mPath.arcTo(ovalRectF, startAngle, sweepAngle) , ovalRectF为椭圆的矩 形,startAngle 为开始角度,sweepAngle 为结束角度。

mRectF = new RectF(10, 10, 600, 600);mPath.arcTo(mRectF, 0, 90);canvas.drawPath(mPath, mPaint);

由于new RectF(10, 10, 600, 600)为正方形,又截取 0 ~ 90 度 ,则所得曲线为四分之一圆的弧线。效果如图:

Image(5)

更多相关文章

  1. 三种方式实现自定义圆形页面加载中效果的进度条
  2. Android ListView项收缩效果
  3. android实战项目二实现画板效果
  4. Android实现渐显按钮的左右滑动效果

随机推荐

  1. [深入理解Android卷一全文-第六章]深入理
  2. 按下子活动后退按钮后,Android主要活动的
  3. Android Robotium如何管理测试用例的执行
  4. Android程序老是报错
  5. Java与C互相调用实例详解
  6. 王家林最受欢迎的一站式云计算大数据和移
  7. ffmpeg从视频中提取帧时间戳
  8. Android Web-View:将本地Javascript文件注
  9. Android各种蓝牙设备的UUID
  10. Spannable、Spanned、Editable用法及差别