当我们需要将Bitmap图片设置任意角为圆角时可以使用drawRoundRect(reaf,x,y,reaf)函数来设置
任意圆角
/***
* Parameters
* rectf The rectangular bounds of the roundRect to be drawn
* rx The x-radius of the oval used to round the corners
* ry The y-radius of the oval used to round the corners
* x,y方向上的圆角半径,个人设置200比较好
* paint The paint used to draw the roundRect
*/
public Bitmap bimapRound(Bitmap mBitmap,float index){
Bitmap bitmap = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Bitmap.Config.ARGB_4444);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setAntiAlias(true);
//设置矩形大小
Rect rect = new Rect(0,0,mBitmap.getWidth(),mBitmap.getHeight());
RectF rectf = new RectF(rect);
// 相当于清屏
canvas.drawARGB(0, 0, 0, 0);
//画圆角
/***
* Parameters
* rectf The rectangular bounds of the roundRect to be drawn
* rx The x-radius of the oval used to round the corners
* ry The y-radius of the oval used to round the corners
* x,y方向上的圆角半径
* paint The paint used to draw the roundRect
*/
canvas.drawRoundRect(rectf, index, index, paint);
// 取两层绘制,显示上层
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
// 把原生的图片放到这个画布上,使之带有画布的效果
canvas.drawBitmap(mBitmap, rect, rect, paint);
return bitmap;
}
- 圆形图片
public static Bitmap toRoundBitmap(Bitmap bitmap) {//bitmap图片
int width = bitmap.getWidth();
int height = bitmap.getHeight();
float roundPx;
float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom;
if (width <= height) {
roundPx = width / 2;
top = 0;
bottom = width;
left = 0;
right = width;
height = width;
dst_left = 0;
dst_top = 0;
dst_right = width;
dst_bottom = width;
} else {
roundPx = height / 2;
float clip = (width - height) / 2;
left = clip;
right = width - clip;
top = 0;
bottom = height;
width = height;
dst_left = 0;
dst_top = 0;
dst_right = height;
dst_bottom = height;
}
Bitmap output = Bitmap.createBitmap(width,
height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect src = new Rect((int) left, (int) top, (int) right, (int) bottom);
final Rect dst = new Rect((int) dst_left, (int) dst_top, (int) dst_right, (int) dst_bottom);
final RectF rectF = new RectF(dst);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, src, dst, paint);
return output;
}
版权声明:本文为weixin_43605701原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。