仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1399|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA编程:J2ME进修条记(九)

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:36:00 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试)条记九

MIDP初级图形处置


MIDP所供应的图形处置办法都在javax.microedition.lcdui内里。次要是以下几个类:Display,Graphic

s,Canvas,Font,Image。
1、Display:
在每一个MIDlet当中是由一个Display,属于用Singleton

Pattern所封装起来的种别,必要利用getDisplay来获得。当利用setCurrent()办法,并同时将一个Dis

playable的子类作为参数就能够在屏幕上显现相干的画面。也可一用getCurrent()猎取以后正在感化的

Displayable的对象。同时为了获得屏幕相干的属性可使用isColor()前往屏幕是不是为黑色,numColors(

)前往屏幕所撑持的黑色数,假如前往值为2则为口角两色。每当Display的setCurrent办法失掉Canvas子

类作为参数的时分,MIDP体系会实行paint办法并将Graphics对象看成参数。内里有一点必要注重,因为

手持设备的屏幕巨细并非流动的,以是我们在添补背景致,远景色的时分有需要经由过程getWidth(),getHe

ight()两个办法获得屏幕的长、宽。
2、Image:
处置图形的时分会利用到Image类,依据Image类的发生体例能够分为可修正和不成修正的两个方面。

能够经由过程isMutable办法失掉此Image类是不是能够修正。还能够经由过程getWidth(),getHeight()办法获得Imag

e对象的长,宽。
能够经由过程读取图象文件,收集下载,resourcebundle等体例创立一个不成修正的image对象。一旦创

建不成修正image对象,那末这个图象的内容将不成再次变动。

packagecom.graph;

/**
*@authorYouLi
*
*CopyRight(C)2005*/
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;

publicclassImageExextendsMIDletimplementsCommandListener{

privateCommandcmdExit;
privateImageCanvascanvas;

publicImageEx(){
cmdExit=newCommand("Exit",Command.SCREEN,2);
canvas=newImageCanvas();
//TODO主动天生机关函数存根
}

protectedvoidstartApp()throwsMIDletStateChangeException{
//TODO主动天生办法存根
canvas.addCommand(cmdExit);
canvas.setCommandListener(this);
Display.getDisplay(this).setCurrent(canvas);
}

protectedvoidpauseApp(){
//TODO主动天生办法存根

}

protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
//TODO主动天生办法存根

}

publicvoidcommandAction(Commandcommand,Displayablescreen){
if(command==cmdExit){
notifyDestroyed();
}
}

}

packagecom.graph;

/**
*@authorYouLi
*
*CopyRight(C)2005*/
importjavax.microedition.lcdui.*;

publicclassImageCanvasextendsCanvas{

publicvoidpaint(Graphicsg){
try{
Imageimage=Image.createImage("/JavaPowered-2.png");
g.drawImage(image,0,0,Graphics.TOP|Graphics.LEFT);
}catch(Exceptione){
e.printStackTrace();
}
}

}

创建如上两个类,然后运转程序就能够看到图片显现在摹拟器的屏幕上了。例子中我们用createImage

读取一个存在的图片来创建一个不成变动的Image对象。另有别的两个机关函数也是用来创建不异的image

对象,一个是createImage(byte[]imagedata,intimageoffset,int

imageLength),另有一个就是createImage(Imagesource)。
固然,假如我们要构建一个能够修正的image对象那末可使用机关函数createImage(intwidth,int

height)。由于一个可修正的image对象实践就是可否在背景绘图的offscree,以是在创建一个能够修正

的image对象之前应当利用Canvas的isDoubleBuffered()办法断定设备是不是撑持此办法。

font字体

Font.getDefaultFont()--失掉体系默许的字体。
Font.getFont()--失掉以后所利用的字体。(getFace()『isBold();isItalic();isPlain();
isUnderlined()』,getStyle(),getSize())
Font.setFont()--设置字体
关于font一共有三个参数:
face:Graphics.FACE_MONOSPACE;Graphics.FACE_PROPORTIONAL;Graphics.FACE_SYSTEM
style:Graphics.STYLE_BOLD;Graphics.STYLE_ITALIC;Graphics.STYLE_PLAIN;
Graphics.STYLE_UNDERLINED
size:Graphics.SIZE_LARGE;Graphics.SIZE_MEDIUM;Graphics.SIZE_SMALL

关于font的几个主要的办法:
getBaseLinePosition();getHeight();charWidth();charsWidth();stringWidth();
substringWidth()

定位点:

定位点界说了7个屏幕点:Graphics.TOP;Graphics.BOTTOM;Graphics.LEFT;Graphics.RIGHT;
Graphics.HCENTER;Graphics.VCENTER;Graphics.BASELINE。

3、Graphics

获得Graphics对象有两个办法,用paint()办法传进参数,还能够用Image类的getGraphics办法来失掉Graphics对象。二者区分在于paint办法失掉的Graphics对象我们能够使用相干办法在屏幕上画图,而使用getGraphics办法失掉的Graphics对象对任何呼唤不起感化。
绘图的时分我们在图形相干办法中利用的坐标不是代表象素自己,而是指象素与象素之间空格所组成的坐标!这个和我们传统的笛卡儿坐标的观点有些往表,并且是以屏幕左上方为0,0坐标。
Graphics对象的setColor(intred,intgreen,intblue)办法用来设置象素的色彩。getGrayScale()获得今朝所用的灰度,setGrayScale()则是用来设置灰度。MIDP中没有供应设置远景色背景致的办法,以是必需经由过程添补来处置。
笔墨和图形
笔墨利用drawChar(),drawChars(),drawString()
图形利用drawImage()
绘图和画面添补
线:drawLine(),有4个参数,分离输出x,y出发点右边,x,y尽头坐标
弧形:drawArc(),6个参数,前4个暗示弧形地点的矩形局限的坐标,第五个决意肇端角度,第六个决意弧形所涵盖第角度。
矩形:drawRect(),4个参数,x、y出发点坐标,宽,长
园角矩形:drawRoundRect()6个参数,前4个暗示弧形地点的矩形局限的坐标,第五个是园角所在矩形第宽度,第六个暗示矩形的高度。
添补弧形:fillArc(),6个参数,前四个决意弧形地点矩形的局限,第五个决意肇端角度,第六个决意弧形所涵盖的角度
添补矩形:fillRect(),4个参数,x、y出发点坐标,宽,长
添补园角矩形:fillRoundRect(),6个参数,前4个暗示弧形地点的矩形局限的坐标,第五个是园角地点矩形第宽度,第六个暗示矩形的高度。




用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-22 03:13

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表