Получение FontMetrics перед получением экземпляра Graphics - PullRequest
1 голос
/ 06 мая 2010

Обычно я получаю графический экземпляр примерно так:

BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();

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

FontMetrics metrics = g.getFontMetrics();

Итак, у меня неприятный маленький цикл зависимости. Я не могу создать графический объект, пока не узнаю размер текста, и я не могу знать размер текста, пока не получу графический объект. Одно из решений - сначала создать еще одну пару BufferedImage / Graphics, чтобы получить нужный мне экземпляр FontMetrics, но в этом нет необходимости.

  • Итак, есть ли лучший способ?
  • Или это тот случай, когда свойства ширины, высоты и т. Д. Шрифта каким-то образом зависят от того, на каком объекте (графике, компоненте ...) должен быть нарисован текст?

1 Ответ

0 голосов
/ 06 мая 2010

Может быть, вы можете попытаться получить экземпляр Graphics из другого места. Например, панель, на которой будет нарисовано изображение. Затем вы можете получить экземпляр FontMetrics, используя этот экземпляр Graphic.

...