国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

利用Android畫圓弧canvas.drawArc()實例詳解

2019-10-22 18:22:18
字體:
來源:轉載
供稿:網友

前言

在學習android/256538.html">android中圖形圖像處理技術這部分內容時,對繪制圓弧函數canvas.drawArc()的用法、參數含義及畫圖原理很是不理解,在網上搜索了一些,加上自己的理解,在此做個小總結,下面來一起看看吧。

示例代碼

public void drawArc(@NonNull RectF oval, float startAngle, float sweepAngle, boolean useCenter,  @NonNull Paint paint) { drawArc(oval.left, oval.top, oval.right, oval.bottom, startAngle, sweepAngle, useCenter,  paint); }

要實現這個方法,我們要傳5個參數進去。

第一個參數:RectF oval

oval 參數的作用是:定義的圓弧的形狀和大小的范圍

 /**  * 這是一個居中的圓  */ float x = (getWidth() - getHeight() / 2) / 2; float y = getHeight() / 4; RectF oval = new RectF( x, y,  getWidth() - x, getHeight() - y); 

android,canvas畫圓弧,canvas,圓弧,canvas畫圓第二個參數:float startAngle

這個參數的作用是設置圓弧是從哪個角度來順時針繪畫的

canvas.drawArc(oval,-90,120,false,mPaint);

android,canvas畫圓弧,canvas,圓弧,canvas畫圓

canvas.drawArc(oval,90,110,false,mPaint);

android,canvas畫圓弧,canvas,圓弧,canvas畫圓

//設置為-180的時候也是這樣canvas.drawArc(oval,180,140,false,mPaint);

android,canvas畫圓弧,canvas,圓弧,canvas畫圓

//設置為360的時候也是這樣canvas.drawArc(oval,0,140,false,mPaint);

android,canvas畫圓弧,canvas,圓弧,canvas畫圓

第三個參數:float sweepAngle

這個參數的作用是設置圓弧掃過的角度

    我們從上面的代碼就可以知道其中的作用了

第四個參數:boolean useCenter

這個參數的作用是設置我們的圓弧在繪畫的時候,是否經過圓形 

值得注意的是,這個參數在我們的 mPaint.setStyle(Paint.Style.STROKE); 設置為描邊屬性的時候,是看不出效果的。

  /**  *這里我是偷懶了,建議不要在onDraw()方法里初始化對象  */  Paint p = new Paint();//這個是畫矩形的畫筆,方便大家理解這個圓弧  p.setStyle(Paint.Style.STROKE);  p.setColor(Color.RED);  mPaint.setAntiAlias(true);//取消鋸齒  mPaint.setStyle(Paint.Style.FILL);//設置畫圓弧的畫筆的屬性為描邊(空心),個人喜歡叫它描邊,叫空心有點會引起歧義  mPaint.setStrokeWidth(mCircleWidth);  mPaint.setColor(Color.CYAN);  /**   * 這是一個居中的圓   */  float x = (getWidth() - getHeight() / 2) / 2;  float y = getHeight() / 4;  RectF oval = new RectF( x, y,    getWidth() - x, getHeight() - y);  canvas.drawArc(oval,360,140,false,mPaint);//畫圓弧,這個時候,繪制沒有經過圓心  canvas.drawRect(oval, p);//畫矩形

android,canvas畫圓弧,canvas,圓弧,canvas畫圓

//當我們設置為true的時候,繪制的時候就經過圓心了canvas.drawArc(oval,360,140,true,mPaint);

android,canvas畫圓弧,canvas,圓弧,canvas畫圓

第五個參數:Paint paint

這個參數的作用是設置我們的畫筆對象的屬性

//當我們設置為true的時候,繪制的時候就經過圓心了canvas.drawArc(oval,360,140,true,mPaint);

這里還是要強調一下,當 p.setStyle(Paint.Style.STROKE)的時候,我們的第四個參數boolean useCenter ,是看不到效果的。

下面是代碼全文

public class CustomProgress extends View{ private Paint mPaint; /**  * 圓的寬度  */ private int mCircleWidth = 3; public CustomProgress(Context context) {  this(context, null); } public CustomProgress(Context context, AttributeSet attrs) {  this(context, attrs, 0); } public CustomProgress(Context context, AttributeSet attrs, int defStyleAttr) {  super(context, attrs, defStyleAttr);  mPaint = new Paint(); } @Override protected void onDraw(Canvas canvas) {  mPaint.setAntiAlias(true);//取消鋸齒  mPaint.setStyle(Paint.Style.FILL);  mPaint.setStrokeWidth(mCircleWidth);  mPaint.setColor(Color.CYAN);  /**   * 這是一個居中的圓   */  float x = (getWidth() - getHeight() / 2) / 2;  float y = getHeight() / 4;  RectF oval = new RectF( x, y,    getWidth() - x, getHeight() - y);   canvas.drawArc(oval,360,140,true,mPaint); }}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。  


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南和县| 弥勒县| 烟台市| 手游| 那坡县| 盖州市| 特克斯县| 百色市| 泾阳县| 垣曲县| 射阳县| 广州市| 夏河县| 固阳县| 平果县| 茂名市| 合水县| 贵阳市| 慈利县| 华蓥市| 广饶县| 张家口市| 九龙城区| 芜湖市| 马山县| 太白县| 石景山区| 桂林市| 九寨沟县| 嘉峪关市| 盈江县| 天峨县| 呼伦贝尔市| 南川市| 扬州市| 雷州市| 临沧市| 大洼县| 通化县| 双流县| 沐川县|