2016-08-16 44 views
-1

有沒有辦法將Graphics2D對象渲染到另一個Graphics2D對象中。 Not by turning one into an Image and drawing that,但作爲圖形基元?將Graphics2D對象寫入另一個Graphics2D對象

舉一個例子,假設我想繪製相同的開始5次。所以我創建了一個Graphics2D對象,爲它渲染星星。然後,我在5個不同的位置在我的主Graphics2D對象中渲染該星形Graphics2D對象5次。

通過保留所有的線繪圖原型,然後當我從Graphics2D對象創建最終SVG文件,它可以在1000倍變焦,它仍然是一個乾淨的渲染。

有沒有辦法做到這一點?

+0

您可以提供一個關於如何繪製2D形狀的代碼示例嗎? – Ishmael

+0

這是一系列的調用,如「graphic.fillOval(x,y,cx,cy);」。然後我需要將該圖形對象渲染到另一個圖形對象中,並以指定的偏移量。 –

回答

2

一個Graphics2D是水槽用於呈現命令。它從未充當源,你可以很容易地從沒有將遠程適合此目的的任何方法(即支持閱讀圖形的實際內容的任何方法)推斷。

這也是從設計的角度來看乾淨的方法,圖形,意在讓渲染不僅像素柵格,但任何一種圖形設備。

儘管由於Graphics只是一個抽象類,所以您可以創建一些實現,使您可以讀取Graphics2D API的內容而不是通過。它始終是通過不相關的API(例如BufferedImage)特別添加的功能。

如果您的目標是創建一個SVG,那麼您可以使用基於矢量的基元;你可以使用java.awt.Shape的一大堆子類來定義幾何。形狀可以在Graphics2D中呈現,或者您可以使用getPathIterator()「遍歷」一個Shape並執行您需要的任何操作。

爲了渲染預定義幾何圖形的乘法時間的簡單目的,Shapes是像素圖像的等效向量(如果您想知道,在繪製時需要使用translate/transform來重新定位Shape ,沒有調用形狀座標的調用)。

爲了創建更復雜的形狀從基本形狀,你可以使用API​​ java.awt.geom.Path2D其中例如有一個名爲的GeneralPath具體實現,允許結合的形狀。

編輯:所以把它簡單,Graphics2D的不是你的任務合適的工具,形狀/的GeneralPath是。

相關問題