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