簡體   English   中英

如何在Java中繪制絕對自定義的形狀?

[英]How to draw absolutely custom shape in Java?

Java2D API支持的最復雜形狀是Bezier段。 假設我想繪制有理段(每個控制點都有一個權重,整個渲染公式略有不同)。

怎么做到這一點?

是否可以擴展渲染引擎以繪制更復雜的形狀?

UPDATE

實現自定義形狀的常用方法是實現Shape接口。 此接口具有返回PathIterator關鍵方法,而PathIterator迭代段類型。 只有5種細分類型。 最彎曲的是SEG_CUBICTO ,這是標准的貝塞爾曲線,有4個控制點(包括2個開始和結束點)。

如果我將線性分數變換應用於貝塞爾曲線,則每個控制點都會獲得一個權重,作為其坐標的補充,貝塞爾曲線變為NURBS(不確定,無法學習確切的術語)。 無論如何,曲線的公式與Bezier不同。

您無法真正擴展渲染引擎:您可以創建Graphics / Graphics2D子類,但您無法控制實例化,因此您無法強制繪圖框架將您的子類傳遞給繪制方法。

你可以做的是創建一個Shape的RationalShape實現,它具有繪制你喜歡的任何東西的方法,並返回一個PathIterator,它使用Bézier樣條函數逼近它。 作為像Photoshop這樣的圖形程序的用戶,我發現使用Bézier樣條曲線可以非常好地逼近每條曲線,我不知道這種近似背后的數學有多復雜。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM