java初級(jí)制圖(畫圖)參考模板_第1頁(yè)
java初級(jí)制圖(畫圖)參考模板_第2頁(yè)
java初級(jí)制圖(畫圖)參考模板_第3頁(yè)
java初級(jí)制圖(畫圖)參考模板_第4頁(yè)
java初級(jí)制圖(畫圖)參考模板_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、初級(jí)制圖畫圖從本講開(kāi)始我們就要學(xué)習(xí)終端Java技術(shù)了!終于開(kāi)始學(xué)了啊。目前為止已經(jīng)學(xué)習(xí)的編程基礎(chǔ)一定會(huì)派上用場(chǎng)的,尼克要加油啊。本講我們學(xué)習(xí)在終端上制作圖畫。1. 終端Java的life cycle在文章開(kāi)始時(shí)談到畫圖,那么首先從如何啟動(dòng)終端Java,如何使其運(yùn)行開(kāi)始講起。這么說(shuō)有電話掛進(jìn)來(lái)時(shí),程序會(huì)暫時(shí)停止是么?是這樣的。每次電話進(jìn)來(lái)時(shí)程序都會(huì)中止,相反若程序仍然運(yùn)行不是很麻煩么。通話時(shí)游戲結(jié)束的話很討厭啊。為了避免這種情況,在終端Java內(nèi)定義了程序啟動(dòng)時(shí)、電話掛進(jìn)來(lái)時(shí)以及程序結(jié)束時(shí)的處理。好方便啊。請(qǐng)看下圖。終端Java的life cycle如下圖所示。1 / 20終端發(fā)出運(yùn)行命令,調(diào)出

2、default constructor (無(wú)自變量)。調(diào)出startApp(),開(kāi)始MIDlet。電話等進(jìn)來(lái)時(shí),運(yùn)行pasuseApp(),MIDlet停止。通話結(jié)束時(shí),再運(yùn)行startApp(),且再次打開(kāi)MIDlet。停止MIDlet時(shí),運(yùn)行destroyApp(),MIDlet 停止。 博士,這里的default constructor是什么?這個(gè)呀。讓我們用模板的source code來(lái)說(shuō)明一下。import javax.microedition.lcdui.Display;import javax.microedition.lcdui.TextBox;import javax.mic

3、roedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;/* * 程序模板 */public class Template extends MIDlet private Display display;private TextBox textbox;public Template() display = Display.getDisplay(this);textbox = new TextBox("", "", 500, 0);display.

4、setCurrent(textbox);protected void pauseApp() protected void destroyApp(boolean arg0) throws MIDletStateChangeException protected void startApp() throws MIDletStateChangeException /從這里起以下寫程序/從這里起以上寫程序從14行到19行存在與類名相同名稱的Templete方法。這個(gè)就是constructor。它起什么作用呢?作成類時(shí),寫在constructor內(nèi)的處理會(huì)自動(dòng)運(yùn)行。也就是說(shuō),constructor是進(jìn)行

5、類的初始化的。哦哦??墒?,這個(gè)模板的constructor是做什么的呀?噢。好問(wèn)題啊,從現(xiàn)在起我們就開(kāi)始講解這個(gè)問(wèn)題了。2. 畫圖2.1. canvas為了在終端Java上畫圖,要使用Canvas類。好的。畫圖從Canvas類開(kāi)始。尼克,你有沒(méi)有注意到終端Java應(yīng)用里面有許多畫面?畫面?是指上講以前所學(xué)的顯示文字,輸入文字的畫面么? 恩。是的。上一講以前都是利用text box來(lái)顯示文字的。另外也有選擇要素的畫面以及顯示時(shí)鐘的畫面。而這一講卻要使用與以前完全不同的畫面Canvas來(lái)顯示graphic。import javax.microedition.lcdui.Canvas;import

6、javax.microedition.lcdui.Display;import javax.microedition.lcdui.Graphics;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;/* * 制圖用模板 */public class Sample extends MIDlet private Display display;private Canvas canvas;protected void startApp() throws

7、 MIDletStateChangeException display = Display.getDisplay(this);canvas = new TempleteCanvas();/初始化Canvas display.setCurrent(canvas);/顯示Canvas protected void pauseApp() protected void destroyApp(boolean arg0) throws MIDletStateChangeException /* * 模板Canvas */class TempleteCanvas extends Canvas/* * 畫圖方

8、法 * 記錄畫圖處理 */protected void paint(Graphics g) /從這里起以下記錄畫圖處理 /從這里起以上記錄畫圖處理從41行到45行記錄著畫圖處理。上面的source code是顯示graphic的程序模板。增加了一個(gè)類呀。是的。利用Canvas時(shí),除了主要的類之外,還需要一個(gè)顯示graphic的Canvas類。這也挺難的啊。2.2. 畫線首先我們先在畫面上試著畫線。是。畫線的程序如下所示書(shū)寫。g.drawLine(int 起點(diǎn)的x坐標(biāo),int 起點(diǎn)的y坐標(biāo),int 終點(diǎn)的x坐標(biāo),int終點(diǎn)的y坐標(biāo));使用這個(gè)試試從(10,10)到(100,100)畫線,怎么樣?

9、應(yīng)該是g.drawLine(10,10,100,100)吧。對(duì)!但是坐標(biāo)原點(diǎn)在哪里呢?恩?根據(jù)坐標(biāo)原點(diǎn)的不同描畫的情況應(yīng)該也不相同。你說(shuō)得對(duì)。坐標(biāo)原點(diǎn)在畫面的左上。N820的畫面如下所示。左上角為原點(diǎn),x軸的值向右逐漸變大,y軸的值向下逐漸變大。運(yùn)行剛才的畫線命令,如下所示。2.3. 描畫四邊形接下來(lái)我們?cè)囍嬎倪呅?。畫四條線就行了吧。呵呵,是這樣的。但Java里面也準(zhǔn)備了專門描畫四邊形的方法。g.drawRect(int 定點(diǎn)的x坐標(biāo), int 定點(diǎn)的y坐標(biāo), int 高度, int 寬度);使用這個(gè)方法試試從(10,10)畫高100寬100的正方形,應(yīng)該怎么做? 應(yīng)該是g.drawRect

10、(10,10,100,100)。2.4. 畫圓下面我們來(lái)畫圓。好的。畫圓的命令如下所示。g.drawArc(int 圓左上的x坐標(biāo), int 圓左上的y坐標(biāo), int 圓的寬度, int 圓的高度, int 圓的開(kāi)始角度, int 圓弧的角度);各變量的表示法見(jiàn)下圖。調(diào)整圓的高度、寬度,有時(shí)也會(huì)出現(xiàn)橢圓的情況。這個(gè)圖最初畫圓時(shí)應(yīng)該怎么做呢?考慮一下。呃,把height與width設(shè)為相同數(shù)值,arcAngle設(shè)為360怎么樣?你這樣做試試吧。g.drawArc(100,100,80,80,0,360);恩。畫的不錯(cuò)呀。圓弧的角度在360度以下時(shí)畫出來(lái)的是弧。2.5. 改變顏色一直都用黑線畫,是

11、不是比較無(wú)聊呢。是啊,我想用紅色或者黃色試試看。呵呵,顏色的變換方法如下所示。g.setColor(int 紅色的值, int 綠色的值, int 藍(lán)色的值);紅色、綠色與藍(lán)色組合可以生成各種各樣的顏色。果然。它們是三原色嘛。那我們就畫一下紅色的四邊形吧。g.setColor(255,0,0);g.drawRect(10,10,100,100);紅線被畫出來(lái)了。那么涂滿顏色的四邊形也能被畫出來(lái)么?描畫涂滿顏色的四邊形也有專門的命令。如下所示。g.fillRect(int x坐標(biāo), int y坐標(biāo), int 高度, int寬度);draw系的方法只是描畫圖形的線條,而fill系的方法則把圖形涂滿

12、。2.6. 顯示圖像下面的程序就變的稍微有點(diǎn)長(zhǎng)了。試試做一做圖像的顯示,圖像是指照片之類的么?是的,那就先來(lái)顯示尼克的圖像吧。N820可以顯示PNG形式的圖像。首先,要準(zhǔn)備PNG形式的文件。好的。下面制作表示圖像文件的image object。image object?關(guān)于object,反正以后還要學(xué)習(xí)object指向,到時(shí)再說(shuō)明吧。在這里,請(qǐng)把它當(dāng)作程序里讀取圖像文件的數(shù)據(jù)。image object的制作方法如下所示。Image image = Image.createImage("圖像文件的路徑");此時(shí)若設(shè)定了錯(cuò)誤的圖像文件路徑,就會(huì)出現(xiàn)error。在Java里為避免

13、此類error,準(zhǔn)備了“例外處理”。也就是定義了例外error發(fā)生時(shí)的處理。例如,圖像文件的路徑錯(cuò)誤,這樣就會(huì)導(dǎo)致例外error的出現(xiàn)是嗎?是的。這時(shí)一般就會(huì)出現(xiàn)“圖像文件的路徑錯(cuò)誤”等信息。如下所示書(shū)寫例外處理。try例外發(fā)生處理;例外發(fā)生處理;catch(Exception e)例外發(fā)生時(shí)的處理;例外發(fā)生時(shí)的處理;使用例外處理讀取圖像的程序如下所示書(shū)寫。此程序是在模擬器的message panel里顯示例外的內(nèi)容而進(jìn)行的例外處理。Image image = null; / 指定保存圖像數(shù)據(jù)的變量的宣言tryimage = Image.createImage("圖像文件的路徑&qu

14、ot;);catch(Exception e)e.printStackTrace(); / 顯示例外的內(nèi)容上面的語(yǔ)句表示在image變量里讀取圖像文件的數(shù)據(jù)。但是,只是讀取數(shù)據(jù)還不能顯示出來(lái)。也有顯示用的命令吧。被你猜對(duì)了,顯示命令的寫法如下所示。g.drawImage(image, int 顯示位置的x坐標(biāo), int 顯示位置的y坐標(biāo), int anchor);博士!anchor是什么東西???問(wèn)的好!所謂的anchor point,是指決定圖像位置的基準(zhǔn)點(diǎn)。定義anchor point時(shí),利用邏輯計(jì)算符號(hào)|,分別指定橫方向和縱方向的常數(shù)。橫方向縱方向Graphics.LEFTGraphics

15、.HCENTERGraphics.RIGHTGraphics.TOPGraphics.BASELINEGraphics.VCENTERGraphics.BOTTOM恩。好像有一些難啊。習(xí)慣就好了。指定anchor point為 Graphics.LEFT | Graphics.TOP后,變成下面所示的圖。兩個(gè)指定的ancho交叉就是anchor point。那么指定 Graphics.HCENTER | Graphics.VCENTER的情況下又是什么樣子呢?在畫面的中間顯示?對(duì)!是這樣的。讓我們實(shí)際在畫面中間顯示尼克的圖像看看。畫面的尺寸為高255,寬240。這么說(shuō),中間的坐標(biāo)是(120 ,

16、 127)啊。恩?那么圖像文件放哪里好呢?噢,是啊是啊。對(duì)于Project,把source code保存到“src”文件夾,再把“res”文件夾創(chuàng)建到“src”或者保存類文件的“bin”所在的文件夾內(nèi),在其中放置圖像文件。接下來(lái)在模擬器中設(shè)定放置圖像文件的文件夾。點(diǎn)擊菜單的Options->MIDlet suite.。然后指定剛才保存圖像文件的文件夾為Resource Directory。按“OK”鍵結(jié)束設(shè)定。這樣的話會(huì)變成什么樣子呢?Image image = null;try image = Image.createImage("/nicky.png"); catch (IOException e) e.printStackTrace();g.drawImage(image,120,127,Graphics.HCENTER|Graphics.VCENTER);我的臉顯示出來(lái)了!做的不錯(cuò)?。】墒莂nchor point的BASELINE是指哪里???所謂的BASELINE是指利用在畫面中顯示文字的anchor point,在顯示圖像時(shí)使用的。呃!?也可以

溫馨提示

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

評(píng)論

0/150

提交評(píng)論