導航:首頁 > 操作系統 > android畫空心圓

android畫空心圓

發布時間:2024-04-18 09:15:23

㈠ 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裡面一直保持這么奇葩的思維。

㈡ 怎麼用Android畫一個正方形

先來介紹一下畫幾何圖形要用到的,畫布(Canvas)、畫筆(Paint)。
1. 畫一個圓使用的是drawCircle:canvas.drawCircle(cx, cy, radius, paint);x、y代表坐標、radius是半徑、paint是畫筆,就是畫圖的顏色;
2. 在畫圖的時候還要有注意,你所畫的矩形是實心(paint.setStyle(Paint.Style.FILL))還是空心(paint.setStyle(Paint.Style.STROKE);
畫圖的時候還有一點,那就是消除鋸齒:paint.setAntiAlias(true);
3. 還有就是設置一種漸變顏色的矩形:
Shader mShader = new LinearGradient(0,0,100,100, new int[]{Color.RED,Color.GREEn,Color.BLUE,Color.YELLO},null,Shader.TileMode.REPEAT);
ShapeDrawable sd;
//畫一個實心正方形
sd = new ShapeDrawable(new RectShape());
sd.setBounds(20,20,100,100);
sd.draw(canvas);
//一個漸變色的正方形就完成了

4. 正方形:drawRect:canvas.drawRect(left, top, right, bottom, paint)
這里的left、top、right、bottom的值是:
left:是矩形距離左邊的X軸
top:是矩形距離上邊的Y軸
right:是矩形距離右邊的X軸
bottom:是矩形距離下邊的Y軸
5. 長方形:他和正方形是一個原理,這個就不用說了
6. 橢圓形:記住,這里的Rectf是float類型的
RectF re = new Rect(left, top, right, bottom);
canvas.drawOval(re,paint);

好了,說了這么多的的東西,那就讓我們來看一下真正的實例吧!!!
package com.hades.game;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.View;
public class CanvasActivity extends Activity {
/**
* 畫一個幾何圖形
* hades
* 藍色著衣
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyView myView = new MyView(this);
setContentView(myView);
}
public class MyView extends View {
public MyView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 設置畫布的背景顏色
canvas.drawColor(Color.WHITE);
/**
* 定義矩形為空心
*/
// 定義畫筆1
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
// 消除鋸齒
paint.setAntiAlias(true);
// 設置畫筆的顏色
paint.setColor(Color.RED);
// 設置paint的外框寬度
paint.setStrokeWidth(2);
// 畫一個圓
canvas.drawCircle(40, 30, 20, paint);
// 畫一個正放形
canvas.drawRect(20, 70, 70, 120, paint);
// 畫一個長方形
canvas.drawRect(20, 170, 90, 130, paint);
// 畫一個橢圓
RectF re = new RectF(20, 230, 100, 190);
canvas.drawOval(re, paint);
/**
* 定義矩形為實心
*/
paint.setStyle(Paint.Style.FILL);
// 定義畫筆2
Paint paint2 = new Paint();
// 消除鋸齒
paint2.setAntiAlias(true);
// 設置畫筆的顏色
paint2.setColor(Color.BLUE);
// 畫一個空心圓
canvas.drawCircle(150, 30, 20, paint2);
// 畫一個正方形
canvas.drawRect(185, 70, 130, 120, paint2);
// 畫一個長方形
canvas.drawRect(200, 130, 130, 180, paint2);
// 畫一個橢圓形
RectF re2 = new RectF(200, 230, 130, 190);
canvas.drawOval(re2, paint2);
}
}
}

㈢ 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); //繪制圓形

㈣ android 怎麼畫2層圓環

Android繪制兩層圓環,可以使用自定義View,繼承View,重寫裡面的Ondraw方法,花兩個同心圓,示例如下:

java">packagecom.cn.myvn;

importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.graphics.Paint;
importandroid.util.AttributeSet;
importandroid.view.View;

{

privatefinalPaintpaint;
privatefinalContextcontext;

publicRingView(Contextcontext){

//TODOAuto-generatedconstructorstub
this(context,null);
}

publicRingView(Contextcontext,AttributeSetattrs){
super(context,attrs);
//TODOAuto-generatedconstructorstub
this.context=context;
this.paint=newPaint();
this.paint.setAntiAlias(true);//消除鋸齒
this.paint.setStyle(Paint.Style.STROKE);//繪制空心圓
}

@Override
protectedvoidonDraw(Canvascanvas){
//TODOAuto-generatedmethodstub
intcenter=getWidth()/2;
intinnerCircle=dip2px(context,83);//設置內圓半徑
intringWidth=dip2px(context,5);//設置圓環寬度

//繪制內圓
this.paint.setARGB(155,167,190,206);
this.paint.setStrokeWidth(2);
canvas.drawCircle(center,center,innerCircle,this.paint);

//繪制圓環
this.paint.setARGB(255,212,225,233);
this.paint.setStrokeWidth(ringWidth);
canvas.drawCircle(center,center,innerCircle+1+ringWidth/2,this.paint);

//繪制外圓
this.paint.setARGB(155,167,190,206);
this.paint.setStrokeWidth(2);
canvas.drawCircle(center,center,innerCircle+ringWidth,this.paint);

super.onDraw(canvas);
}
}
閱讀全文

與android畫空心圓相關的資料

熱點內容
搜索引擎指標源碼 瀏覽:61
片場app怎麼樣 瀏覽:913
ctcpip編程 瀏覽:520
java統計字元串次數 瀏覽:254
中興交換機zxr10vlan配置命令 瀏覽:829
java面試spring 瀏覽:145
得物程序員加班厲害嗎 瀏覽:958
h1z1東京伺服器地址 瀏覽:397
海賊王一番賞文件夾什麼樣 瀏覽:847
24bit高頻精品解壓音樂 瀏覽:181
api程序員遇到更新 瀏覽:298
程序員程序運行搞笑圖 瀏覽:772
秦思怎麼下載app 瀏覽:691
發抖音怎麼發自己的APP網站 瀏覽:362
androidinbitmap 瀏覽:774
lzma源碼使用 瀏覽:748
ibm伺服器湖南經銷商雲伺服器 瀏覽:991
正規模板建站配雲伺服器商家 瀏覽:876
安卓清楚緩存命令 瀏覽:380
汽車壓縮機電磁離合器損壞怎麼修 瀏覽:508