2014-01-08 100 views
1

我需要幫助切割一個半圓形的矩形drawable。如何在半圓形中切出矩形繪圖?

我試過使用Path.addArc(),但無法獲得所需的結果。我只能在一個矩形中剪切圖像。

Path path = new Path(); 
path.addArc(rectF, 0, 180); 
canvas.clipPath(path, Region.Op.DIFFERENCE); 
canvas.drawBitmap(orig, rect, rect, circlePaint); 

回答

0

您需要使用此方法從一個矩形位圖

public static Bitmap getCircularBitmap(Bitmap bitmap) { 
    Bitmap output; 

    if (bitmap.getWidth() > bitmap.getHeight()) { 
     output = Bitmap.createBitmap(bitmap.getHeight(), bitmap.getHeight(), Config.ARGB_8888); 
    } else { 
     output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getWidth(), 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()); 

    float r = 0; 

    if (bitmap.getWidth() > bitmap.getHeight()) { 
     r = bitmap.getHeight()/2; 
    } else { 
     r = bitmap.getWidth()/2; 
    } 
    RadialGradient gradient = new RadialGradient(bitmap.getWidth()/2, bitmap.getWidth()/2, bitmap.getWidth()/2, 
      new int[] {0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF}, 
      new float[] {0.0f, 0.4f, 0.8f}, 
      android.graphics.Shader.TileMode.CLAMP); 

    paint.setAntiAlias(true); 
    canvas.drawARGB(0, 0, 0, 0); 
    paint.setColor(color); 
    paint.setShader(gradient); 
    canvas.drawCircle(r, r, r, paint); 
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
    canvas.drawBitmap(bitmap, rect, rect, paint); 
    return output; 
} 

得到圓形,然後你可以切圓分成一半像這樣

Bitmap semicircle=Bitmap.createBitmap(circlebitmap, 0, 0, circlebitmap.getWidth()/2 , circlebitmap.getHeight()); 
+0

我需要半圈。 – sohil

+2

-1代碼只答案...沒有「你需要這個」是沒有解釋... – WarrenFaith

+0

編輯答案.. –