В drawBmp()
вы неоднократно берете свое растровое изображение (bmp
), масштабируете его (вызов createScaledBitmap
) и затем присваиваете его обратно bmp
.Со временем все эти операции масштабирования приведут к появлению артефактов, которые вы видите.
Чтобы решить эту проблему, сохраните исходное растровое изображение в другой переменной (например, private Bitmap originalImage;
) и создайте масштабированное растровое изображение из исходного.
bmp = Bitmap.createScaledBitmap(originalImage, (int)(canvas.getHeight()*ratio), canvas.getHeight(), true);