zoukankan      html  css  js  c++  java
  • 图片形状圆角

    一定要先转换成PNG格式的否则会不透明


    1
    /** 2 * 方形转换图片成圆形 3 * 4 * @param bitmap 5 * 传入Bitmap对象 6 * @return 7 */ 8 public Bitmap toRoundBitmap(Bitmap bitmap) { 9 int width = bitmap.getWidth(); 10 int height = bitmap.getHeight(); 11 float roundPx; 12 float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom; 13 if (width <= height) { 14 roundPx = width / 2; 15 left = 0; 16 top = 0; 17 right = width; 18 bottom = width; 19 height = width; 20 dst_left = 0; 21 dst_top = 0; 22 dst_right = width; 23 dst_bottom = width; 24 } else { 25 roundPx = height / 2; 26 float clip = (width - height) / 2; 27 left = clip; 28 right = width - clip; 29 top = 0; 30 bottom = height; 31 width = height; 32 dst_left = 0; 33 dst_top = 0; 34 dst_right = height; 35 dst_bottom = height; 36 } 37 38 Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888); 39 Canvas canvas = new Canvas(output); 40 41 final int color = 0xff424242; 42 final Paint paint = new Paint(); 43 final Rect src = new Rect((int) left, (int) top, (int) right, 44 (int) bottom); 45 final Rect dst = new Rect((int) dst_left, (int) dst_top, 46 (int) dst_right, (int) dst_bottom); 47 final RectF rectF = new RectF(dst); 48 49 paint.setAntiAlias(true);// 设置画笔无锯齿 50 51 canvas.drawARGB(0, 0, 0, 0); // 填充整个Canvas 52 paint.setColor(color); 53 54 // 以下有两种方法画圆,drawRounRect和drawCircle 55 // canvas.drawRoundRect(rectF, roundPx, roundPx, paint);// 56 // 画圆角矩形,第一个参数为图形显示区域,第二个参数和第三个参数分别是水平圆角半径和垂直圆角半径。 57 canvas.drawCircle(roundPx, roundPx, roundPx, paint); 58 59 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置两张图片相交时的模式,参考http://trylovecatch.iteye.com/blog/1189452 60 canvas.drawBitmap(bitmap, src, dst, paint); // 以Mode.SRC_IN模式合并bitmap和已经draw了的Circle 61 62 return output; 63 }
     1 // 矩形将图片的四角圆化
     2     public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
     3         Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
     4                 bitmap.getHeight(), Config.ARGB_8888);
     5         // 得到画布
     6         Canvas canvas = new Canvas(output);
     7         // 将画布的四角圆化
     8         final int color = Color.RED;
     9         final Paint paint = new Paint();
    10         // 得到与图像相同大小的区域 由构造的四个值决定区域的位置以及大小
    11         final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
    12         final RectF rectF = new RectF(rect);
    13         // 值越大角度越明显
    14         final float roundPx = 30;
    15         paint.setAntiAlias(true);
    16         canvas.drawARGB(0, 0, 0, 0);
    17         paint.setColor(color);
    18         // drawRoundRect的第2,3个参数一样则画的是正圆的一角,如果数值不同则是椭圆的一角
    19         canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
    20         paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
    21         canvas.drawBitmap(bitmap, rect, rect, paint);
    22         return output;
    23     }
  • 相关阅读:
    webshell
    FireFox与IE开发上的一些区别
    面向对象的Jscript(顶)
    CSS背景属性
    [转]javascript中style.left和offsetLeft的使用
    BLOG排版小窍门
    面向对象的JavaScript编程
    Js脚本:动态添加HTML自定义属性以及处理html元素的自定义属性(兼容Firefox和IE)
    lookupedit 设置选项值
    comboboxEdit 不能输入,只能选择
  • 原文地址:https://www.cnblogs.com/stayreal/p/4018586.html
Copyright © 2011-2022 走看看