为什么下面的代码没有对源位图mBitmap进行任何更改? mBitmap是我要对其应用滤色器的灰度图像。滤镜本身并不重要,但是我应用的任何滤色镜都无效。屏幕上绘制的是原始位图,就像我没有对其应用任何滤镜一样。
我可以对其应用不同的滤色器,例如:
mPaint.setColorFilter(new LightingColorFilter(Color.RED, 100));
但是,当我从颜色矩阵创建滤色器时,什么也没得到。
我正在使用Android 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);
最佳答案
很抱歉提出这个问题。由于我缺乏理解,它的格式不好。就我所知,上面的ColorMatrix实际上什么也不做。
简而言之,我最初的问题源于我试图对灰度图像进行色调调整的事实。事实证明:在灰度图像上进行色调调整没有任何意义,因此我没有看到任何变化。
困惑来自这个(优秀)问题:
Understanding the Use of ColorMatrix and ColorMatrixColorFilter to Modify a Drawable's Hue
我以为质询者只是按照他最初的要求对灰度图像进行了色调调整。现在我知道他一定要对某些以前的彩色图像进行色调调整。
呃,好吧。最好的学习方式来自于被迫去思考您想做什么!