2013-02-07 40 views
5

मैं तेज किनारों के साथ एक रेक्ट खींचने में सक्षम हूं, अब मुझे तेज किनारों को गोल करने की आवश्यकता है।गोलाकार कोनों के साथ स्क्वायर ड्रा

यह कैसे करें?

यह मेरा कोड है:

public void drawShape(Canvas canvas, Renderer renderer, float x, float y, 
     int seriesIndex, Paint paint) { 
    float halfShapeWidth = shape_width/2; 
    canvas.drawRect(x , y - halfShapeWidth, x + SHAPE_WIDTH, y + halfShapeWidth, paint); 
    } 

कैसे एक ही पैरामीटर प्रदान करने के द्वारा इस गोल रेक्ट बनाने के लिए?

उत्तर

6

आप का उपयोग drawRoundRect

से पहले आपको इस समारोह कॉल कर सकते हैं स्थिति और एक RectF में आयाम पैक करने के लिए की आवश्यकता होगी कर सकते हैं।

-5
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) { 
     Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); 
     Canvas canvas = new Canvas(output); 

     final int color = 0xff424242; 
     final Paint paint = new Paint(); 
     final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
     final RectF rectF = new RectF(rect); 
     final float roundPx = pixels; 

     paint.setAntiAlias(true); 
     canvas.drawARGB(0, 0, 0, 0); 
     paint.setColor(color); 
     canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 

     paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
     canvas.drawBitmap(bitmap, rect, rect, paint); 

     return output; 
    } 
26

ठीक है मैं इसे अपने आप को इस कोड का उपयोग करके हल:

RectF r = new RectF(1,2,3,4); 
canvas.drawRoundRect(r, 0, 0, mPaint); 

आशा है कि यह दूसरों की मदद करेगा।