Android-BitmapShader的应用

2020-01-06  本文已影响0人  aruba

BitmapShader赋予画笔以图片来着色,使用canvas画圆形就可以实现圆形头像

    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对图片进行缩放

    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

上一篇 下一篇

猜你喜欢

热点阅读