javaJPEG圖像生成器論文_第1頁
javaJPEG圖像生成器論文_第2頁
javaJPEG圖像生成器論文_第3頁
javaJPEG圖像生成器論文_第4頁
javaJPEG圖像生成器論文_第5頁
已閱讀5頁,還剩13頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、X X X X 大 學Java語言程序設計課程設計(論文)題目: JPEG圖像生成器 院(系): 專業班級: 學 號: 學生姓名: 指導教師: 教師職稱: 起止時間: 課程設計(論文)任務及評語院(系): 教研室: 學 號 學生姓名 專業班級 課程設計(論文)題目JPEG圖像生成器課程設計(論文)任務任務與要求:(1). 掌握面向對象程序設計語言JAVA的基本語法(2). 掌握JAVA面向對象設計的思想,(3). 掌握VJAVA6.0與MyEclips JAVA 開發工具的使用 (4). 運用標準JAVA規范設計應用程序設計過程中,要嚴格遵守設計的時間安排,聽從指導教師的指導。正確地完成上述內

2、容,規范完整地撰寫出設計報告。指導教師評語及成績 成績: 指導教師簽字: 年 月 日xxxx 大 學 課 程 設 計 說 明 書(論 文)目 錄第1章 課程設計目的與要求11.1設計目的11.2實驗環境11.3預備知識11.4設計要求1第2章 課程設計內容22.1 課題描述22.2 系統設計22.2.1功能分析22.2.2面向對象設計22.2.2類成員描述22.3程序實現22.3.1源碼分析22.3.2運行結果2第3章 總結3參考文獻4第1章 課程設計目的與要求1.1設計目的將理論教學中涉及到的知識點貫穿起來,對不同的數據類型、程序控制結構、數據結構作一比較和總結,結合設計題目進行綜合性應用,

3、對所學知識達到融會貫通的程度。通過課程設計,學生在下述各方面的能力應該得到鍛煉:(1)進一步鞏固、加深學生所學專業課程JAVA語言教程的基本理論知識,理論聯系實際,進一步培養學生綜合分析問題,解決問題的能力。(2)全面考核學生所掌握的基本理論知識及其實際業務能力,從而達到提高學生素質的最終目的。(3)利用所學知識,開發小型應用系統,掌握運用JAVA語言編寫調試應用系統程序,訓練獨立開發應用系統,進行數據處理的綜合能力。(4)對于給定的設計題目,如何進行分析,理清思路,并給出相應的數學模型。(5)掌握面向對象程序設計的方法。(6)熟練掌握JAVA語言的基本語法,靈活運用各種數據類型。(7)進一步

4、掌握在集成環境下如何調試程序和修改程序。1.2實驗環境硬件要求能運行Windows 操作系統的微機系統。JAVA語言應用程序開發軟件使用:VJAVA 系統,或其他JAVA語言應用程序開發軟件。1.3預備知識熟悉JAVA語言程序設計的基本知識及VJAVA編輯器的使用方法。1.4設計要求1.仔細分析設計題目,畫出程序流程圖,編寫程序源代碼。2.積極上機調試源程序,增強編程技巧與調程能力。3.認真書寫課程設計預習報告,課程設計說明書。4.遵守課程設計要求和機房管理制度,服從指導教師的安排,確保課程設計的順利完成課程設計內容。第2章 課程設計內容2.1 課題描述JPEG 是被廣泛使用的一種圖像文件格式

5、,本設計要求程序能將程序中繪制的圖形保存為 JPEG 文件格式。 有時人們需要獲取計算機屏幕上顯示的圖像,本程序要求能將屏幕圖像保存為 JPEG 文件格式。本系統共包括5個Java源文件。本系統采用了awt包、util包、io包和swing包,程序實現了圖像生成器的基本功能有: 可以設置圖片的寬度、高度、外框顏色、背景色;可以設置圖片字體的大小、名稱、顏色;可以設置輸出圖片的格式,如JPEG、GIF等;可以將圖片存儲到一個文件或者存儲到一個輸出流;可以為圖片增加若干條干擾線(在生成隨機碼圖片時可用此特性);打印在圖片上的文字支持自動換行。由于java的特性,可能用任何一個編輯器來編輯,在設計類

6、的時候考慮簡單明了,就設計了一個主類和默認屬性類做為程序的整體框架,所有的對象和方法是在默認屬性類中創建和實現的.以及為各組件注冊事件監聽監聽程序也是在默認的屬性類中實現的,主類完成對象的實例化及顯示.這樣設計的優點是:條理清晰,容易理解,容易修改.這樣設計的缺點是:不利于共享類中的方法。2.2 系統設計* * 類名: MakeJPEG * 作用: 對圖像生成器的界面對象的描述 * * 繼承的父類: ActionListener類 * * 實現的接口: 沒有 * * * * 類名:paint * * 作用: 用來完成鼠標的響應時間操作 * * * * 類名: actionPerformed *

7、 * 作用: 用來完成圖像生成的相應事件操作 * * * * 類名: mouseDragged * * 作用: 用來完成鼠標拖動和鼠標移動時的相應操作 * * 2.2.1功能分析運行程序正常的響應按鈕事件,可以進行繪畫,選擇色彩以及截取屏幕等操作,當結果出現異常的時候,這個時候就要對結果進行必要的異常處理,我在輸出結果的方法內設置if 語句,如果不能正常以JPG格式存儲圖形時,將拋出一個actionPerformed類的異常對象,再使用try-catch,捕捉輸出結果的方法拋出的異常對象。如果獲取屏幕出現異常時,將拋出一個actionPerformed類的異常對象然后進行,再使用try-cat

8、ch,捕捉輸出結果的方法拋出的異常對象。重新運行的處理。2.2.2面向對象設計表1 類名及作用類名作用BorderLayout布局管理器的一種,一個面板分東南西北中五個區,用于放置控間,這樣GUI在放大縮小,移植的時候方便Button此類創建一個標簽按鈕ColorColor 類用于封裝默認 sRGB 顏色空間中的顏色,或者用于封裝由 ColorSpace 標識的任意顏色空間中的顏色。Container一般的 Abstract Window Toolkit(AWT) 容器對象是一個可包含其他 AWT 組件的組件Graphics定義一個真正的工具,用來接受圖形操作ActionEvent知道如何對自

9、身進行指派的事件的接口ActionListener用于接收操作事件的偵聽器接口MouseEvent鼠標事件MouseMotionListener用于接收組件上的鼠標移動事件的偵聽器接口ButtonGroup此類用于為一組按鈕創建一個多斥(multiple-exclusion)作用域2.2.2類成員描述表2 主類方法表方法名功能備注initForm面板初始化mouseClicked單擊鼠標時產生的事件接口方法mouseEntered鼠標進入某個區域時產生的事件接口方法mouseExited鼠標退出某個區域時產生的事件接口方法mouseMoved移動鼠標時產生的事件接口方法mouseDragged

10、拖動鼠標時產生的事件接口方法mousePressed按下鼠標時產生的事件接口方法mouseReleased放開鼠標時產生的事件接口方法getarea轉換坐標initmap圖片初始化2.3程序實現按下獲取屏幕按鈕,畫板上就出現了桌面屏幕的截圖,如下圖: 獲取屏幕的效果圖2.3.1源碼分析import java.awt.*;import java.util.*;import java.awt.geom.*;import java.awt.image.*;import java.awt.event.*;import java.io.*;import javax.swing.*;import com.

11、sun.image.codec.jpeg.*;class Pointint x,y; Point(int x,int y) this.x=x;this.y=y; public class MakeJPEG extends Canvas implements MouseMotionListener,MouseListener,ActionListener/用于接收組件上的鼠標移動事件的偵聽器接口/用于接收操作事件的偵聽器接口 int x=-1,y=-1,橡皮擦通知=0,清除通知=0; Vector v=null;int n=1; Graphics2D ggg ; BufferedImage im

12、age; Frame window; Button 保存,調色板,橡皮,清除,畫筆,獲取屏幕,繪制圖形; /創建標簽按鈕 Color 畫筆顏色;/設置畫筆顏色 Panel pCenter,pSouth,pNorth; public MakeJPEG() 保存=new Button("將繪制的圖形或屏幕保存為JPG文件"); 獲取屏幕=new Button("獲取屏幕");/創建一個獲取屏幕標簽按鈕 繪制圖形=new Button("繪制圖形");/創建一個繪制圖形標簽按鈕 調色板=new Button("打開調色板"

13、;);/創建一個打開調色板標簽按鈕 畫筆=new Button("畫筆");/創建一個畫筆標簽按鈕 橡皮=new Button("橡皮");/創建一個橡皮標簽按鈕 清除=new Button("清除");/創建一個清除標簽按鈕 調色板.addActionListener(this); 繪制圖形.addActionListener(this); 保存.addActionListener(this); 畫筆.addActionListener(this); 橡皮.addActionListener(this); 清除.addActionL

14、istener(this); 獲取屏幕.addActionListener(this); 畫筆顏色=new Color(0,0,0); addMouseMotionListener(this); addMouseListener(this); v=new Vector(); setBackground(Color.white); image=new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);ggg=image.createGraphics();/定義一個真正的工具,用來接受圖形操作 Rectangle2D rect=new Rectan

15、gle2D.Double(0,0,200,200); ggg.setColor(getBackground(); ggg.fill(rect); window=new Frame("JPEG圖像生成器"); pCenter=new Panel(); pCenter.setLayout(null); pCenter.add(this); pCenter.setBackground(Color.gray); this.setBounds(80,30,210,210); window.add(pCenter,BorderLayout.CENTER);/布局管理器的一種,一個面板分

16、東南西北中五個區,用于放置控間,這樣GUI在放大縮小,移植的時候方便 pNorth=new Panel(); pNorth.add(保存); pNorth.add(繪制圖形); pNorth.add(獲取屏幕); window.add(pNorth,BorderLayout.NORTH); pSouth=new Panel(); pSouth.add(調色板); pSouth.add(橡皮); pSouth.add(清除); pSouth.add(畫筆); window.add(pSouth,BorderLayout.SOUTH); window.setVisible(true); windo

17、w.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); window.setBounds(100,80,390,380); window.validate(); public void paint(Graphics g) /用來完成鼠標的相應事件操作 if(x!=-1&&y!=-1&&橡皮擦通知=0&&清除通知=0) g.setColor(畫筆顏色); n=v.size(); for(int i=0;i&

18、lt;n-1;i+) Point p1=(Point)v.elementAt(i); Point p2=(Point)v.elementAt(i+1); g.drawLine(p1.x,p1.y,p2.x,p2.y); ggg.setColor(g.getColor(); ggg.drawLine(p1.x,p1.y,p2.x,p2.y); else if(橡皮擦通知=1&&清除通知=0) g.setColor(getBackground(); g.fillRect(x-2,y-2,4,4); ggg.setColor(getBackground(); ggg.fillRect

19、(x-2,y-2,4,4); else if(清除通知=1&&橡皮擦通知=0) g.setColor(getBackground(); g.fillRect(0,0,200,200); ggg.setColor(getBackground(); ggg.fillRect(0,0,200,200); g.drawImage(image,0,0,200,200,this); public void mouseDragged(MouseEvent e) /對鼠標的輸入進行判斷并調用畫圖程序 x=(int)e.getX(); y=(int)e.getY(); Point p=new P

20、oint(x,y); v.addElement(p); repaint(); /添加鼠標觸發事件 public void mouseMoved(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) v.removeAllElements(); public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e)public void mouseClicked(MouseEvent

21、e) public void update(Graphics g) paint(g); public void actionPerformed(ActionEvent e) / 用來完成圖像生成的相應事件操作 if(e.getSource()=橡皮) 橡皮擦通知=1; 清除通知=0 ; else if(e.getSource()=清除) 清除通知=1; 橡皮擦通知=0; repaint(); else if(e.getSource()=畫筆) 橡皮擦通知=0; 清除通知=0; else if(e.getSource()=保存) FileDialog savedialog=new FileDia

22、log(window,"保存圖型到JPG格式",FileDialog.SAVE);/ 設置保存圖型到JPG格式 savedialog.setVisible(true); if(savedialog.getFile()!=null) try String fileName=savedialog.getFile(); FileOutputStream out=new FileOutputStream(fileName); JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out); JPEGEncodeParam para

23、m=encoder.getDefaultJPEGEncodeParam(image); param.setQuality(1.0f,false); encoder.setJPEGEncodeParam(param); encoder.encode(image); out.close(); catch(Exception EE) else if(e.getSource()=獲取屏幕)/ 用來獲取屏幕 Robot robot=null; try robot=new Robot(); catch(Exception er) Rectangle screenRect=null; int width=g

24、etToolkit().getScreenSize().width; int height=getToolkit().getScreenSize().height; screenRect=new Rectangle(0,0,width,height); window.setVisible(false); this.window.setVisible(false); image=robot.createScreenCapture(screenRect); window.setVisible(true); repaint(); else if(e.getSource()=調色板)/用來設置調色板

25、Color tempColor=JColorChooser.showDialog(window,"調色板",畫筆顏色); if(tempColor!=null) 畫筆顏色=tempColor; 畫筆.setForeground(畫筆顏色); else if(e.getSource()=繪制圖形)/用來設置繪制圖形 window.dispose(); this.window.dispose(); MakeJPEG canvas=new MakeJPEG(); public static void main(String args) new MakeJPEG(); 2.3.2運行結果主函數main()調用MakeJPEG()繼承函數,通過繼承函數設置主界面,然后通過事件監聽和事件響應函數實現圖形編輯系統的功能,該圖像生成系統的主界面圖并打開調色板如圖:第3章 總結作為一名計算機網絡技術大二的學生,我覺得能做類似的課程設計是十分有意義,而且是十分必要的。在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論