Paint之ColorMatrix

绘图的色彩矩阵

这里 我只是大概写一下,大姐想具体看的,可以去看这位大神的博客

生成色彩矩阵
        ColorMatrix colorMatrix = new ColorMatrix(new float[]{
            1, 0, 0, 0, 0,
            0, 1, 0, 0, 0,
            0, 0, 1, 0, 0,
            0, 0, 0, 0.5, 0,
        });
mPaint.setARGB(255,200,100,100);
ColorMatrix colorMatrix = new ColorMatrix(new float[]{
                0, 0, 0, 0, 0,
                0, 0, 0, 0, 0,
                0, 0, 1, 0, 0,
                0, 0, 0, 1, 0,
        });
 mPaint.setColorFilter(new ColorMatrixColorFilter(colorMatrix));       
  • 如果这样设置之后我们的画笔就会只取刚才设置的那个颜色的完整蓝色和透明度部分,计算方法根据矩阵相乘的方法
  • 效果是,如果不设置色彩矩阵,就会是粉色,如果设置了之后,就会完全变成蓝色,也就是将色彩中的蓝色单独拿出来
  • 跟着人家博客看了一下,如果你用来画图片的话,也会只取到图片的蓝色元素 有以下安卓为我们提供的色彩设置方法
    //整体增强颜色饱和度,即同时增强R,G,B的色彩饱和度  
    public void setSaturation(float sat)  
    //设置每个颜色的缩放程度
	public void setScale(float rScale, float gScale, float bScale,float aScale) 

	/** 
		设置色彩旋转
	 * 将旋转围绕某一个颜色轴旋转 
	 * axis=0 围绕红色轴旋转 
	 * axis=1 围绕绿色轴旋转 
	 * axis=2 围绕蓝色轴旋转 
	 */  
	public void setRotate(int axis, float degrees)
	
	public LightingColorFilter(int mul, int add)  
	结果R = (r*mul.R+add.R)%255;  
    结果G = (g*mul.G+add.G)%255;  
    结果B = (b*mul.B+add.B)%255;  
    //我们可以用上述方法来直接将某个色彩的某种颜色给直接设置为 0 即去掉某种色彩或者只取某种色彩
    前面的颜色缩放表示设置为0表示直接去掉某种色彩,设置为255表示某种色彩不做变化
    后面的颜色加值表示在某种色彩的程度加上某个值
    
    mPaint.setColorFilter(new LightingColorFilter(0x00ff00,0x000000)); 
	就是只拿到Green分量
    public PorterDuffColorFilter(int srcColor, PorterDuff.Mode mode)  
    /**
        int srcColor0xAARRGGBB类型的颜色值。
        PorterDuff.Mode mode:表示混合模式,枚举值有18个,表示各种图形混合模式,有:
        Mode.ADD(饱和度相加)Mode.DARKEN(变暗),Mode.LIGHTEN(变亮),Mode.MULTIPLY(正片叠底),Mode.OVERLAY(叠加),Mode.SCREEN(滤色) 
    */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值