Как правило, я бы получить графический экземпляр что-то вроде этого:Получение FontMetrics перед тем, как экземпляр Graphics
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();
Однако в текущем проекте я работаю, то width
и height
переменные выше зависят по размеру нескольких текстовых фрагментов, которые позже будут нарисованы на графическом экземпляре. Но, чтобы получить размеры используемого шрифта, я обычно использовал FontMetrics, который я получаю от графического объекта.
FontMetrics metrics = g.getFontMetrics();
Итак, у меня довольно неприятный цикл зависимости. Я не могу создать графический объект, пока не узнаю размер текста, и я не могу знать размер текста, пока у меня не будет графический объект. Одним из решений является создание другой пары BufferedImage
/Graphics
, чтобы получить нужный мне пример FontMetrics
, но это кажется ненужным.
- Итак, есть ли более хороший способ?
- Или это тот случай, что свойства ширины, высоты и т. Д. Для шрифта каким-то образом зависят от того, что (графика, компонент ...) текст должен быть нарисован?
У меня была такая же проблема, как и здесь, Том, вы когда-нибудь находили хорошее решение? – m0s
Нет, боюсь, нет. Я просто прибегал к созданию временного объекта Graphics. Мне было бы интересно услышать, если вы найдете лучший способ. –