亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        王霏 侯偉冬

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

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

        中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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(yǔ)言,既是一種解釋執(zhí)行的語(yǔ)言,也是一種編譯執(zhí)行的語(yǔ)言。Java可用來(lái)生成兩類程序:應(yīng)用程序、小應(yīng)用程序(Applet)。JAVA主要具有幾個(gè)特點(diǎn):

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

        2)面向?qū)ο螅夯趯?duì)象的編程更符合人的思維模式,使人們更容易編寫(xiě)程序。

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

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

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

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

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

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

        通過(guò)設(shè)計(jì),可以達(dá)到幾下要求:

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

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

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

        4)通過(guò)選擇相應(yīng)的窗口風(fēng)格選項(xiàng)來(lái)改變當(dāng)前窗口的顯示風(fēng)格。

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

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

        3總體設(shè)計(jì)

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

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

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

        4程序主要源代碼及說(shuō)明

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

        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)聽(tīng)鼠標(biāo)相應(yīng)事件操作

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

        { Robot robot= null;//定義Robot對(duì)象以調(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ū)域顯示當(dāng)前屏幕的圖象

        }g.dispose();

        }protected void paintComponent(Graphics g)

        {super.paintComponent(g);

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

        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);//將畫(huà)筆傳入到各個(gè)子類中,用來(lái)完成各自的繪圖}}

        5程序效果顯示圖

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

        圖1

        打開(kāi)文件界面如圖2所示。

        圖2

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

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

        6結(jié)束語(yǔ)

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

        參考文獻(xiàn):

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

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

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

        猜你喜歡
        面向?qū)ο?/a>
        面向?qū)ο蟮挠?jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)軟件系統(tǒng)的開(kāi)發(fā)
        面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
        基于面向?qū)ο蟮腛ffice評(píng)測(cè)系統(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
        国产精品一区二区韩国AV| 人妻激情偷乱视频一区二区三区| 四川发廊丰满老熟妇| 乌克兰少妇xxxx做受6| 欧美人与物videos另类| 国产午夜福利小视频在线观看| 曰批免费视频播放免费| 四虎影视4hu4虎成人| 伊人精品无码AV一区二区三区| 国产一级一厂片内射视频播放| 国产av精品一区二区三区久久| 日韩人妻无码精品久久久不卡| 国产精品福利影院| 亚洲人妖女同在线播放| 日本人妖熟女另类二区| 亚洲国产成人无码av在线影院| 极品美女高潮喷白浆视频| 激情偷拍视频一区二区| 国产精品美女一区二区视频| 又色又污又爽又黄的网站| 人妻系列无码专区久久五月天| 人妻蜜桃日产一本久道综合在线 | 亚洲第一网站免费视频| 亚洲福利av一区二区| 尤物蜜芽福利国产污在线观看| 国产在线视频网友自拍| 亚洲精品乱码久久久久久中文字幕| 国产精品一区二区久久精品| 亚洲av偷拍一区二区三区| 日韩有码中文字幕在线观看| 国产在线精品一区二区在线看| 女女同性黄网在线观看| 国产自拍成人在线免费视频| 国产三级在线观看完整版| 精品久久久久久国产| av天堂手机在线免费| 狠狠综合亚洲综合亚洲色| 最近中文字幕在线mv视频在线| 日韩肥熟妇无码一区二区三区| 精品亚洲第一区二区三区| 曰韩无码无遮挡a级毛片|