2013-02-07 92 views
5

Tôi có thể vẽ một đường viền với các cạnh sắc nét, bây giờ tôi cần phải làm cho các cạnh sắc nét được làm tròn.Vẽ hình vuông với các góc tròn

Làm cách nào để thực hiện điều đó?

Đây là mã của tôi:

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

Làm thế nào để làm cho rect tròn này bằng cách thông qua các thông số giống nhau không?

Trả lời

6

Bạn có thể sử dụng drawRoundRect

Bạn sẽ cần phải đóng gói vị trí và kích thước trong một RectF trước khi bạn có thể gọi chức năng này.

-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 tôi giải quyết nó bản thân mình bằng cách sử dụng mã này:

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

Hy vọng nó sẽ giúp đỡ người khác.

Các vấn đề liên quan