Изменение альфы приводит к тому, что строка отключается на один пиксель - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь нарисовать черную строку на моем экране, а над черной - желтую строку. Когда я рисую желтую строку со значением альфа 255, она выглядит так, как должна. Когда я изменяю значение альфа на 254, вдруг вы можете видеть, что желтая строка на один пиксель слишком коротка справа.

Есть какие-нибудь подсказки, почему это происходит? И если да, как я могу предотвратить это?

Вот код в моей ничьей:

DrawingUtils.drawStringInMiddle(g, Settings.name, x, y);
g.setColor(new Color(255, 255, 0, 255));
DrawingUtils.drawStringInMiddle(g, Settings.name, x, y);

Это результат:

enter image description here

Если я сейчас изменю альфа с 255 на 254, это произойдет:

DrawingUtils.drawStringInMiddle(g, Settings.name, x, y);
g.setColor(new Color(255, 255, 0, 254));
DrawingUtils.drawStringInMiddle(g, Settings.name, x, y);

enter image description here

Вот функция DrawingUtils.drawStringInMiddle:

public static void drawStringInMiddle(Graphics g, String s, int x, int y) {
    FontMetrics m = g.getFontMetrics();
    g.drawString(s, x - m.stringWidth(s) / 2, y - m.getDescent() / 2);
}
...