2013-01-21 112 views
7

我想畫兩個圈是這樣的:在畫布上繪製2圈

enter image description here

這是我正在努力做到這一點:

Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444); 

Canvas c = new Canvas(bmp); 

RectF rect = new RectF(0,0,width,width); 
Paint paint = new Paint(); 
drawCircles(paint, c, width, height, width); 
ImageView img = (ImageView) findViewById(R.id.imageView1); 
img.setImageBitmap(bmp); 
img.setScaleType(ScaleType.FIT_CENTER); 

這裏是我drawCircles()方法:

private void drawCircles(Paint paint, Canvas c, int width, int height, int radius) { 
     paint.setARGB(255, 255 , 10, 21); 
     paint.setStrokeWidth(10); 
     paint.setAntiAlias(true); 
     paint.setStrokeCap(Paint.Cap.BUTT); 
     paint.setStyle(Paint.Style.STROKE); 
     if(width < height && radius == 0){ 
      radius = width/2; 
      height = width; 
     } else if (radius == 0){ 
      radius = height/2; 
      width = height; 
     } 
     Paint paint2 = new Paint(); 
     paint2.setARGB(255, 255 , 10, 21); 
     paint2.setStrokeWidth(10); 
     paint2.setAntiAlias(true); 
     paint2.setStrokeCap(Paint.Cap.BUTT); 
     paint2.setStyle(Paint.Style.STROKE); 
     c.drawCircle(width/2, height/2, radius-10, paint); 
     c.drawCircle(width/2, height/2, 50, paint2); 
} 

我不知道爲什麼,但我只得到一個圈,小一個(用paint2繪製的那個)。 可能是什麼原因?

+1

在調試模式下檢查您的半徑值。可能是它的抽取時間減去了10倍。 – Raj

+0

@Raj我已經查過了,半徑很好。 – dziwna

+0

然後檢查半徑值。它可能是60,測試硬編碼在第一drawCircle radious到某些地方約30像這樣並檢查。 c.drawCircle(width/2,height/2,30,paint); – Raj

回答

2

試試這個code.Hope它可以幫助:)

public class SimpleCircleActivity extends Activity 
{ 

     private CircleDemoView circledemoView ; 

     public void onCreate(Bundle savedInstanceState) 
     { 
     super.onCreate(savedInstanceState); 

     circledemoView =new CircleDemoView(this); 
     setContentView(circledemoView); 

     } 


     private class CircleDemoView extends View 
     { 
     public CircleDemoView(Context context) 
     { 
      super(context); 
     } 

     @Override 
     protected void onDraw(Canvas canvas) 
     { 

      super.onDraw(canvas); 
      Paint p = new Paint(); 
      p.setColor(Color.RED); 
      DashPathEffect dashPath = new DashPathEffect(new float[]{5,5}, (float)1.0); 

      p.setPathEffect(dashPath); 
      p.setStyle(Style.STROKE); 


      for (int i = 0; i < 2; i ++) { 
       canvas.drawCircle(200, 200, 50+(i*40), p); 
      } 


      invalidate(); 

    } 
    } 

} 
+0

謝謝你的作品像魅力。 :) – dziwna

+0

很高興幫助你:) – AndroidLearner