2013-01-21 20 views
7

Tôi đang cố gắng để vẽ hai vòng tròn như thế này:Vẽ 2 vòng tròn trên vải

enter image description here

Đây là cách tôi đang cố gắng để làm điều đó:

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); 

Và đây là phương pháp drawCircles() của tôi:

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); 
} 

Tôi không biết tại sao nhưng tôi chỉ nhận được một vòng kết nối, cái nhỏ (cái được vẽ với paint2). Điều gì có thể là lý do?

+1

kiểm tra giá trị bán kính của bạn trong chế độ gỡ lỗi. có thể là ít hơn của nó mà 10 những gì bạn đang trừ tại thời điểm vẽ. – Raj

+0

@Raj Tôi đã kiểm tra nó rồi, bán kính là tốt. – dziwna

+0

sau đó kiểm tra giá trị bán kính. nó có thể là 60. để kiểm tra hardcode các radious trong drawCircle đầu tiên đến một số nơi khoảng 30 như thế này và kiểm tra. c.drawCircle (chiều rộng/2, chiều cao/2, 30, sơn); – Raj

Trả lời

2

Hãy thử code.Hope này nó có thể giúp :)

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

Cảm ơn bạn nó hoạt động như sự quyến rũ. :) – dziwna

+0

vui lòng giúp bạn :) – AndroidLearner