【Android开发】图形图像处理技术-绘制路径
来源:互联网 发布:客服淘宝女装回复技巧 编辑:程序博客网 时间:2024/05/21 09:54
在Android中提供了绘制路径的功能。绘制一条路径可以分为创建路径和将定义好的路径绘制在画布上两部分,下面分别进行介绍。
1.创建路径
要创建路径,可以使用android.graphics.Path类来实现。Path类包含一组矢量绘图方法,如画圆、矩形、弧、线条等。常用的绘图方法如下表:
void addArc(RectF oval, float startAngle, float sweepAngle) //为路径添加一个多边形
void addCircle(float x, float y, float radius, Path.Direction dir) //给path添加圆圈
void addOval(RectF oval, Path.Direction dir) //添加椭圆形
void addRect(RectF rect, Path.Direction dir) //添加一个区域
Path.Direction.CCW:是counter-clockwise缩写,指创建逆时针方向的路径;
Path.Direction.CW:是clockwise的缩写,指创建顺时针方向的路径;
void moveTo(float x,float y)设置开始绘制直线的起点
void lineTo(float x,float y)在moveTo()方法设置的起点与该方法指定的结束点之间画一条直线,如果在调用该方法之前没使用moveTo()方法设置起点,那么将从(0,0)点开始绘制直线。
void quadTo(float x1,float y1,float x1,float y2)用于根据指定的参数绘制一条线段轨迹
void close()闭合路径
boolean isEmpty() //判断路径是否为空
void transform(Matrix matrix) //应用矩阵变换
void transform(Matrix matrix, Path dst) //应用矩阵变换并将结果放到新的路径中,即第二个参数。
例如,要创建一个顺时针旋转的圆形路径,可以使用下面的代码
Path path=new Path();//创建并实例化一个path对象
path.addCircle(150,200,60,Path.Direction.CW);//在path对象中添加一个圆形路径
要创建一个折线,可以使用下面的代码:
Path myPath=new Path();
myPath.moveTo(50,100);
myPath.lineTo(100,45);
myPath.lineTo(150,100);
myPath.lineTo(200,80);
要创建一个三角形路径,可以使用下面的代码:
Path path=new Path();
path.moveTo(50,50);
path.lineTo(100,10);
path.lineTo(150,50);
path.close();
2.将定义好的路径绘制在画布上
使用Canvas类提供的drawPath()方法,可以将定义好的路径绘制在画布上。
现在我们实现在屏幕上绘制圆形路径、折线路径、三教路径以及环绕路径的环形文字
具体实现方法:
用来显示自定义的绘图类的布局文件
res/layout/main.xml:
打开MainActivity,在文件中创建名为MyView的内部类,继承android.view.View类,并添加构造方法和重写onDraw(Canvas canvas)方法,在里面进行作图:
MainActivity:
1.创建路径
要创建路径,可以使用android.graphics.Path类来实现。Path类包含一组矢量绘图方法,如画圆、矩形、弧、线条等。常用的绘图方法如下表:
void addArc(RectF oval, float startAngle, float sweepAngle) //为路径添加一个多边形
void addCircle(float x, float y, float radius, Path.Direction dir) //给path添加圆圈
void addOval(RectF oval, Path.Direction dir) //添加椭圆形
void addRect(RectF rect, Path.Direction dir) //添加一个区域
void addRoundRect(RectF rect, float[] radii, Path.Direction dir) //添加一个圆角区域
Path.Direction有两个值:Path.Direction.CCW:是counter-clockwise缩写,指创建逆时针方向的路径;
Path.Direction.CW:是clockwise的缩写,指创建顺时针方向的路径;
void moveTo(float x,float y)设置开始绘制直线的起点
void lineTo(float x,float y)在moveTo()方法设置的起点与该方法指定的结束点之间画一条直线,如果在调用该方法之前没使用moveTo()方法设置起点,那么将从(0,0)点开始绘制直线。
void quadTo(float x1,float y1,float x1,float y2)用于根据指定的参数绘制一条线段轨迹
void close()闭合路径
boolean isEmpty() //判断路径是否为空
void transform(Matrix matrix) //应用矩阵变换
void transform(Matrix matrix, Path dst) //应用矩阵变换并将结果放到新的路径中,即第二个参数。
例如,要创建一个顺时针旋转的圆形路径,可以使用下面的代码
Path path=new Path();//创建并实例化一个path对象
path.addCircle(150,200,60,Path.Direction.CW);//在path对象中添加一个圆形路径
效果如图
要创建一个折线,可以使用下面的代码:
Path myPath=new Path();
myPath.moveTo(50,100);
myPath.lineTo(100,45);
myPath.lineTo(150,100);
myPath.lineTo(200,80);
效果如图
要创建一个三角形路径,可以使用下面的代码:
Path path=new Path();
path.moveTo(50,50);
path.lineTo(100,10);
path.lineTo(150,50);
path.close();
效果如图
2.将定义好的路径绘制在画布上
使用Canvas类提供的drawPath()方法,可以将定义好的路径绘制在画布上。
现在我们实现在屏幕上绘制圆形路径、折线路径、三教路径以及环绕路径的环形文字
具体实现方法:
用来显示自定义的绘图类的布局文件
res/layout/main.xml:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/frameLayout1" android:orientation="vertical" ></FrameLayout>
打开MainActivity,在文件中创建名为MyView的内部类,继承android.view.View类,并添加构造方法和重写onDraw(Canvas canvas)方法,在里面进行作图:
MainActivity:
package com.example.test; import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Align;import android.graphics.Paint.Style;import android.graphics.Path;import android.os.Bundle;import android.view.View;import android.widget.FrameLayout; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //获取布局文件中添加的帧布局管理器 FrameLayout ll=(FrameLayout)findViewById(R.id.frameLayout1); //将自定义的MyView视图添加到帧布局 ll.addView(new MyView(this));} public class MyView extends View{public MyView(Context context) {super(context);// TODO Auto-generated constructor stub}@Overrideprotected void onDraw(Canvas canvas) {canvas.drawColor(Color.WHITE);//指定画布的背景颜色为白色Paint paint=new Paint();//创建一个采用默认设置的画笔paint.setColor(Color.BLACK);//设置画笔颜色paint.setAntiAlias(true);//使用抗锯齿功能paint.setStyle(Style.STROKE);//设置填充方式为描边//绘制圆形路径Path pathCircle=new Path();pathCircle.addCircle(70, 70, 40, Path.Direction.CCW);//添加逆时针的圆形路径canvas.drawPath(pathCircle, paint);//绘制折线路径Path myPath=new Path();myPath.moveTo(150,100);myPath.lineTo(200,45);myPath.lineTo(250,100);myPath.lineTo(300,80);canvas.drawPath(myPath, paint);//绘制三角形路径Path pathTr=new Path();pathTr.moveTo(350,80);pathTr.lineTo(400,30);pathTr.lineTo(450,80);pathTr.close();canvas.drawPath(pathTr, paint);//绘制环绕型的文字String str="风萧萧兮易水寒,壮士一去兮不复还";Path path=new Path();path.addCircle(550, 100, 48, Path.Direction.CW);//创建顺时针的圆形路径paint.setStyle(Style.FILL);//设置画笔的填充方式canvas.drawTextOnPath(str, path, 0, -18, paint);super.onDraw(canvas);} }}
画出的效果如图
转载请注明出处:http://blog.csdn.net/acmman/article/details/45307025
0 0
- 【Android开发】图形图像处理技术-绘制路径
- 【Android开发】图形图像处理技术-绘制几何图形
- 【Android开发】图形图像处理技术-绘制文本
- 【Android开发】图形图像处理技术-绘制图片
- 【Android开发】图形图像处理技术-Bitmap和BitmapFactory类
- 【Android开发】图形图像处理技术-使用BitmapShader渲染图像
- Android学习笔记之图形图像处理技术
- 【Android开发】图形图像处理技术-实现Android动画的两种方式
- 【Android开发】图形图像处理技术-常用绘图类之Paint类
- 【Android开发】图形图像处理技术-常用绘图类之Canvas类
- 【Android开发】图形图像处理技术-旋转、缩放、倾斜和平移图像
- android|图形图像 fontmetrics 文本绘制
- Android图形图像处理
- android图形图像处理PorterDuffXfermode
- 【Android】图形图像处理
- android开发笔记之多媒体—图形图像处理
- Android从入门到精通第9章:图形图像处理技术
- 【Android LibGDX游戏引擎开发教程】第05期:图形图像的绘制(上)基础类的使用和详解
- Google Volley使用之基础
- Myeclipse10下搭建SSH框架(图解)Struts2.1+Spring3.0+Hibernate3.3
- 2011年下半年系统架构设计师上午试题 解析和理解
- 关于标签c:forEach的varStatus属性【整理】
- JavaEE完全实战详解笔记--在Eclipse中创建一个简单的web项目
- 【Android开发】图形图像处理技术-绘制路径
- java生成随机短信验证码的工具类
- Ubuntu主目录下出现C\:\\nppdf32Log\\debuglog.txt 文件
- 抛物线运动2
- NetBeans启动Tomcat错误:127.0.0.1不是内部或外部命令 解决方法
- Xilinx ISE Design Suite14.7开发流程
- 判断点是否在任意多边形内(java)
- Unit Test in Visual Studio
- 2014年整理的IOS开发常用库