`
wuhua
  • 浏览: 2117469 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

j2me实现图片透明效果

    博客分类:
  • J2ME
阅读更多
原文地址 源代码下载到 http://javaeye.5d6d.com/thread-171-1-1.html

j2me实现图片透明效果

透明效果的设计,是开发游戏以及UI的常谈话题,小弟整理了下关于透明效果的嗲们,有兴趣的朋友可以看看

代码
/**
*
* @author Jagie
*
*/
public class ShadowMIDlet extends MIDlet {
Canvas c = new ShadowCanvas();
public ShadowMIDlet() {
}
protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(c);
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
}
/**
*
* @author Jagie
*
*/
class ShadowCanvas extends Canvas implements Runnable {
int w, h;
// 原始图片
Image srcImage;
// 原始图片的像素数组
int[] srcRgbImage;
// 渐变图片的像素数组
int[] shadowRgbImage;
int imgWidth, imgHeight;
int count;
public ShadowCanvas() {
w = this.getWidth();
h = this.getHeight();
try {
srcImage = Image.createImage("/av.png");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
imgWidth = srcImage.getWidth();
imgHeight = srcImage.getHeight();
// 制造原始图片的像素数组,用一个int来代表每一个像素,按位表示方式是:0xAARRGGBB
srcRgbImage = new int[imgWidth * imgHeight];
// 获取原始图片的所有像素,参见MIDP APPI文档
srcImage.getRGB(srcRgbImage, 0, imgWidth, 0, 0, imgWidth, imgHeight);
shadowRgbImage = new int[srcRgbImage.length];
System.arraycopy(srcRgbImage, 0, shadowRgbImage, 0,
shadowRgbImage.length);
// 渐变图片的所有像素已开始都是全透明的
for (int i = 0; i < shadowRgbImage.length; i++) {
shadowRgbImage &= 0x00ffffff;
}
new Thread(this).start();
}
public void paint(Graphics g) {
g.setColor(0, 0, 0);
g.fillRect(0, 0, w, h);
// 绘制渐变图片
g.drawRGB(shadowRgbImage, 0, imgWidth, (w - imgWidth) / 2,
(h - imgHeight) / 2, imgWidth, imgHeight, true);
g.setColor(0, 255, 0);
g.drawString("count=" + count, w / 2, 30, Graphics.HCENTER
| Graphics.TOP);
}
public void run() {
while (true) {
boolean changed = false;
// 改变渐变图片的每一个像素
for (int i = 0; i < shadowRgbImage.length; i++) {
// 获取渐变图片的某一像素的alpha值
int alpha = (shadowRgbImage & 0xff000000) >>> 24;
// 原始图片的对应像素的alpha值
int oldAlpha = (srcRgbImage & 0xff000000) >>> 24;
if (alpha < oldAlpha) {
// alpha值++
shadowRgbImage = ((alpha + 1) << 24) | (shadowRgbImage & 0x00ffffff);
changed = true;
}
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
count++;
repaint();
// 当所有像素的alpha值都达到原始值后,线程运行结束
if (!changed) {
System.out.println("over");
break;
}
}
}
}





分享到:
评论
1 楼 wuhua 2007-08-27  
没人顶啊

相关推荐

    j2me半透明图片实现

    在J2ME(Java 2 Micro Edition)平台上,开发移动应用程序时,有时我们需要处理图片,包括显示、缩放以及实现半透明效果。本篇将详细解释如何在J2ME中实现半透明图片以及图片的缩放功能。 首先,让我们探讨如何实现...

    j2me图片透明操作

    本文将深入探讨如何在J2ME中实现图片的透明效果。 首先,了解基本的J2ME图形API是必要的。在J2ME中,`Graphics` 类是用于在显示屏上绘制图形的核心类。它提供了多种方法来绘制线条、矩形、文本以及位图(图片)。...

    java j2me上的图片抖动效果 特效

    在J2ME平台上实现图片的抖动特效,是一种增强用户交互体验的技术,通常用于游戏或者动画设计中。这种特效可以通过编程实现,让图片在屏幕上以一种不规则的方式移动,营造出一种动态的视觉效果。 实现图片抖动特效的...

    J2ME手机开发中得透明图片处理

    在J2ME中,`Image`类通过`createRGBImage`方法创建带有透明效果的图片。该方法接受一个整型数组作为参数,数组中的每个元素代表一个像素的颜色值。颜色值采用ARGB格式,其中A表示Alpha通道,即透明度;R、G、B分别...

    j2me游戏素材(图片合集)

    1. 图片格式:J2ME支持GIF、PNG和WBMP等格式,但PNG因其优秀的透明度支持和较小的文件大小,常被优先选用。 2. 图片优化:由于J2ME设备的内存和处理能力有限,开发者需要对图片进行压缩和尺寸调整,以减少内存占用并...

    J2ME项目图片可以作为开发

    常见的格式有GIF、PNG和JPEG,其中PNG支持透明度,适用于需要精细图形和半透明效果的场合。开发者需要根据实际需求进行图片压缩和尺寸调整,以确保在各种设备上流畅运行。 4. **使用素材的注意事项** 在使用这些...

    j2me 的关于图片的处理 源码(缩放,裁剪,调整大小,镜像,对比度亮度调整,黑白,线条,粉笔画)

    线条艺术效果通常通过查找边缘并将非边缘像素设为透明来实现。`lineArt()` 方法可能使用边缘检测算法(如Canny算法)来实现。 9. **粉笔画效果**: 粉笔画效果模仿了传统的粉笔画风格,可能涉及模糊处理和色彩减淡...

    在移动设备上用J2ME实现动画.pdf

    - 如果使用了`clipList`,则根据不同的剪裁矩形绘制同一图片的不同部分,从而模拟出透明效果。 ```java public void advance(boolean repaint) { if (++current &gt;= images.length) { current = 0; } if ...

    J2ME插值算法实现图片的放大缩小

    本文主要讨论如何使用插值算法在J2ME环境中实现图片的放大和缩小。首先,我们需要理解图像缩放的基本原理。 1. 图像缩放的基本思想: 图像放大或缩小涉及到图像坐标系统的变换。在放大图像时,新的目标图像坐标可能...

    J2ME赛车手机游戏

    为了让游戏更生动,我们需要实现赛车和环境的动画效果。这通常通过改变赛车的位置、角度或速度来实现。在J2ME中,可以利用定时器每隔一定时间更新赛车状态,然后在Canvas上重新绘制,以形成连续的动画效果。 **输入...

    j2me中改变图片大小

    下面我们将深入探讨如何在J2ME中实现图片大小的调整。 首先,J2ME中的图像通常以`Image`对象的形式存在,我们可以使用` javax.microedition.lcdui.Image` 类来操作它们。由于J2ME的资源限制,直接对大图片进行操作...

    j2me 游戏 连连看 源码,很牛

    同时,为了提供良好的用户体验,消除后的动画效果也很重要,这可以通过改变方块透明度或移动方块位置来实现。 4. **资源管理**: 游戏中的图片、音频等资源需要有效管理。J2ME的Midlet类提供了一些资源加载方法,...

    在J2ME程序中制作Splash画面效果.zip

    下面将详细介绍如何在J2ME程序中实现这一效果。 首先,理解J2ME的基础。J2ME是Java平台的一个子集,专门设计用于嵌入式设备,如移动电话和PDA。它由配置(Configurations)和 profiles(Profiles)组成,如MIDP...

    J2ME开发网提供的PNG素材打包下载

    这可能包括帧序列、精灵动画或者使用位图效果库来实现平滑的过渡效果。PNG素材可以被切割成多个帧,然后通过编程逻辑进行动态组合和播放。 在J2ME开发中,处理PNG素材需要了解如何有效地进行资源加载、解码和绘制。...

    手机中的图片处理

    ### 手机中的图片处理:实现透明效果 在进行J2ME手机应用程序开发时,特别是在游戏开发领域,处理透明图片是一项常见的需求。由于J2ME平台的限制与特性,实现透明图片的效果需要采取一些特定的技术手段。本文将详细...

    j2me开发指南第三讲

    例如,可以调整图片的色彩、透明度,甚至进行图像合成操作。了解如何高效地处理图片对于优化性能和提升用户体验至关重要。 ### 2. Java 自制手机联网游戏 J2ME提供了网络通信的API,如 javax.microedition.io....

    J2ME优化压缩PNG文件.7z

    在移动设备上开发Java 2 Micro Edition (J2ME) 应用时,资源优化是至关重要的,尤其是图像..."J2ME优化压缩PNG文件.7z"这个压缩包可能包含了实现这些优化的具体代码示例或指导,对于J2ME开发者来说是非常有价值的资源。

    J2ME 飞机实例原代码

    在J2ME中,实现物体的移动通常涉及到坐标系统和时间管理。开发者会使用`PaintComponent`方法来绘制游戏画面,并通过更新物体的位置来模拟运动。例如,飞机可能有一个x和y坐标,每次游戏循环时,这些坐标会根据速度和...

Global site tag (gtag.js) - Google Analytics