3

DrawFilter についてはネット上でほとんど議論されていないため、次の質問に対する適切な回答を見つけることができませんでした。

ここで次のことが文書化されています。

DrawFilter サブクラスは Canvas にインストールできます。存在する場合、描画に使用されるペイントを (一時的に) 変更できます。これにより、フィルターはアンチエイリアシングを無効/有効にしたり、描画されるすべての色を変更したりできます。

この機能を使用して、キャンバスに描画されている色を黒に変更したいのですが、どのように行われますか? このクラスにはなぞなぞをオーバーライドするメソッドがないため、文書化されているものを達成するためにサブクラス化する方法...

ところで、それを見たことがない人には、キャンバスには使用すべきメソッド canvas.setDrawFilter(DrawFilter) があります。オープンソースコードを見ようとしましたが、そこに手がかりがありませんでした...

何か案は?

4

2 に答える 2

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);
于 2012-11-02T08:45:18.223 に答える