Canvas实践,drawXxx坐标记忆

以前也会用Canvas,但是每次用到的时候还得去查坐标含义,比如drawArc的left、top、right、bottom,startAngle,sweepAngle,重新复习一遍,灵魂画手方式记录心得~

Canvas坐标系

Canvas坐标系是视图坐标系,默认原点parentleft,top,但是Canvas中的translation方法可以指定原点
Canvas中缩放,反转操作的缩放中心都是由translation方法指定的,如果不指定,则缩放中心为默认原点。
Canvas.scale():参数为1时,大小不变,负数则根据缩放中心反转方向。

执行指定原点、旋转或者缩放操作需要在Canvas.drawXxx();方法之前执行才会在此次绘制中发挥作用。

drawCircle

drawCircle没什么难的,需要的参数为圆心和半径r
这里写图片描述

drawArc

drawArc 参数为
- left、top、right、bottom这四个参数可以确定一个Rect

-startAngle、sweepAngle 起始角度与滑过角度

这里写图片描述

左上、右下确定一个Rect
Android坐标系x方向为drawArc 0度方向,角度以顺时针为正方向

归类到数学象限

第四象限为0-90
第三象限为90-180
第二象限为180-270
第四象限为270-360

逆时针
第一象限为0 - -90
依次类推

图中1为起始角度0
图中2为滑过角度90

drawOval

drawOval参数也是根据left,top,right,bottom确定一个Rect每条边的切点相连组成Oval
这里写图片描述

通过drawOval只能画横竖的椭圆,如果想要画斜的就得配合几何变换,例如

    canvas.translate(600,600);
    canvas.rotate(120);
    canvas.drawOval(0,0,200,100,paint);

Canvas.将原点移动至oval left,top坐标处,再进行旋转,因为是相对与原点来旋转的,所以将原点设置为Rect左上角,旋转比较方便。
确定Oval的left top right bottom实际的坐标为: (600,600,800,700);

Path

Path lineTo方法效果上跟drawLine(0,0,x,y);是相同的。
Path rLineTo方法其实是drawLine(0,0,x,y); canvas.translation(x,y);的结合体,不过只限于当前Path

path使用过程中如果需要canvas.translation(),必须新建一个Path,因为当前path还没有draw,所以会整体移动。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010369338/article/details/79973286
文章标签: Canvas Canvas 坐标
个人分类: 自定义view
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭