雙緩沖,我記得有兩種方法,一種是兩個圖象,一個前臺Graphics,一個后臺Graphics,畫圖時在后臺畫,畫好了,再用前臺的Graphics畫后臺Graphics的圖片。另一種是有兩個或多個圖象,不分前后臺,顯示一個圖象時,另外的在畫,圖象循環使用(c語言時用過)。
給出第一種的java實現
a、 定義后臺圖象BufferedImage offScreenImg=offScreenImg = new BufferedImage(this.maxX, this.maxY,
BufferedImage.TYPE_INT_RGB);
b、 得到后臺的Graphics實例
Graphics2D offScreenG;
offScreenG = offScreenImg.createGraphics();
c、 覆蓋paintComponent方法
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(offScreenImg, 0, 0, this.maxX, this.maxY, this);
}
繪制時用后臺Graphics,繪制好后,調用repaint(),將offScreenImg繪到面板上。
這個軟件是我大二時的圖形學課程設計,是個矢量圖形的繪制軟件。發來給初學者參考。
主要功能:
實現點、線段、折線、圓、橢圓、矩形、圓弧、多邊形、填充圖形、字符串等的定義和交互繪制。
實現線型、線寬、顏色的選擇。
實現畫布的定義及保存。
程序結構:
程序的主要功能均由類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還不是很了解,所以有的結構不是很合理,寫出來就是給初學者做個參考,看到有很多同學都在找畫圖板的設計,我會給出程序和簡單的設計文檔。
從以前的博客轉了一些圖片過來,以前的一些技術小結也要轉過來。
剛開了這個博客,既然是java技術,我想以這個開篇還是合適的。
java名稱的來歷

1995年初,Sun公司推出了新一代面向對象的程序設計語言,并將其命名為Java。關于Java這個名字的來歷有一段趣聞:有一天,幾位Java成員組的會員正在討論給這個新的語言取什么名字,當時他們正在咖啡館喝著Java(爪哇)咖啡,有一個人靈機一動說就叫Java怎樣,這個提議得到了其他人的贊同,于是,Java這個名字就這樣傳開了。
關于java的咖啡圖標,我以為也可以有悠閑的意思,就是說使用java語言可以有更好的開發效率,給你更多悠閑的時間(喝咖啡)。還有一杯咖啡放在你的面前,你是不是有一種要把它端起來的沖動呢,其實就是讓你體驗java的沖動。
在和室友小賴談論這個話題時,他說我們要是開發一種語言就叫guoba(鍋巴),呵呵.