Android带圆角的图片(2)

圆角图片绘制
之前有一篇文章一篇文章绘制圆角图片,用的是Xfermode的PorterDuff.Mode.SRC_IN来实现的,最近发现还有一种新的方式用来绘制:BitmapShader

什么是BitmapShader

    BitmapShader是Shader的子类,可以通过Paint.setShader(Shader shader)进行设置、
    这里我们只关注BitmapShader,构造方法:
    mBitmapShader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP);
    参数1:bitmap
    参数2,参数3:TileMode;

TileMode的取值有三种:
CLAMP 拉伸
REPEAT 重复
MIRROR 镜像

如果大家给电脑屏幕设置屏保的时候,如果图片太小,可以选择重复、拉伸、镜像;
重复:就是横向、纵向不断重复这个bitmap
镜像:横向不断翻转重复,纵向不断翻转重复;
拉伸:这个和电脑屏保的模式应该有些不同,这个拉伸的是图片最后的那一个像素;横向的最后一个横行像素,不断的重复,纵项的那一列像素,不断的重复;
现在大概明白了,BitmapShader通过设置给mPaint,然后用这个mPaint绘图时,就会根据你设置的TileMode,对绘制区域进行着色。
这里需要注意一点:就是BitmapShader是从你的画布的左上角开始绘制的,不在view的右下角绘制个正方形,它不会在你正方形的左上角开始。

    总结:BitmapShader其实就是一个着色器,通过设置paint.setShader(BitmapShader),给画笔上色,
    只不过,这个上色的是你所画的图片,最后在根据你需要形成的图片大小和原来的图片大小对比,算出缩放比例,
    再根据比例画一个你所需的集合图形,用上刚刚画好的paint就行了
    canvas.drawCircle(mRadius, mRadius, mRadius, mBitmapPaint);  

你可能感兴趣的:(Android带圆角的图片(2))