类path是一个封装的几何学路径包括直线,二次曲线,三次曲线。它可以通过函数canvas.drawPath(path, paint)画出来,可以通过填充方式或者画线方式(由paint的style决定),也可以设置cliping或者把text画在path上边

Path.Direction

用来指定添加到path中的模型(比如方形,椭圆)的闭合方向,有两个值

CCW 表示逆时针,CW 表示顺时针

Path.FillType

Path会被填充的方法,有4个值

EVEN_ODD ,INVERSE_EVEN_ODD ,INVERSE_WINDING,WINDING

public Path ()

创建一个空路径

public Path (Path src)

创建一个路径,将src里的内容都复制到新路径中

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

将一段弧线加入到path中作为一个新的轮廓,该弧线由oval,startAngle,sweepAngle三者决定

public void addCircle (float x, float y, float radius, Path.Direction dir)

增加一个闭合的圆形到path中,dir表示闭合的方向

public void addOval (RectF oval, Path.Direction dir)

增加一个闭合的矩形到path中

public void addPath (Path src, float dx, float dy)

将src平移dx,dy后添加到path当中

public void addPath (Path src)

将src添加到path当中

public void addPath (Path src, Matrix matrix)

将src通过matrix变换后添加到Path当中

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

增加一个闭合的矩形到path当中

public void addRect (RectF rect, Path.Direction dir)

增加一个闭合的矩形到path当中

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

增加一个闭合的圆角矩形到path当中,radii表示各个角的半径点x,y,依次是左上角,右上角,右下角,左下角

public void addRoundRect (RectF rect, float rx, float ry, Path.Direction dir)

增加一个闭合的圆角矩形到path当中,rx,ry表示各个角的半径点

public void arcTo (RectF oval, float startAngle, float sweepAngle)

将一段圆弧连接到path当中,如果path的最后一个点和圆弧的第一个点不一样,那么就会先通过lineTo()将这两个点连接起来,然后再连接圆弧。当然,如果path是空的,那就会调用moveTo()把path的第一个点移到圆弧的第一个点上来

public void arcTo (RectF oval, float startAngle, float sweepAngle, boolean forceMoveTo)

同上,sweepAngle的值在应用的过程中会到360求模,forceMoveTo如果是true,那么圆弧会一直显示一个新的轮廓

public void close ()

关闭当前轮廓,如果当前点和该轮廓的第一个点不一样,会自动的用一条直接连接该两点

public void computeBounds (RectF bounds, boolean exact)

计算path中控制的点的边界,将结果写入bounds中,如果Path中只有0或者1个点,那么bounds会返回(0,0,0,0)的值,exact这个变量没用

public void cubicTo (float x1, float y1, float x2, float y2, float x3, float y3)

从最后一个点开始增加一段贝塞尔曲线到path当中,接近(x1,y1),(x2,y2),同时在(x3,y3)中结束,如果这个轮廓没有调用过moveTo(),那么将会以(0,0)作为起点

public Path.FillType getFillType ()

获取path的填充方式,这定义了在内部的计算方法,默认值为WINDING

public void incReserve (int extraPtCount)

提示path将会增加extraPtCount个点,这能使path有效率的分配它的存储空间

public boolean isEmpty ()

查询path是否为空(不包括任何直线,曲线)

public boolean isInverseFillType ()

判断filltype是否为INVERSE中的一种

public boolean isRect (RectF rect)

如果path指定了一个矩形,那么返回true,并且rect将会存储path的边界值,如果没有指定一个矩形,返回false,并且忽略掉rect

public void lineTo (float x, float y)

将path的最后一个点连接点(x,y),如果path还没调用moveTo的话,将(0,0)点连接到(x,y)

public void moveTo (float x, float y)

设置下一个轮廓的第一个点

public void offset (float dx, float dy, Path dst)

将path平移dx,dy之后,将结果写到dst中,如果dst为null,那么改变后的结果直接写在当前path中

public void offset (float dx, float dy)

同上,只不过就是dst=null的情形

public void quadTo (float x1, float y1, float x2, float y2)

增加一条二次的贝塞尔曲线到path的最后一个点,接近(x1,y1),在(x2,y2)点结束。如果path没有调用moveTo来确定第一个点,那第一个点设置为(0,0)

public void rCubicTo (float x1, float y1, float x2, float y2, float x3, float y3)

跟cubicTo相同,但是参数里的这些点坐标会被考虑当前轮廓的相对位置

public void rLineTo (float dx, float dy)

public void rMoveTo (float dx, float dy)

public void rQuadTo (float dx1, float dy1, float dx2, float dy2)

跟去掉字母r的相对应的函数一样,但是都会考虑提供的点跟轮廓的相对位置

public void reset ()

清空Path的任何直线和曲线,让它变成空,但是不会改变filltype

public void rewind ()

rewind当前path,清除掉所有直线,曲线,但是保留它内部的数据结构,以便更好的重新使用

public void set (Path src)

用src的值替代当前path的值

public void setFillType (Path.FillType ft)

设置当前path的filltype

public void setLastPoint (float dx, float dy)

设置当前path的最后一个点

public void toggleInverseFillType ()

套住filltype的inverse状态

public void transform (Matrix matrix, Path dst)

将path进行matrix变化后,将结果保存到dst当中,如果dst=null,将结果保存到当前path当中

public void transform (Matrix matrix)

同上,相当于dst=null情形

android.graphic.Path的更多相关文章

  1. Android中Path类的lineTo方法和quadTo方法画线的区别

    转载:http://blog.csdn.net/stevenhu_223/article/details/9229337 当我们需要在屏幕上形成画线时,Path类的应用是必不可少的,而Path类的li ...

  2. android 利用Path.cubicTo 画 贝塞尔曲线

    Path.cubicTo void android.graphics.Path.cubicTo(float x1, float y1, float x2, float y2, float x3, fl ...

  3. MAC上使用maven打android的包,报错:No Android SDK path could be found. 解决办法

    对android工程运行mvn compile出现如下信息: No Android SDK path could be found. You may configure it in the pom u ...

  4. 使用android.graphics.Path类自绘制PopupWindow背景

    PopupWindow简单介绍 PopupWindow是悬浮在当前activity上的一个容器,用它能够展示随意的内容. PopupWindow跟位置有关的API有以下几个: showAsDropDo ...

  5. Android使用Path实现仿最新淘宝轮播广告底部弧形有锯齿的问题以及解决办法

    在前面一篇博文<Android高仿京东淘宝自动无限循环轮播控件的实现思路和过程>中已经基本介绍了实现轮播广告的基本思路和过程,但是仔细观察淘宝的轮播广告栏,发现在轮播广告栏的底部有个小小的 ...

  6. Android自定义控件-Path之贝赛尔曲线和手势轨迹、水波纹效果

    从这篇开始,我将延续androidGraphics系列文章把图片相关的知识给大家讲完,这一篇先稍微进阶一下,给大家把<android Graphics(二):路径及文字>略去的quadTo ...

  7. Android vector Path Data画图详解

    SVG是一种矢量图格式,是Scalable Vector Graphics三个单词的首字母缩写.在xml文件中的标签是,画出的图形可以像一般的图片资源使用,例子如下: <vector xmlns ...

  8. android graphic(15)—fence

    为何须要fence fence怎样使用 软件实现的opengl 硬件实现的opengl 上层使用canvas画图 上层使用opengl画图 下层合成 updateTexImage doComposeS ...

  9. 开源项目 apk cfg and android app path profiling

    暑假里面完毕的一个小项目,limitation还是挺多的. 期待未来有更大的motivation 去完好它.通过此次的项目设计,对于smali的语法更加了解了,对于进一步学习android app的安 ...

随机推荐

  1. 【Java EE 学习 24 上】【注解详解】

    一.注解 1.所有的注解都是类. 2.所有的注解都是Annotation接口的子类. 接口摘要 Annotation 所有 annotation 类型都要扩展的公共接口. 3.定义方式 public ...

  2. java多线程编程

    一.多线程的优缺点 多线程的优点: 1)资源利用率更好2)程序设计在某些情况下更简单3)程序响应更快 多线程的代价: 1)设计更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复 ...

  3. [工作中的设计模式]中介模式模式Mediator

    一.模式解析 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互. 中介模式又叫调停者模式,他有如下特点: 1.有多个系统或者对 ...

  4. linux中grep命令详解

    http://jingyan.baidu.com/article/76a7e409e72777fc3b6e158a.html

  5. ZeroMQ接口函数之 :zmq_connect - 由一个socket创建一个对外连接

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_connect zmq_connect(3)  ØMQ Manual - ØMQ/3.2.5 Name zmq_c ...

  6. CSV格式数据如何导入SqlServer?

    一.使用微软数据库IDE管理软件:Microsoft SQL Server Management Studio 1.标准的CSV文件格式如下: 2.建数据表 3.在需要导入的数据库右键点击“任务”,选 ...

  7. 爬虫, 获取登录者的外网IP

    笔者学习了一下用爬虫, 获取登录者的外网IP. 首先导入Jsoup的jar包 public class RetrivePage { private static String url="ht ...

  8. 【MongoDB:第二天】基本操作

    接上一篇博客: http://www.cnblogs.com/xiaoit/p/3867573.html 1:插入新的数据 db.person.insert({"uid" : 12 ...

  9. java 对象输入输出流

    对象的输入输出流的作用: 用于写入对象 的信息读取对象的信息. 对象的持久化. 比如:用户信息.              ObjectInputStream   : 对象输入流            ...

  10. MySQL每天自动增加分区

    有一个表tb_3a_huandan_detail,每天有300W左右的数据.查询太慢了,网上了解了一下,可以做表分区.由于数据较大,所以决定做定时任务每天执行存过自动进行分区. 1.在进行自动增加分区 ...