Толстая граница нарисованной последовательности - PullRequest
5 голосов
/ 06 октября 2011

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

Как мне в java нарисовать границу примерно в 2 пикселя вокруг каждой буквы в строке, нарисованной на элементе Graphics2D?

Примерно так:
Text with 2px border


Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 06 октября 2011

Я нашел одно простое решение в Javaworld для рисования контура текста на Java:

g.setColor(Color.red);
g.drawString("Outline", ShiftWest(x, 1), ShiftNorth(y, 1));
g.drawString("Outline", ShiftWest(x, 1), ShiftSouth(y, 1));
g.drawString("Outline", ShiftEast(x, 1), ShiftNorth(y, 1));
g.drawString("Outline", ShiftEast(x, 1), ShiftSouth(y, 1));
g.setColor(Color.yellow);
g.drawString("Outline", x, y);

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

Другим решением будет использование преобразования и getOutline (), который является методом класса TextLayout.Пример для создания схемы можно найти здесь .

5 голосов
/ 06 октября 2011

См .: Преобразование фигур, текста и изображений .Установите «примитив» в «текст» и «рендеринг» в «Обводка и заливка» в примере преобразования.

...