天天看點

《Java數字圖像處理:程式設計技巧與應用實踐》——1.4 Swing Java 2D的其他進階特性介紹

本節書摘來自華章計算機《java數字圖像處理:程式設計技巧與應用實踐》一書中的第1章,第1.4節,作者 賈志剛,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

1 . stroke接口

stroke是graphics2d的api接口,用來實作圖形的描邊修飾,在java 2d中隻有一個完成stroke接口的類basicstroke,如果有需要,可以自己完成stroke接口,實作自定義的stroke類。如何使用stroke的實作類?方法如下:

1)調用graphics2d 的setstroke()方法,傳入一個執行個體化的stroke對象。

2)調用draw()方法,傳入要繪制的幾何形狀。

basicstroke的對象構造函數代碼如下:

其中:

第一個參數2.0f表示stroke的寬度。

第二個參數聲明stoke的結束方式,basicstroke.cap_butt表示如果不是閉合區域則不做任何修飾,直接結束繪制,basicstroke.cap_round表示如果不是閉合則添加圓角帽線,然後結束。

第三個參數表示線的連接配接方式,此處為join_miter。

第四個參數指定stoke線段的長度,此處線段長度為10。

第五個參數聲明點線模式,此處點線模式dash為不等長線段。

第六個參數聲明位移,0.0表示位移間隔為零。

更詳細的參數說明可以參考jdk的官方文檔,下面的代碼通過建立basicstroke執行個體對象來繪制一個虛線矩形:

2 . texture fill接口

texture fill即紋理填充,graphics2d提供了setpaint()方法來設定紋理填充,通過fill()方法可實作對幾何形狀的填充。前面講到的兩種填充方式分别為顔色填充與漸變填充,這裡将重點介紹紋理填充的類texturepaint建立與使用。

texturepaint通過構造一個bufferedimage對象作為紋理來填充幾何形狀,因為buffered-image對象資料将被拷貝到texturepaint中,是以bufferedimage對象設定得比較小為好。執行個體化一個texturepaint對象的代碼如下:

其中image表示一個bufferedimage執行個體,rect表示截取作為紋理的區域。

使用執行個體化的texturepaint來完成對矩形區域填充的代碼如下:

3 . font屬性

java 2d支援絕大多數常見字型的建立與屬性值的修改調整,可通過graphics2d setfont()方法來實作繪制字型的修改,同時graphics2d繪制引擎還支援自定義的外部字型檔案*.ttf的動态加載與使用。隻要在使用之前加載字型檔案即可,使用下面的代碼可實作字型檔案加載:

字型加載與使用的完整代碼如下:

4 . generalpath與自定義幾何形狀

java 2d支援通過generalpath實作繪制任意的幾何形狀,使用generalpath提供的api接口繪制幾何形狀的步驟大緻如下:

1)執行個體化generalpath對象。

2)調用moveto()方法錨地開始點坐标。

3)調用lineto()或curveto方法繪制連接配接線。

4)調用closepath()方法完成幾何形狀繪制。

下面的代碼實作了利用generalpath對象繪制一個紅色五角星圖案。