我试图通过使用Paint ColorFilter来反转位图 我用这个链接作为参考: http://www.mail-archive.com/android-developers@googlegroups.com/msg47520.html
但它绝对没有效果 - 正常绘制位图你能告诉我我做错了什么吗?
定义浮点数组:
float invert [] = {
-1.0f, 0.0f, 0.0f, 1.0f, 0.0f,
0.0f, -1.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, -1.0f, 1.0f, 0.0f,
1.0f, 1.0f, 1.0f, 1.0f, 0.0f
};
在构造函数中设置Paint
ColorMatrix cm = new ColorMatrix(invert);
invertPaint.setColorFilter(new ColorMatrixColorFilter(cm));
Draw()方法中的引用
c.drawBitmap(Bitmap, null, Screen, invertPaint);
编辑:我能够通过在绘图声明中进行绘画分配来使其工作:
ColorMatrix cm = new ColorMatrix(invert);
invertPaint.setColorFilter(new ColorMatrixColorFilter(cm));
c.drawBitmap(rm.getBitmap(DefaultKey), null, Screen, invertPaint);
但是现在它呈现的速度非常慢(可能是因为它在每一帧中设置了一个复杂的矩阵)......当它采用相同的方法时,它是否有效?
EDIT2: 没关系!!!大声笑,问题是我有两个构造函数,我只在其中一个配置colorfilter ...进程仍然是CPU密集型并导致帧率问题
答案 0 :(得分:4)
这是一个老线程。
但是:Matrix不适合反转具有透明度的抗锯齿图像。
应该是:
float invert[] =
{
-1.0f, 0.0f, 0.0f, 1.0f, 1.0f,
0.0f, -1.0f, 0.0f, 1.0f, 1.0f,
0.0f, 0.0f, -1.0f, 1.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f
};