2013-01-21 10 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

डिबग मोड में अपना दायरा मूल्य की जाँच इस code.Hope की कोशिश करो। हो सकता है कि यह कम हो कि ड्रॉ के समय आप जो घट रहे हैं 10। – Raj

+0

@Raj मैंने इसे पहले ही चेक किया है, त्रिज्या अच्छा है। – dziwna

+0

फिर त्रिज्या मूल्य की जांच करें। यह 60 हो सकता है। हार्डकोड को पहली ड्रॉ में क्रूरियस का परीक्षण करने के लिए जहां लगभग 30 इस तरह की जांच करें और जांचें। c.drawCircle (चौड़ाई/2, ऊंचाई/2, 30, पेंट); – Raj

उत्तर

2

भी हो मदद करता है :)

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

संबंधित मुद्दे