关于DrawFilter在网上讨论的很少,所以我找不到适合下面这个问题的答案:
已经documanted 这里是:
DrawFilter子类可以安装在Canvas中.当它存在时,它可以修改用于绘制(暂时)的绘画.有了这个,过滤器可以禁用/启用抗锯齿,或更改绘制的所有内容的颜色.
所以我确实想要使用这个功能,以便将画布中绘制的颜色更改为黑色,但是如何完成?因为这个类没有方法可以覆盖它的一个方法,我应该如何将它子类化以实现所记录的内容...
顺便说一句,对于从未见过它的人,canvas有一个方法canvas.setDrawFilter(DrawFilter)应该使用,我试着看看开源代码,但我没有得到线索......
有任何想法吗?
唯一可用的子类的DrawFilter似乎是专为在调整位Paint标志:
setDrawFilter(new PaintFlagsDrawFilter(Paint.ANTI_ALIAS_FLAG,Paint.DITHER_FLAG))
所以,我怀疑它有多大用处.
另外,退房ColorFilter.和setSaturation()的ColorMatrix.这可能有助于绘制灰度.
示例:在画布上绘制彩色图像(inImg)为黑白(outImg大小size):
Bitmap outImg = Bitmap.createBitmap(size, size, Bitmap.Config.RGB_565);
Canvas can = new Canvas(outImg);
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
Paint pnt = new Paint(Paint.DITHER_FLAG);
pnt.setColorFilter(new ColorMatrixColorFilter(cm));
can.drawBitmap(inImg, 0, 0,pnt);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5084 次 |
| 最近记录: |