簡體   English   中英

Java如何填充多邊形

[英]How does java fill a polygon

我一直想知道Java如何填充他的多邊形,我一直在自己嘗試使用scanline算法等。這些方法現在已經完全扭曲了,所以我想知道Java是如何做到的? 因為這似乎很清楚,所以它是否也使用掃描線,還是一種完全不同的算法? (我嘗試過在源代碼中搜索它,但是,這真是一個迷宮。)

問候

Open JDK源可在線獲得 因此,您可以自己查看代碼,盡管您應該記住,通過查看該代碼(使用您認為對自己的代碼的“靈感”),您很可能要遵守OpenJDK許可條件,因此除非您願意為代碼使用兼容的許可證,否則請不要過於仔細地看。

  1. share/classes/java/awt/Graphics.java ,這是包含您可能會使用的fillPolygon代碼的接口。 這是一個抽象方法,因此您必須查看實現該接口的類。
  2. share/classes/sun/java2d/SunGraphics2D.java就是這樣的一種。 它只是將fillPolygon調用委派給sun.java2d.pipe.PixelFillPipe對象上的匹配調用。 但是,由於那只是一個接口,因此您將不得不再次尋找實現。
  3. share/classes/sun/java2d/pipe/BufferedRenderPipe.java是一種可能的實現。 它的fill實現使用fillSpans方法,該方法的核心以本機代碼實現。
  4. share/native/sun/java2d/pipe/BufferedRenderPipe.c具有相應的實現。 因此,一旦您通過查看代碼了解了跨度是什么以及多邊形如何轉換為跨度,那么這可能會告訴您跨度是如何呈現的。

以上所有只是一種可能的代碼路徑。 這在很大程度上取決於您所使用的平台以及所要使用的平台。 打印有不同的原語,而大多數平台有不同的原語。 例如,在(非加速)X11連接上, solaris/native/sun/java2d/x11/X11Renderer.c將僅委托給XFillPolygon 對於基於OpenGL的圖形 ,也有自定義代碼 ,但是我現在看不到填充優化。 但是仔細看看可能會很好。

暫無
暫無

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

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