2013-01-21 12 views
7

che sto cercando di disegnare due cerchi in questo modo:Disegno 2 cerchi su una tela

enter image description here

Questo è il modo che sto cercando di farlo:

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

Ed ecco il mio metodo 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); 
} 

io non so perché, ma ho solo un cerchio, il piccolo (quello disegnato con paint2). Quale può essere la ragione?

+1

controllare il vostro valore del raggio in modalità debug. potrebbe essere inferiore a 10 ciò che stai sottraendo al momento del sorteggio. – Raj

+0

@Raj L'ho già controllato, il raggio è buono. – dziwna

+0

quindi controllare il valore del raggio. potrebbe essere 60. per testare hardcode il radiante in first drawCircle ad alcuni dove circa 30 come questo e controllare. c.drawCircle (larghezza/2, altezza/2, 30, pittura); – Raj

risposta

2

Prova questa code.Hope essa può aiuta :)

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

Grazie, funziona come un fascino. :) – dziwna

+0

felice di aiutarti :) – AndroidLearner