4.1.5 绘制形状

    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);

 

posted on 2014-08-26 10:40  宁静致远,一览众山小  阅读(365)  评论(0编辑  收藏  举报

导航