频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

6.3.1 Image图片显示

作者: 荣钦科技 出处:电子工业出版社华章公司  2007-09-18 16:54    砖    好    评论   进入论坛
阅读提示:《J2ME手机游戏设计技术与实战》主要介绍了在手机上开发J2ME游戏的方法,第六章内容为手机游戏界面的介绍。本节为Image图片显示问题。

6.3  Canvas类中图片与文字的显示应用
Canvas类中,对象除了绘制图片,也可以显示文字。游戏设计中绝对无法离开二者的显示应用,关于屏幕调用和运行的方法,也全部包含在Graphics类和Font类中。
6.3.1  Image图片显示
Image类用于处理图形界面,Image类中包含将图片置入手机屏幕的方法,使用Graphics类的相关方法绘制屏幕如示例6-5所示,调用方法如下:
public void drawImage (Image img,
(int x,
int y,
int anchor)
在anchor点绘制图片。
public int getHeight ()
取得图片高度。
public int getWidth ()
取得图片宽度。
public boolean isMutable ()
图片是否可以修改。

图片显示时,以anchor点作为显示基准点,使用时有一定的规则。它直接调用Graphics类中的锚点位置常量:

public static final int HCENTER
图片或文本与锚点水平中央对齐。
public static final int VCENTER
图片或文本与锚点垂直中央对齐。
public static final int LEFT
图片或文本与锚点最左边对齐。
public static final int RIGHT
图片或文本与锚点最右边对齐。
public static final int TOP
图片或文本与锚点最上方对齐。
public static final int BOTTOM
图片或文本与锚点最下方对齐。
public static final int BASELINE
图片或文字靠基准线对齐。

如图6-7所示。

图6-7  手机图片显示锚点示意图

Graphics类还有针对文字字型Font对象的应用,也是以这种对齐方式来显示。基本调用方法如下:

public void drawChar (char character,
int x,
int y,
int anchor)
使用当前设置的颜色和Font,绘制出一个字符(character)。(x,y)为显示起点,anchor为锚点。

public void drawChars(char[] data,
int offset,
int length,
int x,
int y,
int anchor)
使用当前颜色和Font设置,绘制出数组中的部分字符(data)。以offset为字符起始值,长度为length,(x,y)为显示起点,anchor为锚点。

public void drawString (String str,
int x,
int y,
int anchor)
使用当前颜色和Font设置,绘制出字符串(str)。

public void drawString (String str,
int offset
int len
int x,
int y,
int anchor)
使用当前颜色和Font设置,绘制出部分字符串(str)。
示例6-5


第一个安装JDK的ava程序测试
×/
import javax.microedition.midlet.×;
import javax.microedition.lcdui.×;
public class canvasDemo2 extends MIDlet
{
Display display;
canvasAnchor canvasanchor;
   public canvasDemo2()
{
canvasanchor=new canvasAnchor();
display=Display.getDisplay(this);
}
   public void startApp()
{
display.setCurrent(canvasanchor);
}
   public void pauseApp(){}
   public void destroyApp(boolean unconditional){}
   class canvasAnchor extends Canvas 
{
int     gameaction=0;
int     moveX=0;
int     moveY=0;
int[]   moveLR={Graphics.RIGHT, Graphics.HCENTER, Graphics.LEFT};
int[]   moveUD={Graphics.BOTTOM, Graphics.VCENTER, Graphics.TOP};
String[] anchorLR={"Graphics.RIGHT", "Graphics.HCENTER", "Graphics. LEFT"};
String[] anchorUD={"Graphics.BOTTOM", "Graphics.VCENTER", "Graphics. TOP"};
Image   pictureImage;
      public canvasAnchor()
{
try{
pictureImage=Image.createImage("/picture.png");
}catch(Exception ex){}
}

public void keyPressed(int keyCode)
{
gameaction=getGameAction(keyCode);
switch(gameaction)
{
case LEFT:
moveX--;
if(moveX<0) moveX=0;
repaint();
break;
case RIGHT:
moveX++;
if(moveX>2) moveX=2;
repaint();
break;
case UP:
moveY--;
if(moveY<0) moveY=0;
repaint();               
break;
case DOWN:   
moveY++;
if(moveY>2) moveY=2;
repaint();           
break;
}
}
public void paint(Graphics g)
{
g.setColor(0xFFFFFF);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0);
g.drawString("游戏图片的锚点", getWidth()/2, 2, Graphics.HCENTER |
Graphics.TOP);
g.drawString("状态:"+anchorLR[moveX]+" 左右数值:"+String.va lueOf
(moveLR[moveX]),
0, 22, Graphics.LEFT | Graphics.TOP);
g.drawString("状态:"+anchorUD[moveY]+" 上下数值:"+String.valueOf
(moveUD[moveY]),
0, 42, Graphics.LEFT | Graphics.TOP);
g.drawImage(pictureImage, getWidth()/2, 117, moveLR[moveX] |
moveUD[moveY]);
g.drawLine(0,117,getWidth(),117);
g.drawLine(getWidth()/2,57,getWidth()/2,177);
}
}
}
运行结果如图6-8所示。
图6-8
【说明】
从程序中可看到,随着anchor点的变化,图片显示点的坐标位置也会不同。所以设计游戏时,一定要注意anchor锚点不要随意变动,最好保持锚点不变。如果需要图片变更位置,以变换(X,Y)轴坐标位置来实现。
【责任编辑:雪花 TEL:(010)68476606-8007】

回书目   上一节   下一节
专题
Java实用开发全集
J2ME手机开发技术基础
Java类的基础教程专题
Java发展动态专题
手机病毒揭密
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
浏览器的战国时代
浏览器的战国时代
ARP攻击防范与解决方案
ARP攻击防范与解决方案
NAC安全访问控制
NAC安全访问控制
· NAC安全访问控制
· 网络布线测试仪器
· Windows Server 2008专..
· Windows远程桌面应用
· 网络故障排除宝典
· 运营商封堵ADSL共享 中..
· 解析35岁技术人的价值..
· 世纪枭雄比尔盖茨的王..
· 主流品牌防火墙配置
· ASP.NET开发教程
· 超级计算机TOP500专题
· Vista SP1对决XP SP3
· SQL Server 2008/2005..
· 程序员如何成长?
· C#技术开发指南
· 虚拟化技术还有点“虚”
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Windows远程桌面应用
· C#技术开发指南
· Apache技术专题
· Windows集群服务应用
· C#技术开发指南
· 国际文档格式标准开战
· 路由器设置与口令恢复
· Linux 集群技术专题
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SQL Server入门到精通
SQL Server入门到精通
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· C#技术开发指南
· 三层交换技术专题
· Apache技术专题
· C#技术开发指南
· Windows远程桌面应用
· 企业数据恢复指南
· Windows集群服务应用
· 路由器设置与口令恢复
· Linux 集群技术专题
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 反垃圾邮件技术应用