java初级制图(画图)参考模板.doc

上传人:doc321 文档编号:15002614 上传时间:2022-03-03 格式:DOC 页数:20 大小:871KB
返回 下载 相关 举报
java初级制图(画图)参考模板.doc_第1页
第1页 / 共20页
java初级制图(画图)参考模板.doc_第2页
第2页 / 共20页
java初级制图(画图)参考模板.doc_第3页
第3页 / 共20页
java初级制图(画图)参考模板.doc_第4页
第4页 / 共20页
java初级制图(画图)参考模板.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《java初级制图(画图)参考模板.doc》由会员分享,可在线阅读,更多相关《java初级制图(画图)参考模板.doc(20页珍藏版)》请在三一文库上搜索。

1、初级制图画图从本讲开始我们就要学习终端Java技术了!终于开始学了啊。目前为止已经学习的编程基础一定会派上用场的,尼克要加油啊。本讲我们学习在终端上制作图画。1. 终端Java的life cycle在文章开始时谈到画图,那么首先从如何启动终端Java,如何使其运行开始讲起。这么说有电话挂进来时,程序会暂时停止是么?是这样的。每次电话进来时程序都会中止,相反若程序仍然运行不是很麻烦么。通话时游戏结束的话很讨厌啊。为了避免这种情况,在终端Java内定义了程序启动时、电话挂进来时以及程序结束时的处理。好方便啊。请看下图。终端Java的life cycle如下图所示。1 / 20终端发出运行命令,调出

2、default constructor (无自变量)。调出startApp(),开始MIDlet。电话等进来时,运行pasuseApp(),MIDlet停止。通话结束时,再运行startApp(),且再次打开MIDlet。停止MIDlet时,运行destroyApp(),MIDlet 停止。 博士,这里的default constructor是什么?这个呀。让我们用模板的source code来说明一下。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.setCurrent(textbox);prot

4、ected void pauseApp() protected void destroyApp(boolean arg0) throws MIDletStateChangeException protected void startApp() throws MIDletStateChangeException /从这里起以下写程序/从这里起以上写程序从14行到19行存在与类名相同名称的Templete方法。这个就是constructor。它起什么作用呢?作成类时,写在constructor内的处理会自动运行。也就是说,constructor是进行类的初始化的。哦哦。可是,这个模板的constr

5、uctor是做什么的呀?噢。好问题啊,从现在起我们就开始讲解这个问题了。2. 画图2.1. canvas为了在终端Java上画图,要使用Canvas类。好的。画图从Canvas类开始。尼克,你有没有注意到终端Java应用里面有许多画面?画面?是指上讲以前所学的显示文字,输入文字的画面么? 恩。是的。上一讲以前都是利用text box来显示文字的。另外也有选择要素的画面以及显示时钟的画面。而这一讲却要使用与以前完全不同的画面Canvas来显示graphic。import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui

6、.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 MIDletStateChangeExcept

7、ion 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/* * 画图方法 * 记录画图处理 */protected v

8、oid paint(Graphics g) /从这里起以下记录画图处理 /从这里起以上记录画图处理从41行到45行记录着画图处理。上面的source code是显示graphic的程序模板。增加了一个类呀。是的。利用Canvas时,除了主要的类之外,还需要一个显示graphic的Canvas类。这也挺难的啊。2.2. 画线首先我们先在画面上试着画线。是。画线的程序如下所示书写。g.drawLine(int 起点的x坐标,int 起点的y坐标,int 终点的x坐标,int终点的y坐标);使用这个试试从(10,10)到(100,100)画线,怎么样?应该是g.drawLine(10,10,100,

9、100)吧。对!但是坐标原点在哪里呢?恩?根据坐标原点的不同描画的情况应该也不相同。你说得对。坐标原点在画面的左上。N820的画面如下所示。左上角为原点,x轴的值向右逐渐变大,y轴的值向下逐渐变大。运行刚才的画线命令,如下所示。2.3. 描画四边形接下来我们试着画四边形。画四条线就行了吧。呵呵,是这样的。但Java里面也准备了专门描画四边形的方法。g.drawRect(int 定点的x坐标, int 定点的y坐标, int 高度, int 宽度);使用这个方法试试从(10,10)画高100宽100的正方形,应该怎么做? 应该是g.drawRect(10,10,100,100)。2.4. 画圆下

10、面我们来画圆。好的。画圆的命令如下所示。g.drawArc(int 圆左上的x坐标, int 圆左上的y坐标, int 圆的宽度, int 圆的高度, int 圆的开始角度, int 圆弧的角度);各变量的表示法见下图。调整圆的高度、宽度,有时也会出现椭圆的情况。这个图最初画圆时应该怎么做呢?考虑一下。呃,把height与width设为相同数值,arcAngle设为360怎么样?你这样做试试吧。g.drawArc(100,100,80,80,0,360);恩。画的不错呀。圆弧的角度在360度以下时画出来的是弧。2.5. 改变颜色一直都用黑线画,是不是比较无聊呢。是啊,我想用红色或者黄色试试看。

11、呵呵,颜色的变换方法如下所示。g.setColor(int 红色的值, int 绿色的值, int 蓝色的值);红色、绿色与蓝色组合可以生成各种各样的颜色。果然。它们是三原色嘛。那我们就画一下红色的四边形吧。g.setColor(255,0,0);g.drawRect(10,10,100,100);红线被画出来了。那么涂满颜色的四边形也能被画出来么?描画涂满颜色的四边形也有专门的命令。如下所示。g.fillRect(int x坐标, int y坐标, int 高度, int宽度);draw系的方法只是描画图形的线条,而fill系的方法则把图形涂满。2.6. 显示图像下面的程序就变的稍微有点长了

12、。试试做一做图像的显示,图像是指照片之类的么?是的,那就先来显示尼克的图像吧。N820可以显示PNG形式的图像。首先,要准备PNG形式的文件。好的。下面制作表示图像文件的image object。image object?关于object,反正以后还要学习object指向,到时再说明吧。在这里,请把它当作程序里读取图像文件的数据。image object的制作方法如下所示。Image image = Image.createImage(图像文件的路径);此时若设定了错误的图像文件路径,就会出现error。在Java里为避免此类error,准备了“例外处理”。也就是定义了例外error发生时的处

13、理。例如,图像文件的路径错误,这样就会导致例外error的出现是吗?是的。这时一般就会出现“图像文件的路径错误”等信息。如下所示书写例外处理。try例外发生处理;例外发生处理;catch(Exception e)例外发生时的处理;例外发生时的处理;使用例外处理读取图像的程序如下所示书写。此程序是在模拟器的message panel里显示例外的内容而进行的例外处理。Image image = null; / 指定保存图像数据的变量的宣言tryimage = Image.createImage(图像文件的路径);catch(Exception e)e.printStackTrace(); / 显示

14、例外的内容上面的语句表示在image变量里读取图像文件的数据。但是,只是读取数据还不能显示出来。也有显示用的命令吧。被你猜对了,显示命令的写法如下所示。g.drawImage(image, int 显示位置的x坐标, int 显示位置的y坐标, int anchor);博士!anchor是什么东西啊?问的好!所谓的anchor point,是指决定图像位置的基准点。定义anchor point时,利用逻辑计算符号|,分别指定横方向和纵方向的常数。横方向纵方向Graphics.LEFTGraphics.HCENTERGraphics.RIGHTGraphics.TOPGraphics.BASEL

15、INEGraphics.VCENTERGraphics.BOTTOM恩。好像有一些难啊。习惯就好了。指定anchor point为 Graphics.LEFT | Graphics.TOP后,变成下面所示的图。两个指定的ancho交叉就是anchor point。那么指定 Graphics.HCENTER | Graphics.VCENTER的情况下又是什么样子呢?在画面的中间显示?对!是这样的。让我们实际在画面中间显示尼克的图像看看。画面的尺寸为高255,宽240。这么说,中间的坐标是(120 , 127)啊。恩?那么图像文件放哪里好呢?噢,是啊是啊。对于Project,把source co

16、de保存到“src”文件夹,再把“res”文件夹创建到“src”或者保存类文件的“bin”所在的文件夹内,在其中放置图像文件。接下来在模拟器中设定放置图像文件的文件夹。点击菜单的Options-MIDlet suite.。然后指定刚才保存图像文件的文件夹为Resource Directory。按“OK”键结束设定。这样的话会变成什么样子呢?Image image = null;try image = Image.createImage(/nicky.png); catch (IOException e) e.printStackTrace();g.drawImage(image,120,127

17、,Graphics.HCENTER|Graphics.VCENTER);我的脸显示出来了!做的不错啊!可是anchor point的BASELINE是指哪里啊?所谓的BASELINE是指利用在画面中显示文字的anchor point,在显示图像时使用的。呃!?也可以显示文字啊!要显示文需使用以下的方法,自己试试吧。drawString(将要显示的字符串, int x坐标, int y坐标, anchor point);/描画文字g.drawString(“Dr.JAVA”,120,127, Graphics.HCENTER | Graphics.BASELINE) 3. 下一讲本讲我们学会了如何显示简单的graphic。是的。家里的画好像利用线和四边形就可以画了。如果可以使用图像,那就更有意思了。恩。自己试着做一做也很重要。下一讲我们将学习使用终端的按键。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1