国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于JAVA的圖像生成器設(shè)計與實現(xiàn)

2012-04-29 05:47:22王霏侯偉冬
電腦知識與技術(shù) 2012年20期
關(guān)鍵詞:面向?qū)ο?/a>

王霏 侯偉冬

摘要:Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言。Java技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性。該文基于JAVA語言,在介紹JAVA概念的基礎(chǔ)上,實現(xiàn)了圖像生成器的簡單設(shè)計,通過運行程序,可以繪制各種圖形,并且可以對圖形進行預(yù)覽、保存等操作。

關(guān)鍵詞:JAVA;面向?qū)ο?;圖像生成

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2012)20-4889-03

JAVA-based Image Generator Design and Implementation

WANG Fei, HOU Wei-dong

(The Baicheng Medical College, Baicheng 137000,China)

Abstract: Java is a cross-platform application software can write object-oriented programming language. Java technology offers excellent versatility, efficiency, platform portability, and security. This paper is based on the JAVA programming language, introduced the JAVA con cept to achieve a simple design of the image generator to run the program, you can draw a variety of graphics and graphics preview, save, and other operations.

Key words: JAVA; object-oriented; image generation

1 JAVA概述

Java是一種完全面向?qū)ο蟮木幊陶Z言,既是一種解釋執(zhí)行的語言,也是一種編譯執(zhí)行的語言。Java可用來生成兩類程序:應(yīng)用程序、小應(yīng)用程序(Applet)。JAVA主要具有幾個特點:

1)簡單:屏棄了C++中許多容易出錯和混淆的概念,比如指針、運算符重載、多重繼承等。Java還通過實現(xiàn)自動垃圾回收機制而大大簡化了程序設(shè)計人員對內(nèi)存的管理工作,減少了錯誤的發(fā)生。

2)面向?qū)ο螅夯趯ο蟮木幊谈先说乃季S模式,使人們更容易編寫程序。

3)多線程:Java內(nèi)置了對多線程的支持。多線程使應(yīng)用程序能夠并行執(zhí)行,而且同步機制保證了對共享數(shù)據(jù)的正確操作。

4)平臺無關(guān)性:也就是常說的跨平臺。Java程序被編譯成字節(jié)碼的形式,在有Java虛擬機的系統(tǒng)上就能夠運行java程序。也就是一次寫成,處處運行。

5)動態(tài)性:Java的基本組成單元是類,有些類是自己編寫的,有些是從類庫中引入的,而類又是運行時動態(tài)加載的,這就使得Ja va可以在分布計算功能中動態(tài)的維護程序及類庫,而不像C++那樣,每當類庫升級之后,相應(yīng)的程序都必須重新修改,編譯。

Java和C++的區(qū)別主要有以下幾點:1)Java屏棄了煩瑣的指針;2)Java不支持預(yù)處理功能;3)Java不支持多重繼承;4)Java不支持操作符重載;5)自動內(nèi)存管理;6)方便的字符串功能;7)強大的異常處理機制。

2設(shè)計內(nèi)容

該文基于JAVA語言,在介紹JAVA概念的基礎(chǔ)上,實現(xiàn)了圖像生成器的簡單設(shè)計。圖像生成器具有繪制直線、空心圓、實心圓、空心矩形、實心矩形、空心圓角矩形、實心圓角矩形、空心橢圓、實心橢圓等各種圖形,具有橡皮擦、選擇線條粗細及線條顏色在當前光標處插入文字、設(shè)置字號字形等工具,可以打開、保存、預(yù)覽圖形文件,獲取當前屏幕在繪圖區(qū)域顯示,可以設(shè)置窗口的風(fēng)格,狀態(tài)欄上顯示當前鼠標的位置及系統(tǒng)當前時間。

通過設(shè)計,可以達到幾下要求:

1)用戶可選擇對應(yīng)圖形按鈕繪制對應(yīng)圖形也可以隨意畫,可以任意改變線條的粗細及線條顏色,插入自己滿意的字號字形的文字,畫好后可以保存為.MP文件。

2)對于自己畫錯或不滿意的地方可以用橡皮擦擦除,橡皮擦的擦拭范圍的寬窄可以改變。

3)可以打開及保存MP文件、預(yù)覽圖形文件。

4)通過選擇相應(yīng)的窗口風(fēng)格選項來改變當前窗口的顯示風(fēng)格。

5)通過視圖工具欄的工具欄的相應(yīng)選取項來控制常用工具欄、繪圖工具欄及狀態(tài)欄的顯示與否。

6)可以獲取屏幕的內(nèi)容在當前繪圖區(qū)域顯示。

3總體設(shè)計

3.1圖像生成器窗體的設(shè)計

在設(shè)計的Making picture窗口中使用的是BorderLayout布局菜單欄上有文件、視圖、設(shè)置、風(fēng)格、幫助菜單項。在菜單項下是常用工具欄,常用工具欄上有新建、打開、保存、獲取屏幕、清除、繪制圖形、插入文字及文字的字號、字形的按鈕,窗口的左邊是繪圖工具欄,上面有鉛筆、直線、、空心圓、實心圓、空心矩形、實心矩形、空心圓角矩形、實心圓角矩形、空心橢圓、實心橢圓、橡皮擦、選擇線條粗細及線條顏色的按鈕,窗口最下面是狀態(tài)欄,狀態(tài)欄的左邊顯示當前鼠標的狀態(tài)和位置,右邊顯示系統(tǒng)當前時間。鼠標指到常用工具欄和繪圖工具欄上的相就按鈕上時有相應(yīng)的提示。窗口中間是繪圖區(qū)域以白色為背景。

3.2相應(yīng)功能設(shè)計

4程序主要源代碼及說明

因篇幅有限,截取部分源代碼如下:

class Line extends drawings //直線類

{void draw(Graphics2D g2d)

{g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new BasicStroke(stroke,

BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL));

g2d.drawLine(x1,y1,x2,y2);}}

class Rect extends drawings//矩形類

{ void draw(Graphics2D g2d)

{g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new BasicStroke(stroke));

g2d.drawRect(Math.min(x1,x2),Math.min(y1,y2), Math.abs(x1-x2),Math.abs(y1-y2));

}}

……

class DrawPanel extends JPanel

{ BufferedImage scrImg = null; public DrawPanel()

{setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));

setBackground(Color.white);//設(shè)置繪圖區(qū)域背景為白色

addMouseListener(new mouseA());//監(jiān)聽鼠標相應(yīng)事件操作

addMouseMotionListener(new mouseB());//用來監(jiān)聽鼠標拖動和鼠標移動時的相應(yīng)操作} public void drawScreen()//定義獲取當前屏幕的方法

{ Robot robot= null;//定義Robot對象以調(diào)用Robot.createScreenCapture方法RectanglescrRect= null; Graphics g = this.getGraphics(); try

{robot = new Robot();

Dimension scrSize=Toolkit.getDefaultToolkit().getScreenSize();//桌面屏幕尺寸

scrRect = new Rectangle(0, 0, scrSize.width, scrSize.height);

scrImg = robot.createScreenCapture(scrRect);

}catch (Exception ex)

{ JOptionPane.showMessageDialog(frame," " + ex.toString());}

if (scrImg != null)

{int iWidth = this.getWidth();

int iHeight = this.getHeight();

g.drawImage(scrImg, 0, 0, iWidth, iHeight, 0, 0, scrImg.getWidth(),

scrImg.getHeight(), null);//在繪圖區(qū)域顯示當前屏幕的圖象

}g.dispose();

}protected void paintComponent(Graphics g)

{super.paintComponent(g);

Graphics2D g2d=(Graphics2D)g;//定義畫筆

int j=0;

if (scrImg != null)

{ int iWidth = this.getWidth();

int iHeight = this.getHeight();

g.drawImage(scrImg, 0, 0, iWidth, iHeight, 0, 0, scrImg.getWidth(),

scrImg.getHeight(),null);

} while (j<=index)

{draw(g2d,itemList[j]);

j++;

} }

void draw(Graphics2D g2d,drawings i)

{i.draw(g2d);//將畫筆傳入到各個子類中,用來完成各自的繪圖}}

5程序效果顯示圖

繪制各種圖形界面如圖1所示。

圖1

打開文件界面如圖2所示。

圖2

保存文件界面如圖3所示。

改變顏色界面如圖4所示。

6結(jié)束語

該文實現(xiàn)了圖像生成器的基本功能,通過實驗程序運行良好,達到了預(yù)期效果。

參考文獻:

[1] Deitel H M, Deitel P J.Java程序設(shè)計教程[M].5版.施平安,施惠瓊,柳賜佳,譯.北京:清華大學(xué)出版社,2004.

[2]布雷.java2精要語言詳解與編程指南[M].北京:清華大學(xué)出版社,2002.

[3]青野雅樹.基于Java的計算機圖形學(xué)[M].北京:科學(xué)出版社,2004.

猜你喜歡
面向?qū)ο?/a>
面向?qū)ο蟮挠嬎銠C網(wǎng)絡(luò)設(shè)計軟件系統(tǒng)的開發(fā)
電子測試(2018年15期)2018-09-26 06:01:34
面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
基于面向?qū)ο蟮腛ffice評測系統(tǒng)的分析
峰叢洼地農(nóng)作物面向?qū)ο笮畔⑻崛∫?guī)則集
遙感信息(2015年3期)2015-12-13 07:26:54
面向?qū)ο蟮腟oS體系結(jié)構(gòu)建模方法及應(yīng)用
面向?qū)ο笮畔⑻崛≈杏跋穹指顓?shù)的選擇
河南科技(2014年10期)2014-02-27 14:09:03
云和县| 华池县| 乌兰察布市| 广元市| 海南省| 鹤岗市| 华蓥市| 昌图县| 榕江县| 西乌珠穆沁旗| 东兴市| 海兴县| 湖州市| 莱芜市| 新化县| 石泉县| 离岛区| 静乐县| 宣化县| 通州市| 兴国县| 道孚县| 枣阳市| 宁波市| 邯郸市| 大厂| 大竹县| 丰城市| 新乡县| 浮山县| 许昌县| 海淀区| 德州市| 体育| 临洮县| 随州市| 永胜县| 房产| 商洛市| 南雄市| 桃源县|