2013-02-07 23 views
5

Sono in grado di disegnare un retto con spigoli vivi, ora ho bisogno di rendere i bordi taglienti arrotondati.Disegno quadrato con angoli arrotondati

Come fare?

Questo è il mio codice:

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

come rendere questo rect arrotondata passando gli stessi parametri?

risposta

6

È possibile utilizzare drawRoundRect

Sarà necessario imballare la posizione e le dimensioni in un RectF prima di poter chiamare questa funzione.

-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

Ok ho risolto io stesso utilizzando questo codice:

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

auguro che possa aiutare gli altri.