Canvas类定义了多种绘制方法,接下来让我们了解一下这些方法。
1.点
这些方法中最简单的是只绘制一个点。为了绘制一个点,可以使用Canvas对象上的drawPoint方法,同时传入x和y位置以及一个Paint对象。
1 canvas.drawPoint(199, 201, paint);
待绘制点的大小取决于Paint对象的画笔宽度。
1 Paint paint=new Paint(); 2 paint.setColor(Color.GREEN); 3 paint.setStrokeWidth(100); 4 canvas.drawPoint(199, 201, paint);
2.直线
直线就是一条线:一系列点在单一方向上从起点延伸至终点。可以使用Canvas对象的drawLine方法绘制一条直线,并传入起始的x和y坐标、结束x和y坐标以及一个Paint对象。
1 Paint paint=new Paint(); 2 paint.setColor(Color.GREEN); 3 paint.setStrokeWidth(10); 4 int startx=50; 5 int starty=100; 6 int endx=150; 7 int endy=210; 8 canvas.drawLine(startx, starty, endx, endy, paint);
3.矩形
有几种不同的方法可用于绘制矩形,其中最容易的方法是指定左边的y坐标、顶部的x坐标、右边的y坐标和底部的x坐标,以及指定一个Paint对象。
1 Paint paint=new Paint(); 2 paint.setColor(Color.GREEN); 3 paint.setStyle(Paint.Style.FILL_AND_STROKE); 4 paint.setStrokeWidth(10); 5 int leftx=20; 6 int topy=20; 7 int rightx=50; 8 int bottomy=100; 9 canvas.drawRect(leftx, topy, rightx, bottomy, paint);
另一个绘制矩形的方法是传入一个RectF对象,RectF类使用浮点值分别表示左边、顶部、右边以及底部的坐标,以此来定义一个矩形。
1 Paint paint=new Paint(); 2 paint.setColor(Color.GREEN); 3 paint.setStyle(Paint.Style.FILL_AND_STROKE); 4 paint.setStrokeWidth(10); 5 int leftx=20; 6 int topy=20; 7 int rightx=50; 8 int bottomy=100; 9 RectF rectangle=new RectF(leftx, topy, rightx, bottomy); 10 canvas.drawRect(rectangle, paint);
4.椭圆
与使用RectF对象绘制矩形的方式相同,也可以使用RectF对象绘制一个椭圆。此时,RectF对象定义椭圆的边界。换句话说,将在矩形的内部绘制椭圆,其中椭圆的最长点位于顶部和底部边界的中点,而椭圆的最宽点位于左边和右边边界的中点。
1 Paint paint=new Paint(); 2 paint.setColor(Color.GREEN); 3 paint.setStyle(Paint.Style.STROKE); 4 int leftx=20; 5 int topy=20; 6 int rightx=50; 7 int bottomy=100; 8 RectF ovalBounds=new RectF(leftx, topy, rightx, bottomy); 9 canvas.drawOval(ovalBounds, paint);
5.圆
可以通过制定中心点(x和y)和半径来绘制一个圆。
1 Canvas canvas=new Canvas(); 2 Paint paint=new Paint(); 3 paint.setColor(Color.GREEN); 4 paint.setStyle(Paint.Style.STROKE); 5 int x=50; 6 int y=50; 7 float radius=20; 8 canvas.drawCircle(x, y, radius, paint);
6.路径
路径是一系列可用来创建任意形状的直线。为了绘制一个路径,首先必须构造一个Path对象。Path对象可以调用任意次数,通过使用MoveTo告诉他无需绘制而直接移动到某个点,或者使用lineTo绘制一条直线到某个点。当然,还有用来绘制弧的方法等。关于这些方法的信息可以在Path类的文档中找到。
然后,可以将Path对象传递给Canvas对象的drawPath方法。
1 Paint paint=new Paint(); 2 paint.setColor(Color.GREEN); 3 paint.setStyle(Paint.Style.STROKE); 4 Path p=new Path(); 5 //没有初始的“moveTo”,将在(0,0)处开始绘制 6 p.moveTo(20, 20); 7 p.lineTo(100, 200); 8 p.lineTo(200, 100); 9 p.lineTo(240, 155); 10 p.lineTo(250, 175); 11 p.lineTo(20, 20); 12 canvas.drawPath(p, paint);