仓酷云

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

[学习教程] 来看J2ME手机开辟中的通明图片处置

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
java是一种面向对象的编程语言,优点是可移植性比较高,最初设计时就是本着一次编写到处执行设计的。可以开发各种应用程序和游戏,不过速度没有c++快,所以一般是不用java来编写应用程序和电脑游戏。
在开辟J2ME手机程序的时分,特别是在开辟游戏的时分,通明图片几近是一种一定的需求,可是在游戏开辟中我们会接纳Sprite精灵来做图形元素的绘制,而这些图片素材大概都是来自于资本中的文件,这些文件假如接纳PNG等撑持通明设置的格局的话,通明的处置就会被精灵类主动完成,不必要我们出格处置了。假如碰到一些特别需求,好比某些图片大概必要经由过程程序来绘制,大概开辟者但愿用程序来绘制,那末这时候候本人绘制的图片怎样被通明地绘制在Canvas中呢?
通明图片的绘制在J2ME中不是经由过程Graphics的办法挪用完成的,而是经由过程将Image图片对象指定成通明图片对象来完成的。在Image中有一个办法叫createRGBImage(int[]rgb,intwidth,intheight,booleanprocessAlpha)。这个办法能够创立出一幅具有通明和半通明效果的图片,当如许的图片被绘制在屏幕上的时分,会主动体现为通明或半通明色。可是这个办法发生的图片有一个成绩,就是这个图片中的像素色彩是不成变的,也就是说这个对象的getGraphics()不克不及获得Graphics对象,也就不克不及经由过程程序自界说绘制图片。而我们所必要的就是要经由过程程序来绘制图片而且到达半通明效果。那末怎样办呢?
我们如许来处置,起首我们经由过程Image的createImage办法来创立一个可变图片,然后绘制自界说的图片数据内容。示例程序以下:  intw=32;
inth=24;
//创立可变的自界说图片,指定宽度和高度
ImagebufImg=Image.createImage(w,h);
Graphicsg=bufImage.getGraphics();
g.setColor(0xFFFFFF);
//利用红色绘制背景
g.fillRect(0,0,w,h);
//绘制必要的图片内容
g.setColor(0xFF0000);
g.fillRect(10,10,20,20);
  //绘制图片完成,如今必要获得图片中的数据内容。
//筹办一个数组用来寄存像素色彩
int[]imgData=newint[w*h];
//获得像素色彩
bufImg.getRGB(imgData,0,w*h,0,0,w,h);
下面程序完成了对自界说图片的像素色彩的提取,在J2ME中的Image是如许划定的,假如这是一个不成变图片,获得的每个像素色彩是一个int范例的值,假如其高位是00,也就是色彩为0x00RRGGBB的时分,这个像素就是完整通明的,假如是0xAARRGGBB,个中AA暗示通明度,如许的色彩暗示半通明,如今我们获得了自界说的可变图片的像素色彩值,接上去,我们必要创立不成变图片,而且要把红色的背景设置为完整通明的。  //将获得的保留在数组中的背景色彩的高位值设置为00
for(inti=0;i<imgData.length;i++){
if(imgData[i]&0x00FFFFFF==0x00FFFFFF){
imgData[i]=imgData[i]&0x00FFFFFF;
}
}
  //创立不成变通明图片,个中最初一个参数暗示通明。
ImageimmutableImg=Image.createRGBImage(imgData,w,h,true);
好了,到这里一个通明图片创立出来了,这个图片被绘制到Canvas大将会是一幅背景完整通明的图片。实在如许我们能够对这个功效封装一个办法,代码以下:createAlphaImage(Imageimg,intalphaColor){
intw=img.getWidth();
inth=img.getHeight();
int[]imgData=newint[w*h];
img.getRGB(imgData,0,w*h,0,0,w,h);
for(inti=0;i<imgData.length;i++){
if(imgData[i]&alphaColor==alphaColor){
imgData[i]=imgData[i]&alphaColor;
}
}
办法参数申明以下:
img-是不通明的原始图片片
alphaColor-是必要设为通明的像素色彩,格局为0x00RRGGBB.

主要缺点就是:速度比较慢,没有C和C++快
蒙在股里 该用户已被删除
沙发
发表于 2015-1-20 15:50:59 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
板凳
发表于 2015-1-29 12:44:01 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
飘飘悠悠 该用户已被删除
地板
发表于 2015-2-3 15:53:39 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
山那边是海 该用户已被删除
5#
发表于 2015-2-6 09:54:38 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
再见西城 该用户已被删除
6#
发表于 2015-2-8 06:22:29 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
莫相离 该用户已被删除
7#
发表于 2015-2-24 12:32:19 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
透明 该用户已被删除
8#
发表于 2015-3-7 12:14:48 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
活着的死人 该用户已被删除
9#
发表于 2015-3-15 04:37:09 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
爱飞 该用户已被删除
10#
发表于 2015-3-21 18:13:27 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-24 00:43

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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