如何使用DrawFilter?

Ofe*_*Ron 3 android draw

关于DrawFilter在网上讨论的很少,所以我找不到适合下面这个问题的答案:

已经documanted 这里是:

DrawFilter子类可以安装在Canvas中.当它存在时,它可以修改用于绘制(暂时)的绘画.有了这个,过滤器可以禁用/启用抗锯齿,或更改绘制的所有内容的颜色.

所以我确实想要使用这个功能,以便将画布中绘制的颜色更改为黑色,但是如何完成?因为这个类没有方法可以覆盖它的一个方法,我应该如何将它子类化以实现所记录的内容...

顺便说一句,对于从未见过它的人,canvas有一个方法canvas.setDrawFilter(DrawFilter)应该使用,我试着看看开源代码,但我没有得到线索......

有任何想法吗?

S.D*_*.D. 6

唯一可用的子类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)