Как убрать артефакты из текста, рисуемого в растровое изображение

У меня есть фоновый рисунок, если хотите, и я рисую другой фоновый рисунок со шрифтом в фоновом режиме. Когда они просто нарисованы друг на друге и масштабированы по уровню, который мне нужен, они выглядят идеально, без артефактов и именно так, как я хочу. Но для моей цели мне нужно объединить растровое изображение шрифта с фоновым растровым изображением, чтобы оно по сути стало одним элементом. Мне, очевидно, нужно, чтобы это было сделано во время выполнения, и решение, которое я использую, заключается в следующем...

canvas2 = new Canvas(backgroundBitmap);
canvas2.drawBitmap(fontBitmap.getBitmap(), null, rects.get(backgroundRectIndex), null);
invalidate();

Теперь, когда я увеличиваю уровень, мне нужен шрифт с артефактами. Я довольно новичок в графике и прочитал несколько статей и вопросов о подобных проблемах, и я попытался поиграть с размыванием в краске и использовать его в canvas2.drawBitmap вместо нуля, но, похоже, ничего не помогает. Я сталкивался с этим...

Это не относится к случаю, когда приложение создает внутреннее растровое изображение в памяти и что-то рисует на нем для последующего отображения на экране. Платформа автоматически масштабирует такие растровые изображения на лету, во время рисования. Другие побочные эффекты в таком случае могут заключаться в том, что шрифты, нарисованные в таком растровом изображении, будут масштабироваться на уровне растрового изображения, когда закадровое растровое изображение, наконец, отображается на дисплее, что приводит к артефактам масштабирования.

текст ссылки

Похоже, это может быть моей проблемой, но как мне ее решить? Любая помощь приветствуется.

1 ответ

Если вы масштабируете растровое изображение, обязательно отключите флаг filterBitmap.

На краске должно быть:

paint.setFilterBitmap(false);
Другие вопросы по тегам