Я пытаюсь инвертировать растровое изображение с помощью 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);
но теперь он рендерит очень медленно (возможно, потому, что он устанавливает сложную матрицу в каждом кадре) ... есть ли причина, по которой он работает, когда используется тот же метод?
РЕДАКТИРОВАТЬ 2: NEVERMIND !!!Lol, проблема заключалась в том, что у меня было два конструктора, и я только настраивал цветовой фильтр в одном из них ... процесс все еще очень загружен процессором и вызывает проблемы с частотой кадров