本節書摘來自華章計算機《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對象繪制一個紅色五角星圖案。