Paint---ColorFilter
2016-01-01 14:12
567 查看
API—android_ColorFilter用法,参考,示例_API之家,最大的中文API社区
PathEffect 颜色过滤的意思
我们一般使用的是他的三个子类:
ColorMatrixColorFilter:色彩矩阵颜色过滤器,通过色彩矩阵与原色彩的计算得出色彩
API—android_ColorMatrixColorFilter用法,参考,示例_API之家,最大的中文API社区
ColorMatrix colorMatrix=new ColorMatrix(float[] src)
src是一个(4 * 5),4行5列的颜色矩阵
计算方式如下:
举个例子:
LightingColorFilter:光照颜色过滤器
API—android_LightingColorFilter用法,参考,示例_API之家,最大的中文API社区
LightingColorFilter lightingColorFilter = new LightingColorFilter(int mul, int add)
Create a colorfilter that multiplies the RGB channels by one color, and then adds a second color, pinning the result for each component to [0..255]. The alpha components of the mul and add arguments are ignored.
mul,multiplies,意为过滤。相当于减法
add,加法
alpha components are ignored. 透明度被忽略
PorterDuffColorFilter:Porter-Duff颜色过滤器
API—android_PorterDuffColorFilter用法,参考,示例_API之家,最大的中文API社区
PorterDuffColorFilter porterDuffColorFilter = PorterDuffColorFilter(int srcColor, Mode mode)
src为指定的颜色,mode为PorterDuff.Mode18中模式中的一种
详细了解—-Paint—PorterDuffXfermode - qq_20198405的博客 - 博客频道 - CSDN.NET
效果图,其实就是原图,没做任何改变:
灰色
黑白照片
反相
换色
老照片
水墨
提高对比度
light就是光照,光的颜色红色照上去也就是红色了。
原图:
mul=0xFF00FFFF,进制的ARGB。相当于减去红色的光照。
mul=0xFF00FFFF和mul=0x0000FFFF效果一样。
效果图:
add=0XFFFFFF00,透明度忽略,相当于添加了 红绿相交的黄色。
效果图:
效果图:
PorterDuff.Mode.SCREEN
源码下载
引用:
详解Paint的setColorFilter(ColorFilter filter) - developer_Kale - 博客园
8.3.9 Paint API之—— ColorFilter(颜色过滤器)(1/3) | 菜鸟教程
自定义控件其实很简单1/6 - AigeStudio - 博客频道 - CSDN.NET
PathEffect 颜色过滤的意思
我们一般使用的是他的三个子类:
ColorMatrixColorFilter:色彩矩阵颜色过滤器,通过色彩矩阵与原色彩的计算得出色彩
API—android_ColorMatrixColorFilter用法,参考,示例_API之家,最大的中文API社区
ColorMatrix colorMatrix=new ColorMatrix(float[] src)
src是一个(4 * 5),4行5列的颜色矩阵
计算方式如下:
举个例子:
LightingColorFilter:光照颜色过滤器
API—android_LightingColorFilter用法,参考,示例_API之家,最大的中文API社区
LightingColorFilter lightingColorFilter = new LightingColorFilter(int mul, int add)
Create a colorfilter that multiplies the RGB channels by one color, and then adds a second color, pinning the result for each component to [0..255]. The alpha components of the mul and add arguments are ignored.
mul,multiplies,意为过滤。相当于减法
add,加法
alpha components are ignored. 透明度被忽略
PorterDuffColorFilter:Porter-Duff颜色过滤器
API—android_PorterDuffColorFilter用法,参考,示例_API之家,最大的中文API社区
PorterDuffColorFilter porterDuffColorFilter = PorterDuffColorFilter(int srcColor, Mode mode)
src为指定的颜色,mode为PorterDuff.Mode18中模式中的一种
详细了解—-Paint—PorterDuffXfermode - qq_20198405的博客 - 博客频道 - CSDN.NET
ColorMatrixColorFilter
其实就是通过矩阵来对画笔的颜色进行处理colorMatrix = new ColorMatrix(new float[]{ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, }); mPaint.setColorFilter(new ColorMatrixColorFilter(colorMatrix)); bitmap = BitmapFactory.decodeResource(context.getResources(),R.drawable.glsh); // 绘制位图 canvas.drawBitmap(bitmap, null, btmRectf, mPaint);
效果图,其实就是原图,没做任何改变:
灰色
colorMatrix = new ColorMatrix(new float[]{ 0.5F, 0, 0, 0, 0, 0, 0.5F, 0, 0, 0, 0, 0, 0.5F, 0, 0, 0, 0, 0, 1, 0, });
黑白照片
colorMatrix = new ColorMatrix(new float[]{ 0.33F, 0.59F, 0.11F, 0, 0, 0.33F, 0.59F, 0.11F, 0, 0, 0.33F, 0.59F, 0.11F, 0, 0, 0, 0, 0, 1, 0, });
反相
colorMatrix = new ColorMatrix(new float[]{ -1, 0, 0, 1, 1, 0, -1, 0, 1, 1, 0, 0, -1, 1, 1, 0, 0, 0, 1, 0, });
换色
colorMatrix = new ColorMatrix(new float[]{ 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, });
老照片
colorMatrix = new ColorMatrix(new float[]{ 0.393F, 0.769F, 0.189F, 0, 0, 0.349F, 0.686F, 0.168F, 0, 0, 0.272F, 0.534F, 0.131F, 0, 0, 0, 0, 0, 1, 0, });
水墨
colorMatrix = new ColorMatrix(new float[]{ 0.8F, 0.8F, 0.8F, 0, -1, 0.8F, 0.8F, 0.8F, 0, -1, 0.8F, 0.8F, 0.8F, 0, -1, 0, 0, 0, 1, 0, });
提高对比度
colorMatrix = new ColorMatrix(new float[]{ 1.438F, -0.122F, -0.016F, 0, -0.03F, -0.062F, 1.378F, -0.016F, 0, 0.05F, -0.062F, -0.122F, 1.483F, 0, -0.02F, 0, 0, 0, 1, 0, });
LightingColorFilter
其实就是设置画笔对颜色的处理方式。light就是光照,光的颜色红色照上去也就是红色了。
原图:
mul
mPaint.setColorFilter(new LightingColorFilter(0xFF00FFFF, 0X00000000));
mul=0xFF00FFFF,进制的ARGB。相当于减去红色的光照。
mul=0xFF00FFFF和mul=0x0000FFFF效果一样。
效果图:
add
原图:mPaint.setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0XFFFFFF00));
add=0XFFFFFF00,透明度忽略,相当于添加了 红绿相交的黄色。
效果图:
PorterDuffColorFilter
PorterDuff.Mode.MULTIPLYporterDuffColorFilter = new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY );
效果图:
PorterDuff.Mode.SCREEN
porterDuffColorFilter = new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.SCREEN );
源码下载
引用:
详解Paint的setColorFilter(ColorFilter filter) - developer_Kale - 博客园
8.3.9 Paint API之—— ColorFilter(颜色过滤器)(1/3) | 菜鸟教程
自定义控件其实很简单1/6 - AigeStudio - 博客频道 - CSDN.NET
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories