A Graphics2D - это раковина для команд рендеринга. Это never действует как источник, поскольку вы легко можете вывести из-за отсутствия каких-либо методов, которые бы дистанционно соответствовали этой цели (а именно, какие-либо методы, которые поддерживают , с использованием фактического содержимого графики).
Это также чистый подход с точки зрения дизайна, Графика предназначена для рендеринга не только для пиксельных растров, но и для любого графического устройства.
Хотя, поскольку Graphics - это всего лишь абстрактный класс, вы можете создавать реализации, которые позволяют вам считывать содержимое, , но не через API Graphics2D. Его всегда специфически добавленная возможность через несвязанный API (например, BufferedImage).
Если ваша цель - создать SVG, есть векторные примитивы, которые вы могли бы использовать; theres целая куча подклассов java.awt.Shape, которую вы можете использовать для определения геометрии. Формы могут отображаться в Graphics2D или вы можете «пересекать» Shape с помощью getPathIterator() и выполнять любую операцию, в которой вы нуждаетесь.
Для простой цели рендеринга предопределенных геометрических умножений времени, Shapes являются векторным эквивалентом пиксельного изображения (в случае, если вам интересно, вам нужно будет использовать translate/transform для переопределения Shape при рендеринге , нет вызовов, которые принимают координаты для фигур).
Для создания более сложных форм из основных форм вы можете использовать API java.awt.geom.Path2D, который, например, имеет конкретную реализацию под названием GeneralPath, которая позволяет комбинировать фигуры.
EDIT: Таким образом, Graphics2D не подходит для вашей задачи, Shape/GeneralPath.
Можете ли вы представить образец своего кода о том, как вы рисуете 2D-фигуры? – Ishmael
Это серия вызовов типа "graphic.fillOval (x, y, cx, cy);". Затем мне нужно отобразить этот графический объект в другой графический объект с заданным смещением. –