這個軟件是我大二時的圖形學課程設計,是個矢量圖形的繪制軟件。發來給初學者參考。
主要功能:
實現點、線段、折線、圓、橢圓、矩形、圓弧、多邊形、填充圖形、字符串等的定義和交互繪制。
實現線型、線寬、顏色的選擇。
實現畫布的定義及保存。
程序結構:
程序的主要功能均由類PaintPanel完成,該類繼承自JtextArea。(用它是為了實現畫布的大小調整的滾動條,以后介紹)
PaintPanel中主要成員:
ArrayList shape 保存當前畫布上的圖形對象
ArrayList undo 保存用于撤消操作的圖形對象
Color bgCol 背景顏色
BufferedImage offScreenImg 后臺圖象
Graphics2D offScreenG 后臺Graphics對象
Clipboard cb; 剪切板(由系統剪切板實例化)
程序中定義接口:CusShape,主要有一些操作圖形的基本方法,比如,繪制,位置控制,顏色控制(具體可看代碼)
其他圖形均繼承java.awt中的對應的類(主要是使用其中的交叉判斷函數intersects,用于圖形的鼠標選取),并實現Serializable,CusShape。
圖形在程序中都以接口CusShape形式出現,以畫的圖形存儲在ArrayList中。
我是通過這個軟件的設計才明白多態的,以前都是理論上的,經過實踐才知道面向對象的好處。這個軟件編寫的時候我對java還不是很了解,所以有的結構不是很合理,寫出來就是給初學者做個參考,看到有很多同學都在找畫圖板的設計,我會給出程序和簡單的設計文檔。