天天看點

《Java數字圖像處理:程式設計技巧與應用實踐》——1.2 Java 2D API

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

當graphics向下轉型為grahpics2d時,java 2d的圖形繪制引擎得以通路,一個功能更加豐富的圖形庫呈現在讀者眼前,它就是java 2d api。如果你問筆者java 2d與swing有何關系,可以很認真地說,二者毫無瓜葛,java通過引入swing、java 2d與java 3d,極大地豐富了java的圖形功能,使應用程式接口更加完善,為各種可能的圖形開發提供了可靠保證與全面支援,進而也使得學習java圖形方面的知識時不再那麼無助了。下面來看一下java 2d對圖形支援與改進都包括了哪些:

為顯示裝置與列印機提供統一的繪制引擎。

一個廣泛的幾何形狀支援。

文檔列印支援。

可控制的繪制品質。

增強的色彩支援。

文字、形狀、圖像繪制檢測。

java 2d圖形繪制支援的圖形形狀如圖1-1所示。

《Java數字圖像處理:程式設計技巧與應用實踐》——1.2 Java 2D API

java 2d圖形繪制最常見的是将繪制代碼放在paintcomponent(graphics g)方法中,顯示時swing會首先調用paint()方法。該方法會調用下面的三個方法:

paintcomponent(graphics g)

paintborder(graphics g)

paintchildren(graphics g)

在絕大多數情況下,圖形繪制隻需要重載paintcomponent()方法來實作。一個基本圖形繪制代碼如下:

太極在中國源遠流長,黑白相間的太極圖案已經是一個文化标志,這裡将使用java 2d的圖形繪制技術實作太極圖案的繪制。如果仔細觀察太極圖案,就會發現它是非常精準的黑白對稱圖案。可通過設定畫筆顔色來實作黑白顔色控制,利用java 2d area對圖形布爾操作的支援實作太極圖形繪制。java 2d area對圖形shape對象進行支援的四種布爾操作如下。

union(加操作):保留兩個幾何形狀及其重疊部分。

subtraction(減操作):從第一個幾何形狀減去與第二個幾何形狀重疊的部分。

intersection(可以看成與操作):隻保留兩個幾何形狀重疊的部分。

exclusion-or(xor異或操作):保留兩個幾何形狀不重疊的部分。

這四種操作的示意圖如圖1-2所示。

《Java數字圖像處理:程式設計技巧與應用實踐》——1.2 Java 2D API

實作太極圖案的相關代碼如下:

運作源檔案中第1章中的完整代碼可以看到一個标準的太極圖案。

書中所有完整的源代碼均已打包上傳至www.hzbook.com和github,下載下傳後按章節索引即可找到相應的代碼,強烈建議運作每個源代碼執行個體,将源代碼看成本書的一部分。