導航:首頁 > 操作系統 > android繪制圓弧

android繪制圓弧

發布時間:2022-08-22 10:07:04

A. android canvas怎麼畫圓弧

12345

要實現這個方法,我們要傳5個參數進去。
第一個參數:RectF oval
oval 參數的作用是:定義的圓弧的形狀和大小的范圍
/**
* 這是一個居中的圓
*/
float x = (getWidth() - getHeight() / 2) / 2;
float y = getHeight() / 4;

RectF oval = new RectF( x, y,
getWidth() - x, getHeight() - y); 1234567812345678

第二個參數:float startAngle
這個參數的作用是設置圓弧是從哪個角度來順時針繪畫的
canvas.drawArc(oval,-90,120,false,mPaint);11

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

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

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

第三個參數: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);//畫矩形2223

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

第五個參數:Paint paint
這個參數的作用是設置我們的畫筆對象的屬性
mPaint.setAntiAlias(true);//取消鋸齒
mPaint.setStyle(Paint.Style.FILL);//設置畫圓弧的畫筆的屬性為描邊(空心),個人喜歡叫它描邊,叫空心有點會引起歧義
mPaint.setStrokeWidth(mCircleWidth);
mPaint.setColor(Color.CYAN);12341234

這里還是要強調一下,當 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);
}

B. Android中繪制一條圓弧,但是圓弧兩頭要是一個半圓,請問這怎麼做

paint.setStrokeCap(Paint.Cap.ROUND);

C. android canvas.drawcircle 為什麼畫不出圓

繪制圓的話,drawcircle需要傳圓心坐標和半徑大小/畫筆進去,我猜你缺少對應的參數,可以參考如下代碼:
mPaint.setAntiAlias(false); //設置畫筆為無鋸齒
mPaint.setColor(Color.BLACK); //設置畫筆顏色
canvas.drawColor(Color.WHITE); //白色背景
mPaint.setStrokeWidth((float) 3.0); //線寬
mPaint.setStyle(Paint.Style.STROKE); //空心效果

canvas.drawCircle(50, 50, 10, mPaint); //繪制圓形
canvas.drawCircle(100, 100, 20, mPaint); //繪制圓形
canvas.drawCircle(150, 150, 30, mPaint); //繪制圓形
canvas.drawCircle(200, 200, 40, mPaint); //繪制圓形
canvas.drawCircle(250, 250, 50, mPaint); //繪制圓形
canvas.drawCircle(300, 300, 60, mPaint); //繪制圓形
canvas.drawCircle(350, 350, 70, mPaint); //繪制圓形

D. android用點畫圓弧

aint.setStrokeCap(Paint.Cap.ROUND);

E. 求教 Android自定義view畫圓弧的問題

簡單的思路是畫兩個圈 取出圓環,然後設置背景色 根據實際進度進行渲染
下面的鏈接是相關的視頻教程 希望可以幫到你
http://www.cniao5.com/course/10049

F. android 怎樣讓畫出的弧形有刻度

public class XChartCalc {

//Position位置
private float posX = 0.0f;
private float posY = 0.0f;

public XChartCalc()
{

}

//依圓心坐標,半徑,扇形角度,計算出扇形終射線與圓弧交叉點的xy坐標
public void CalcArcEndPointXY(float cirX, float cirY, float radius, float cirAngle){

//將角度轉換為弧度
float arcAngle = (float) (Math.PI * cirAngle / 180.0);
if (cirAngle < 90)
{
posX = cirX + (float)(Math.cos(arcAngle)) * radius;
posY = cirY + (float)(Math.sin(arcAngle)) * radius;
}
else if (cirAngle == 90)
{
posX = cirX;
posY = cirY + radius;
}
else if (cirAngle > 90 && cirAngle < 180)
{
arcAngle = (float) (Math.PI * (180 - cirAngle) / 180.0);
posX = cirX - (float)(Math.cos(arcAngle)) * radius;
posY = cirY + (float)(Math.sin(arcAngle)) * radius;
}
else if (cirAngle == 180)
{
posX = cirX - radius;
posY = cirY;
}
else if (cirAngle > 180 && cirAngle < 270)
{
arcAngle = (float) (Math.PI * (cirAngle - 180) / 180.0);
posX = cirX - (float)(Math.cos(arcAngle)) * radius;
posY = cirY - (float)(Math.sin(arcAngle)) * radius;
}
else if (cirAngle == 270)
{
posX = cirX;
posY = cirY - radius;
}
else
{
arcAngle = (float) (Math.PI * (360 - cirAngle) / 180.0);
posX = cirX + (float)(Math.cos(arcAngle)) * radius;
posY = cirY - (float)(Math.sin(arcAngle)) * radius;
}

}

//////////////
public float getPosX() {
return posX;
}

public float getPosY() {
return posY;
}

G. android如何在布局中吧.9畫成圓弧裝

Android畫布(Canvas)之--- 圓環,利用Path切除一個扇形,形成一段圓弧效果 [問題...然後再在剩餘的畫布上畫圓形,那麼自然截取的圖為我上圖中想要達到的...

H. android 怎麼畫一個圓弧的正方形

先來介紹一下畫幾何圖形要用到的,畫布(Canvas)、畫筆(Paint)。 1. 畫一個圓使用的是drawCircle:canvas.drawCircle(cx, cy, radius, paint);x、y代表坐標、radius是半徑、paint是畫筆,就是畫圖的顏色; 2. 在畫圖的時候還要有注意,你所畫的矩。可以看看安卓巴士的教程:http://www.apkbus.com/thread-465690-1-1.html

I. DrawArc()方法如何使用

安卓方法DrawArc()用於在畫布上繪制圓弧,主要方法是通過指定圓弧所在的橢圓對象、起始角度、終止角度來實現。

1. 基本語法:

public void drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)

參數說明

oval:圓弧所在的橢圓對象。

startAngle:圓弧的起始角度。

sweepAngle:圓弧的角度。

useCenter:是否顯示半徑連線,true表示顯示圓弧與圓心的半徑連線,false表示不顯示。

paint:繪制時所使用的畫筆。

注意:Rect類使用需要小心,詳見文末附註。

2. 示例

以下代碼示範了如何在畫布上繪制圓弧:

protectedvoidonDraw(Canvascanvas){ //TODOAuto-generatedmethodstub super.onDraw(canvas); paint.setAntiAlias(true);//設置畫筆為無鋸齒 paint.setColor(Color.BLACK);//設置畫筆顏色 canvas.drawColor(Color.WHITE);//白色背景 paint.setStrokeWidth((float)3.0);//線寬 paint.setStyle(Style.STROKE); RectFoval=newRectF();//RectF對象 oval.left=100;//左邊 oval.top=100;//上邊 oval.right=400;//右邊 oval.bottom=300;//下邊 canvas.drawArc(oval,225,90,false,paint);//繪制圓弧 //RectFoval=newRectF();//RectF對象 oval.left=100;//左邊 oval.top=400;//上邊 oval.right=400;//右邊 oval.bottom=700;//下邊 canvas.drawArc(oval,200,135,true,paint);//繪制圓弧 }

代碼中,首先設置了Paint畫筆的顏色,並設置Canvas畫布為白色背景。接著設置畫筆的線寬以及空心效果。然後,定義一個RectF對象,並設置了坐標,調用drawArc方法繪制第一個圓弧,此處設置為不顯示半徑連線。最後,重新設置了RectF對象坐標,調用drawArc方法繪制第二個圓弧,此例顯示半徑連線。運行代碼,可在手機屏幕上看到下圖圖所示顯示效果。

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

附註:

Android中的Rect類——奇葩的思維

最近在工作中遇到了一些問題,總結下來就是Android中Rect這個類造成的。不得不說,不知道Android SDK的開發人員是怎麼想的, 這個類設計的太奇葩了。首先介紹一下Rect類:Rect類主要用於表示坐標系中的一塊矩形區域,並可以對其做一些簡單操作。這塊矩形區域,需要用左上右下兩個坐標點表示(left,top,right,bottom),你也可以獲取一個Rect實例的Width和Height。就在這里,奇葩的事情來了,作為一個有一點經驗的做圖像或者矩陣運算或者編程程序員來說,大家的共識是,如果一個矩陣是MxN的,也就是M行N列,那麼行號是[0,M-1],列號是[0,N-1]。可是奇葩的Rect類並不是這樣的!如果你這么聲明一個Rect類:

Rect rect=newRect(100,50,300,500);

那麼右下角(300,500)其實是不在這個矩形裡面的,但是左上角(100,50)在,也就是說,這個矩形實際表示的區域是:(100,50,299,499)。另外,Rect計算出的Height和Width倒是對的。所以,在此告誡各位程序員,在涉及Rect運算的時候,盡量不要使用它的右下角左邊,即right和bottom。因為他們是錯的。當然,在你調用android自己的函數時,是可以使用的,因為Android裡面一直保持這么奇葩的思維。

J. android 怎麼畫一個半圓

shape可以設置某一個角圓角,但實現你這個估計不行,你可以叫美工繪制一個,帶java代碼裡面進行控制替換

閱讀全文

與android繪制圓弧相關的資料

熱點內容
聊城私人影院哪家比較好 瀏覽:796
gpd運行python 瀏覽:474
一品俠手機小說500篇 瀏覽:339
怎麼刪掉通達信編譯不成功指標 瀏覽:611
殘暴總裁狠虐妻的小說 瀏覽:911
java繼承父方法 瀏覽:820
速達雲伺服器的配置 瀏覽:598
pdfa5 瀏覽:937
多大的程序員吃香 瀏覽:897
編程字體調節 瀏覽:931
水準儀移動點位演算法視頻 瀏覽:69
單片機模擬怎麼顯示3s的方波 瀏覽:931
小型企業文本檢索php源碼 瀏覽:233
聯想伺服器主板損壞怎麼恢復數據 瀏覽:508
定製伺服器怎麼做 瀏覽:651
2021榮放怎麼下載app 瀏覽:207
命令關閉hyperv 瀏覽:148
重啟sftp服務的命令 瀏覽:39
愛情自有天意電影版 瀏覽:34
dns伺服器地址在哪裡獲取 瀏覽:552