ANdroid绘图之Canvas

关于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()函数,就会把栈中最顶层的画布状态取出来,并按照这个状态恢复当前的画布,并在这个画布上做画。



你可能感兴趣的:(Android应用,Canvas)