Как убрать артефакты из текста, рисуемого в растровое изображение - PullRequest
1 голос
/ 22 января 2011

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

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

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

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

текст ссылки

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

1 Ответ

1 голос
/ 23 января 2011

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

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

paint.setFilterBitmap(false);
...