Android中View的繪製一

1、Path.setFillType()用法

這個方法用來判斷圖形的某個點是屬於外部還是內部

Path添加的圖形是帶有方向的 ,比如下面path添加一個圓形;

Path.addCircle(getWidth() / 2, getHeight() / 2 + 150, 150, Path.Direction.CCW);

第四個參數代表的是圖形的方向,有兩個Path.Direction.CW(順時針)Path.Direction.CCW(逆時針)

上面的方法setFillType()就是根據圖形的方向來判斷圖像某一個點是屬於外部還是內部的

這個方法setFillType()中可以傳遞四種類型的數值

1,Path.FillType.WINDING

一條射線向外發射,與圖像會有交點,考慮方向,相反方向相減,相同方向相加,最後結果大於0就是內部,否則就是外部; 下面我使用path.添加了兩個逆時針放向的圓形,它們有重疊部分,使用path.setFillType(Path.FillType.WINDING);之後判斷圖形中的每個點是在外部還是內部
在這裏插入圖片描述在這裏插入圖片描述

2,Path.FillType.EVEN_ODD
一條射線向外發射,與圖像會有交點, 不考慮方向,單數是內部,偶數是外部;適用於做鏤空效果
在這裏插入圖片描述
3,Path.FillType.INVERSE_WINDING(含義和Path.FillType.WINDING相反)

4,Path.FillType.INVERSE_EVEN_ODD(含義和Path.FillType.EVEN_ODD相反)

2,Canvas.drawArc
userCenter:true 畫出的結果是扇形;false畫出的結果是弧形;
在這裏插入圖片描述在這裏插入圖片描述
3,Math.toRadians()是把數值轉換成角度

(Math.cos(Math.toRadians(mark(5.0f))))

4,PathMeasure用於畫出測量的路徑的長度

        path.addRect(new RectF(getWidth() / 2 - 150, getHeight() / 2 - 150, getWidth() / 2 + 150, getHeight() / 2 + 150), Path.Direction.CW);

        path.addCircle(getWidth() / 2, getHeight() / 2 + 150, 150, Path.Direction.CW);

        pathMeasure.setPath(path, false);

        float length = pathMeasure.getLength();//第一段路徑
        Log.e("1234", "------------length: " + length);
        //獲取下一個路徑,有可能沒有多個路徑了,返回false
        boolean nextContour = pathMeasure.nextContour();
        Log.e("1234", "------------nextContour: " + nextContour);
        float length2 = pathMeasure.getLength();
        Log.e("1234", "------------length: " + length2);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章