2013-01-06 24 views

回答

33

获取位图:

Bitmap bitmap = getthebitmapyouwanttoshowinacirclefromsomewhere; 
Bitmap circleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); 

使用着色器:

BitmapShader shader = new BitmapShader (bitmap, TileMode.CLAMP, TileMode.CLAMP); 
Paint paint = new Paint(); 
     paint.setShader(shader); 

画在画布上;

Canvas c = new Canvas(circleBitmap); 
c.drawCircle(bitmap.getWidth()/2, bitmap.getHeight()/2, bitmap.getWidth()/2, paint); 

设置图像:

myImageView.setImageBitmap(circleBitmap); 
+1

几乎得到它......但我想半径固定说30dp(多数民众赞成简单),我也希望显示的图像(圆形)是从原始图片的中心... –

+0

你会想要改变这个方法的参数然后:'c.drawCircle(bitmap.getWidth()/ 2,bitmap.getHeight()/ 2,bitmap.getWidth()/ 2,paint)'; – nmw

+0

雅我得到的图像,但其在布局中改变其位置,有很多填充/边缘在左侧和顶部... –

0

创建一个位图,然后在其画布上绘制,然后将此位图添加到图像视图或按钮或任何你想要的。

创建位图:

Bitmap bmp = Bitmap.createBitmap(width, height, config); 

绘制位图画布上

Canvas c = new Canvas(bmp); 
c.drawCircle(cx, cy, radius, paint) 

设置imageview的

img.setBackgroundDrawable(new BitmapDrawable(bmp)); 
+2

缺什么吗?您创建一个空的位图并将其设置为背景。没有任何意义,因为它是。 – nmw