Rect 相关笔记

12 阅读4分钟

相关方法

  • public final boolean isEmpty () //如果矩形为空,则返回true(left >= right 或 top >= bottom)

  • public void setEmpty () //将矩形设置为(0,0,0,0)(left, top, right, bottom)

  • public final int height () //返回矩形的高度(这没有检查一个有效的矩形;即top <= bottom),所以结果可能是负的

  • public final int width () //返回矩形的宽度(这没有检查一个有效的矩形即left<=right),所以结果可能是负的

  • public final int centerX () //获取矩阵中心点Y轴上的坐标;如果值是小数,则返回小于值的最大整数(返回int类型)

  • public final int centerY () //获取矩阵中心点Y轴上的坐标;如果值是小数,则返回小于值的最大整数(返回int类型)

  • public final float exactCenterX () //该方法和CenterX()类似,获取矩阵中心点X轴上的坐标,只是该方法精确度比它高(返回float类型)

  • public final float exactCenterY () //如果(x,y)在矩形内,则返回true,注意:左侧和顶部被认为是内部,而右侧和底部则不是;x,y被包含:left<= x <right和top<= y <bottom 空矩形不包含任何点

  • public boolean contains (int x, int y) //如果(x,y)在矩形内,则返回true
    注意:左侧和顶部被认为是内部,而右侧和底部则不是;x,y被包含:left<= x <right和top<= y <bottom 空矩形不包含任何点

  • public boolean contains (int left, int top, int right, int bottom)//如果矩形的4条指定边在该矩形或等于该矩形,则返回true
    注意:一个空矩形永远不会包含另一个矩形

  • public boolean contains (Rect r) //如果指定的矩形r在该矩形内或等于该矩形,则返回true
    注意:一个空矩形永远不会包含另一个矩形

  • public void inset (int dx, int dy) //在矩形中插入(dx,dy);dx/dy是正的,两边向内移动(使矩形变窄)。dx/dy是负的,两边向外移动(使矩形变宽)

  • public boolean intersects (int left, int top, int right, int bottom) //如果此矩形与指定矩形相交,则返回true
    注意:这个矩形在任何情况下都不会被修改
    不执行检查矩形是否为空的操作
    要记录交集,请使用intersect()/setIntersect()

  • public static boolean intersects (Rect a, Rect b) //如果两个指定矩形相交,则返回true
    注意:在任何情况下,这两个矩形都不会被修改。
    要记录交集,请使用intersectt)/setIntersect()

  • public boolean intersect (Rect r) //如果指定的矩形与此矩形相交,则返回true并将此矩形设置为该交集;否则返回false且不更改此矩形
    注意:要测试交集,请使用intersects()

  • public boolean intersect (int left, int top, int right, int bottom) //如果由左,上,右,下,指定的矩形与此矩形相交,返回true并将该矩形设置为该交集;否则返回false且不改变该矩形
    注意:要测试交集,请使用intersects()

  • boolean setIntersect( Rect a, Rect b) //如果矩形a和b相交,返回true并将该矩形设置为该相交,否则返回false且不改变该矩形
    注意:不执行检查矩形是否为空的操作
    要测试交集,请使用intersects()

  • public void offset (int dx, int dy) // 通过在X轴和Y轴上设置偏移量去移动矩形
    也就是矩形的left和right坐标上加上dx,在top和bottom坐标上加上dy来偏移矩形

  • public void offsetTo (int newLeft, int newTop) //将矩形偏移到一个指定的位置(左上角),保持它的宽度和高度相同

  • public void union (int left, int top, int right, int bottom) //更新此矩形为指定的矩形
    注意: 如果指定的矩形为空,则不执行任何操作; 如果自身矩形为空,则将其设置为指定的矩形

  • void union (int x, int y) //更新这个矩形,以包含它自己和[x,y]坐标
    注意: 没有检查该矩形是否为非空

重置路径:

void reset()和 void rewind()

rewind()函数会清除 FillType 及所有的直线、曲线、点的数据等,但是会保留数据结构。 这样可以实现快速重用,提高一定的性能。例如,重复绘制一类线段,它们的点的数 量都相等,那么使用 rewind()函数可以保留装载点数据的数据结构,效率会更高。一定要注意的是,只有在重复绘制相同的路径时,这些数据结构才是可以复用的。

reset()函数类似于新建一个路径对象,它的所有数据空间都会被回收并重新分配,但不 会清除 FillType。