Tint Bitmap с краской?

Я пытаюсь создать функцию, которая оттеняет растровое изображение,

это работает…

imgPaint = new Paint(); imgPaint.setColorFilter(new LightingColorFilter(color,0)); //when image is being drawn canvas.drawBitmap(img,matrix,imgPaint); 

Однако, когда битмап нужно рисовать постоянно (каждый кадр), я начинаю видеть задержку экрана, потому что это не произошло до того, как был установлен фильтр цвета, я считаю, что он применяет фильтр каждый раз, когда мне нужен холст, нарисованный ,

Есть ли способ применить краску один раз к растровому изображению и изменить его навсегда?

Любая помощь оценили 🙂

Создайте второй растровый рисунок и нарисуйте в нем первый растровый рисунок с помощью цветового фильтра. Затем используйте второе растровое изображение для рендеринга большого объема.

EDIT: по запросу, вот код, который будет делать это:

 public Bitmap makeTintedBitmap(Bitmap src, int color) { Bitmap result = Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig()); Canvas c = new Canvas(result); Paint paint = new Paint(); paint.setColorFilter(new LightingColorFilter(color,0)); c.drawBitmap(src, 0, 0, paint); return result; } 

Затем вы вызовете этот метод один раз, чтобы преобразовать растровое изображение в тонированное растровое изображение и сохранить результат в переменной экземпляра. Затем вы использовали бы тонированное растровое изображение (без цветового фильтра) в вашем методе, который рисует на canvas . (Также было бы неплохо предварительно выделить объект Paint вы будете использовать в основном методе рисования, и сохранить его также в переменной экземпляра, а не выделять новую Paint для каждой ничьей).