При преобразовании матрицы, используемой для рисования растрового изображения, рисуется несколько растровых изображений.

В моем проекте Android у меня есть матрица, которую я использую для рисования растрового изображения на холсте. Во время моего метода drawFrame я перемещаю матрицу в направлении Y, чтобы казалось, что растровое изображение движется вверх. Он движется вверх, но он также рисуется в предыдущей позиции, оставляя позади себя кратные. Вот мой код DrawFrame:

Canvas canvas = null;
canvas = holder.lockCanvas();

Matrix moveMatrix = new Matrix ();
moveMatrix.postTranslate(0, 10);
matrix.preConcat(moveMatrix);

canvas.drawBitmap(bitmap, matrix, null);

holder.unlockCanvasAndPost(canvas);

"matrix" является глобальным членом Matrix.

Кто-нибудь знает, почему это оставляет «полосатый» след растровых изображений на экране?

Спасибо!

Я забыл упомянуть, что каждая предыдущая позиция растрового изображения, кажется, смещается вверх и вниз в направлении y каждый раз, когда растровое изображение перемещается. Таким образом, это заканчивается строкой растровых изображений, которые выглядят так, как будто они дрожат вверх и вниз. Это означало бы, что каждое растровое изображение должно было бы перерисовываться в каждом кадре, иначе все они стояли бы на месте.


person rmetzger    schedule 23.07.2011    source источник


Ответы (1)


Вам нужно очистить Canvas в предыдущей позиции растрового изображения :)

person Romain Guy    schedule 24.07.2011
comment
Я не вижу способа очистить холст. Только перерисовать цвет фона. Но ведь это не решает проблему? Он по-прежнему будет рисовать предыдущее растровое изображение, а затем рисовать фон поверх него? - person rmetzger; 24.07.2011
comment
Вы можете очистить Canvas с помощью drawColor(0, CLEAR). И это решит вашу проблему. - person Romain Guy; 25.07.2011
comment
Да, я использовал drawColor(0, PorterDuff.Mode.CLEAR); Работал отлично! Спасибо. - person rmetzger; 29.07.2011