关于Canvas推荐博客 http://blog.csdn.net/harvic880925/article/details/39080931 自己这里只是做下总结。
Canvas的意思是画布,表现在屏幕上就是一块区域,在自定义view方面,它能做很多事。下面从如下三个方面介绍Canvas。
一 Canvas几何图形的绘制。
二 Canvas的图形变换和Matrix。
三 Canvas的保存和回滚。
一 Canvas几何图形的绘制。
canvas.drawArc (扇形) canvas.drawCircle(圆)
canvas.drawOval(椭圆) canvas.drawLine(线)
canvas.drawPoint(点) canvas.drawRect(矩形) canvas.drawRectF(矩形)
canvas.drawRoundRect(圆角矩形) canvas.drawVertices(顶点)
cnavas.drawPath(路径) canvas.drawBitmap (位图)
canvas.drawPicture (图片) canvas.drawText (文本)
上面列举的大致就是Canvas能绘制的基本内容了,下面详细介绍他们的参数。
canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint);
oval :指定圆弧的外轮廓矩形区域。startAngle: 圆弧起始角度,单位为度。
sweepAngle: 圆弧扫过的角度,顺时针方向,单位为度,从右中间开始为零度。
useCenter: 如果为True时,在绘制圆弧时将圆心包括在内,通常用来绘制扇形。
paint: 绘制圆弧的画板属性,如颜色,是否填充等。
canvas.drawCircle(cx, cy, radius, paint);
cx:圆心的x坐标。
cy:圆心的y坐标。
radius:圆的半径。
paint:绘制时所使用的画笔。
canvas.drawLines(startX, startY, stopX, stopY, paint);
startX:起始端点的X坐标。
startY:起始端点的Y坐标。
stopX:终止端点的X坐标。
stopY:终止端点的Y坐标。
paint:绘制直线所使用的画笔。
canvas.drawRect(left, top, right, bottom, paint);
left : 矩形左上顶点的X轴坐标。
top :矩形左上顶点的Y轴坐标。
right :矩形右下顶点的X轴坐标。
botton :矩形右下顶点的Y轴坐标。
canvas.drawBitmap(bitmap, left, top, paint)
Bitmap:图片对象。
left:偏移左边的位置。
top: 偏移顶部的位置。
drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint);
Rect src: 是对图片进行裁截,若是空null则显示整个图片
RectF dst:是图片在Canvas画布中显示的区域,
大于src则把src的裁截区放大,
小于src则把src的裁截区缩小。
drawText的相关详细可参考博客 http://blog.csdn.net/harvic880925/article/details/50423762
二 Canvas的图形变换和Matrix。
canvas的变换方式有tanslate(平移),Rotate(旋转),scale(缩放),skew(扭曲)。
下面逐一介绍:
1 tanslate(平移)
canvas.translate(dx, dy)
float dx:水平方向平移的距离,正数指向正方向(向右)平移的量,负数为向负方向(向左)平移的量
flaot dy:垂直方向平移的距离,正数指向正方向(向下)平移的量,负数为向负方向(向上)平移的量
2 Rotate(旋转)
canvas.rotate(degrees);
canvas.rotate(degrees, px, py);
第一个构造函数直接输入旋转的度数,正数是顺时针旋转,负数指逆时针旋转,它的旋转中心点是原点(0,0)
第二个构造函数除了度数以外,还可以指定旋转的中心点坐标(px,py)
3 scale(缩放)
canvas.scale(sx, sy);
canvas.scale(sx, sy, px, py);
float sx:水平方向伸缩的比例,假设原坐标轴的比例为n,不变时为1,在变更的X轴密度为n*sx;所以,sx为小数为缩小,sx为整数为放大
float sy:垂直方向伸缩的比例,同样,小数为缩小,整数为放大
4 skew(扭曲)
canvas.skew(sx, sy)
float sx:将画布在x方向上倾斜相应的角度,sx倾斜角度的tan值,
float sy:将画布在y轴方向上倾斜相应的角度,sy为倾斜角度的tan值,注意,这里全是倾斜角度的tan值哦,比如我们打算在X轴方向上倾斜60度,tan60=根号3,小数对应1.732.
三 Canvas的保存(save())和回滚(restore())。
canvas.save():每次调用Save()函数,都会把当前的画布的状态进行保存,然后放入特定的栈中;
canvas.restore() : 每当调用Restore()函数,就会把栈中最顶层的画布状态取出来,并按照这个状态恢复当前的画布,并在这个画布上做画。