自定義控件詳解(二):Path類 相關用法

轉自:http://www.cnblogs.com/xqxacm/p/6656554.html

Path:路徑

繪製路徑:void drawPath (Path path, Paint paint)

Path 可以繪製的路徑

一、直線路徑

  1、基本方法      

複製代碼
      void moveTo (float startX, float startY)
        直線的開始點;即將直線路徑的繪製點定在(startX,startY)的位置;
      void lineTo (float endX, float endY)
        直線的結束點,又是下一次繪製直線路徑的開始點;
      void close ()
        如果連續畫了幾條直線,但沒有形成閉環,調用Close()會將路徑首尾點連接起來,形成閉環;
複製代碼

    ①、不形成閉環 

       ------------>             

 

 

   ②、形成閉環 ,可以看到首尾兩個座標之間閉合了一條直線

    ------------>  

 

 二、矩形路徑

       1、基本方法 

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

    RectF rect = new RectF(float left, float top, float right, float bottom);

   可見兩個方法類似。  

     這裏有一個 Path.Direction dir 參數, 翻譯一下就是:路徑繪製的方向

   有兩個系統值:

          (1)、Path.Direction.CCW:是counter-clockwise縮寫,指創建逆時針方向的矩形路徑;
          (2)、Path.Direction.CW:是clockwise的縮寫,指創建順時針方向的矩形路徑;

   

  注意點:RectF 和 Rect 類 的區別

      1、都表示矩形

      2、精度不一樣,Rect是int ,RectF是float

      3、矩形路徑用到的是RectF類,注意不要使用Rect類 

        

 

                   ------------>       

 

三、圓形路徑

       1、基本方法   

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

   就一個方法,參數很顯然: x 圓心X軸座標 ,y 圓心Y軸座標 ,radius 圓的半徑 ,dir 繪製圓形路徑的方向

 

                      ------------>       

 

四、橢圓路徑

       1、基本方法

void addOval (RectF oval, Path.Direction dir)
RectF rect = new RectF(float left, float top, float right, float bottom);

  可以發現和繪製矩形路徑類似 用到了RectF類

  注意四個參數的意義 

  

 

                      ------------>      

 

五、弧形路徑

       1、基本方法

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

  兩個參數的意義:

          ①、float startAngle:開始的角度,X軸正方向爲0度
          ②、float sweepAngel:持續的度數;

    畫一個X軸正方形開始的(0°),持續270°的 弧形

  

                           ------------>       

 

 

六、圓角矩形路徑

       1、基本方法 

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

  這裏有兩個方法:

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

       可以看到多了一個float[] radii 參數,這個參數控制的是圓形矩形四個角的圓形程度,每一個角又由一個X軸半徑和一個Y軸半徑控制

       所以這個數組參數必須要有8個值 ,這個方法能控制生成的圓角矩形各個角的圓形程度都不一樣

       從左上角開始 順時針 每兩個值控制一個角

       下面例子看到看到 從左上角瞬時間開始角的程度分別爲 5px,10px,15px,20px

                 ------------>       

 

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

      這個方法更簡單,只要控制一次x,y軸半徑,讓四個角統一的設置一次就行

     如下圖,每一個角的程度都一致

                 ------------>   

 

 

------------------------------------------------------------------------------------------------------------------------------

 

以上是路徑的各種繪製方法,接下來講一下 路徑繪製基本都要用到的參數  

 

1、Path.Direction.CCW:是counter-clockwise縮寫,指創建逆時針方向的矩形路徑;

2、Path.Direction.CW:是clockwise的縮寫,指創建順時針方向的矩形路徑;

 

很簡單可以看出這個參數其實就是控制我們繪製一個圖形是 順時針繪製的還是逆時針繪製的

現在我們給繪製的時候加上文本,就可以輕鬆看出繪製的順序了

 

       ----------->        

發佈了141 篇原創文章 · 獲贊 30 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章