下面的代码是否有理由不对源位图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);
答案 0 :(得分:2)
抱歉问这个问题。由于我缺乏理解,它的形成很差。据我所知,上方的ColorMatrix实际上什么都不做。
简而言之,我原来的问题源于我试图对灰度图像进行色调调整。事实证明:在灰度图像上进行色调调整没有任何意义,因此我没有看到任何变化。
混淆来自这个(优秀的)问题:
Understanding the Use of ColorMatrix and ColorMatrixColorFilter to Modify a Drawable's Hue
我认为提问者只是按照他最初的要求对灰度图像进行色调调整。现在我知道他必须对一些以前着色的图像进行色调调整。
好吧,好吧。最好的学习形式来自于被迫实际思考你想要做的事情!