Android-BitmapShader的应用

2020-07-03 10:52:39 浏览数 (1)

BitmapShader赋予画笔以图片来着色,使用canvas画圆形就可以实现圆形头像
代码语言:javascript复制
    private void drawCircleBitmapShader(Canvas canvas){
        BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
        paint.setShader(bitmapShader);

        //获取半径
        int radius = Math.min(bitmap.getWidth(),bitmap.getHeight());
        RectF rect = new RectF(0,0,radius,radius);
        //画椭圆型
        canvas.drawOval(rect,paint);
    }

圆形头像.jpg

如果觉得大,可以使用Matrix对图片进行缩放
代码语言:javascript复制
    private void drawCircleMatrixBitmapShader(Canvas canvas,int radius){
        BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
        paint.setShader(bitmapShader);
        Matrix matrix = new Matrix();
        //获取缩放比较小的,以保持缩放比一致,防止拉伸图片
        float scale = Math.min((float) radius/bitmap.getWidth(),(float) radius/bitmap.getHeight());
        matrix.setScale(scale,scale);
        bitmapShader.setLocalMatrix(matrix);

        RectF rect = new RectF(0,0,radius,radius);
        //画椭圆型
        canvas.drawOval(rect,paint);
    }

缩放后的圆形头像.jpg

项目地址:https://gitee.com/aruba/ShaderApplication.git

0 人点赞