下面的代码没有对源位图 mBitmap 进行任何更改是有原因的吗?mBitmap 是一个灰度图像,我想对其应用颜色过滤器。滤镜本身并不重要,但我应用的任何颜色滤镜都没有效果。绘制到屏幕上的是原始位图,就好像我没有对其应用过滤器一样。
我可以对其应用不同的滤色器,例如:
mPaint.setColorFilter(new LightingColorFilter(Color.RED, 100));
但是当我从颜色矩阵创建滤色器时,我什么也得不到。
我使用的是安卓 2.3。
我的代码:
float[] mat = new float[] {
1f, 0f, 0f, 0f, 1f,
2f, 0f, 2f, 1f, 0f,
1f, 1f, 0f, 0f, 0f,
0f, 0f, 0f, 1f, 0f,
2f, 0f, 0f, 0f, 1f };
ColorMatrix colorMatrix = new ColorMatrix(mat);
ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);
mPaint.setColorFilter(colorFilter);
mCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
mCanvas.drawBitmap(mBitmap, 0, 0, mPaint);