2013-01-21 11 views
7

próbuję narysować dwa okręgi tak:Rysunek 2 kółka na płótnie

enter image description here

To jak próbuję to zrobić:

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

I tu jest moja drawCircles() metoda:

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

nie wiem dlaczego, ale mam tylko jedno koło, mały (ten wyciągnięty z paint2). Jaki może być tego powód?

+1

sprawdzić wartość promienia w trybie debugowania. może być mniejszy niż 10 to, co odejmujesz w momencie losowania. – Raj

+0

@Raj Sprawdziłem to już, promień jest dobry. – dziwna

+0

, a następnie sprawdź wartość promienia. może to być 60. do testowania hardcode w pierwszym drawCircle do niektórych gdzie około 30 takich jak to i sprawdź. c.drawCircle (szerokość/2, wysokość/2, 30, farba); – Raj

Odpowiedz

2

Spróbuj code.Hope może to pomaga :)

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

Dziękuję, że działa jak urok. :) – dziwna

+0

Cieszę się, że mogę Ci pomóc :) – AndroidLearner