870920 Menu

Path与DrawablePath详解

Path(轨迹)类的对象是一组直线或曲线的序列,用于描述一个封闭或开放的形状。轨迹对象可包含多个子轨迹,这些子轨迹可以是开放的,也可以是封闭的。Path类有以下特性:

  • Path类的对象只是描述出一个形状,该形状并不可见,必须经过Graphics填充后才可见
  • Path类描述形状的函数,均从当前位置开始(即描绘某个形状之后的结束位置),到达参数坐标处

使用流程:
 创建对象(普通栈对象)
 设置起点(从该位置开始描述图形)
 描述图形(添加直线、曲线或形状),或者设置图像(很少用Path绘制图像)
 封闭首尾(可选,适用于结尾为…to()的函数)
 重复上面3个步骤(可选)
 使用Graphics图形环境或某些几何操作将Path所描述的形状绘制出来
 清除已描述的图形,重置为初始状态(可选)

示例代码(网站发表,代码略)。

Path类的成员函数:
 getBounds () 返回包含此轨迹所有点的最小矩形
 getBoundsTransformed () 返回包含仿射变换之后的轨迹所有点的最小矩形
 contains () 检测给出的点是否位于此轨迹内
 intersectsLine () 检测给出的直线是否穿过此轨迹
 getClippedLine () 裁剪直线以使其位于此轨迹之内或之外
 getLength () 返回轨迹的长度
 getPointAlongPath () 返回轨迹上的某个点
 getNearestPoint () 给出一个点,返回轨迹上最接近该点的点
 getCurrentPosition () 返回当前轨迹的尾点
 clear () 清除当前所设置的所有形状,重置轨迹对象
 startNewSubPath () 按给出的位置开始一个新的子轨迹
 closeSubPath () 封闭当前子轨迹(轨迹自动首尾连接线)
 lineTo () 添加一条直线,起于当前位置,终点为给出的参数坐标
 quadraticTo () 从当前形状的末尾添加一条二阶贝塞尔曲线
 cubicTo () 从当前形状的末尾添加一条三阶贝塞尔曲线
 addRectangle () 添加一个矩形区域。 所添加的矩形将作为一个子轨迹
 addRoundedRectangle () 添加一个圆角矩形
 addTriangle () 添加三角形
 addQuadrilateral () 添加四边形
 addEllipse () 添加椭圆
 addArc () 添加圆弧
 addCentredArc () 添加居中圆弧,并可旋转之
 addPieSegment () 添加一个饼图(扇面)
 addLineSegment () 添加一条指定线宽的直线
 addArrow () 添加一个尾部为箭头的直线
 addPolygon () 添加一个多边形
 addStar () 添加一个星形
 addBubble () 添加一个语泡形状
 addPath () 将另一个轨迹添加到此轨迹中,并可进行仿射变换
 swapWithPath () 交换两个轨迹对象的内容
 applyTransform () 此轨迹进行仿射变换
 scaleToFit () 缩放此轨迹,使之规整的匹配给定的区域
 getTransformToScaleToFit () 返回匹配给定区域的无损变换
 createPathWithRoundedCorners() 创建此轨迹的另一个版本,所有的锐角将替换为曲线
 setUsingNonZeroWinding () 设置吸附(是否将子轨迹或另一个轨迹视为自身的一部分)
 isUsingNonZeroWinding () 判断当前是否使用了吸附
 loadPathFromStream () 从输入流中加载一个已存储的轨迹
 loadPathFromData () 从内存块中加载一个已存储的轨迹
 writePathToStream () 存储轨迹,将其写入输出流中
 toString () 创建一个描述此轨迹的字符串
 restoreFromString () 恢复toString()所创建的轨迹对象

DrawablePath

Path所描述的形状既没有颜色,也没有轮廓,只是抽象意义上的形状。DrawablePath可为其添加更多的“属性”,比如填充颜色和边线,及其边线的宽度和颜色。此外,DrawablePath还可将所描述的形状直接转换为图像,并自我绘制,这一特性可用于绘制某些控件(比如DrawableButton)或界面背景。其内部原理是:

DrawablePath继承自Component—Drawable—DrawableShape,具有可视化组件的一切属性和行为,其属性中聚合了Path类的对象和PathStrokeType类的对象,因此能够自行绘制出Path所描述的抽象形状及其边线。

示例代码及本类的重要成员函数(网站发表,略)