Первый «foo» является нормальным, но второй настолько огромен, что я могу видеть только базу «f». Размер шрифта по умолчанию.Graphics2D - текст ОГРОМНЫЙ в масштабированном координатном пространстве
BufferedImage image = new BufferedImage(500, 500, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
Shape ellipse = new Ellipse2D.Double(0, 0, 1.0, 1.0);
g2.setPaint(Color.RED);
g2.drawString("foo", 100, 100);
g2.scale(500.0f/length, 500.0f/length);
g2.drawString("foo", 1, 1);
Изменение размера шрифта не поможет, потому что она позволяет только int
размеры и размер, который будет иметь смысл для масштаба нечто вроде 0.02
.
Причина, по которой мне нужно нарисовать текст во время масштабирования, потому что я рисую сетку узлов, и я хочу масштабировать координаты до количества узлов в каждом измерении. Таким образом, мне не нужно делать сложные вычисления.
Мне нужен текст для обозначения краев.
Update: Я могу получить текст, делая каждый раз, когда я хочу, чтобы нарисовать текст в следующей последовательности: спасительное преобразование, перевод в нужном месте в масштабируются пространство, водяной камень, рисование текста в (0, 0)
, и восстановление преобразования.
Каков тип и значение 'length'? – megadan
Значение @megadan может быть где угодно от '2' до' 1000', целых чисел – necromancer
Вы теряете дробную часть, разделив два целых числа вместо float или double. – megadan