android Graphics(二):路径及文字

Paint paint=new Paint();paint.setColor(Color.RED); //设置画笔颜色paint.setStyle(Style.STROKE);//填充样式改为描边 paint.setStrokeWidth(5);//设置画笔宽度Path path = new Path();path.moveTo(10, 10); //设定起始点path.lineTo(10, 100);//第一条直线的终点,也是第二条直线的起点path.lineTo(300, 100);//画第二条直线path.lineTo(500, 100);//第三条直线path.close();//闭环canvas.drawPath(path, paint);

2、矩形路径

void addRect (float left, float top, float right, float bottom, Path.Direction dir)void addRect (RectF rect, Path.Direction dir)

这里Path类创建矩形路径的参数与上篇canvas绘制矩形差不多,唯一不同的一点是增加了Path.Direction参数;Path.Direction有两个值:Path.Direction.CCW:是counter-clockwise缩写,指创建逆时针方向的矩形路径;Path.Direction.CW:是clockwise的缩写,指创建顺时针方向的矩形路径;

//先创建两个大小一样的路径//第一个逆向生成Path CCWRectpath = new Path();RectF rect1 = new RectF(50, 50, 240, 200);CCWRectpath.addRect(rect1, Direction.CCW);//第二个顺向生成Path CWRectpath = new Path();RectF rect2 = new RectF(290, 50, 480, 200);CWRectpath.addRect(rect2, Direction.CW);//先画出这两个路径 canvas.drawPath(CCWRectpath, paint);canvas.drawPath(CWRectpath, paint);

问:从效果图中,看不出顺时针生成和逆时针生成的任何区别,,怎么会没区别呢?答:当然没区别啦,无论正时针还是逆时针,仅仅是生成方式不同而已,矩形就那么大画出来的路径矩形当然与矩形一样大了。问:那生成方式有什么区别呢?答:生成方式的区别在于,依据生成方向排版的文字!后面我们会讲到文字,文字是可以依据路径排版的,那文字的行走方向就是依据路径的生成方向;//先创建两个大小一样的路径//第一个逆向生成Path CCWRectpath = new Path();RectF rect1 = new RectF(50, 50, 240, 200);CCWRectpath.addRect(rect1, Direction.CCW);//第二个顺向生成Path CWRectpath = new Path();RectF rect2 = new RectF(290, 50, 480, 200);CWRectpath.addRect(rect2, Direction.CW);//先画出这两个路径 canvas.drawPath(CCWRectpath, paint);canvas.drawPath(CWRectpath, paint);//依据路径写出文字String text="风萧萧兮易水寒,壮士一去兮不复返";paint.setColor(Color.GRAY);paint.setTextSize(35);canvas.drawTextOnPath(text, CCWRectpath, 0, 18, paint);//逆时针生成canvas.drawTextOnPath(text, CWRectpath, 0, 18, paint);//顺时针生成

(有关文字的代码部分,可以先忽略,后面会讲到,这里只是让大家知道生成方式的用处)3、圆角矩形路径

void addRoundRect (RectF rect, float[] radii, Path.Direction dir)void addRoundRect (RectF rect, float rx, float ry, Path.Direction dir)

这里有两个构造函数,部分参数说明如下:第一个构造函数:可以定制每个角的圆角大小:float[] radii:必须传入8个数值,分四组,分别对应每个角所使用的椭圆的横轴半径和纵轴半径,如{x1,y1,x2,y2,x3,y3,x4,y4},其中,x1,y1对应第一个角的(左上角)用来产生圆角的椭圆的横轴半径和纵轴半径,其它类推……第二个构造函数:只能构建统一圆角大小float rx:所产生圆角的椭圆的横轴半径;float ry:所产生圆角的椭圆的纵轴半径;

Path path = new Path();RectF rect1 = new RectF(50, 50, 240, 200);path.addRoundRect(rect1, 10, 15 , Direction.CCW);RectF rect2 = new RectF(290, 50, 480, 200);float radii[] ={10,15,20,25,30,35,40,45};path.addRoundRect(rect2, radii, Direction.CCW);canvas.drawPath(path, paint);

4、圆形路径

Path path = new Path();path.addCircle(200, 200, 100, Direction.CCW);canvas.drawPath(path, paint);

5、椭圆路径

void addOval (RectF oval, Path.Direction dir)

参数说明:RectF oval:生成椭圆所对应的矩形Path.Direction :生成方式,与矩形一样,分为顺时针与逆时针,意义完全相同,不再重复

Path path = new Path();RectF rect = new RectF(50, 50, 240, 200);path.addOval(rect, Direction.CCW);canvas.drawPath(path, paint);

6、弧形路径

void addArc (RectF oval, float startAngle, float sweepAngle)

人生就是一次充满未知的旅行,在乎的是沿途的风景,

android Graphics(二):路径及文字

相关文章:

你感兴趣的文章:

标签云: