原文地址 源代码下载到
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;
}
}
}
}
分享到:
相关推荐
在J2ME(Java 2 Micro Edition)平台上,开发移动应用程序时,有时我们需要处理图片,包括显示、缩放以及实现半透明效果。本篇将详细解释如何在J2ME中实现半透明图片以及图片的缩放功能。 首先,让我们探讨如何实现...
本文将深入探讨如何在J2ME中实现图片的透明效果。 首先,了解基本的J2ME图形API是必要的。在J2ME中,`Graphics` 类是用于在显示屏上绘制图形的核心类。它提供了多种方法来绘制线条、矩形、文本以及位图(图片)。...
在J2ME平台上实现图片的抖动特效,是一种增强用户交互体验的技术,通常用于游戏或者动画设计中。这种特效可以通过编程实现,让图片在屏幕上以一种不规则的方式移动,营造出一种动态的视觉效果。 实现图片抖动特效的...
在J2ME中,`Image`类通过`createRGBImage`方法创建带有透明效果的图片。该方法接受一个整型数组作为参数,数组中的每个元素代表一个像素的颜色值。颜色值采用ARGB格式,其中A表示Alpha通道,即透明度;R、G、B分别...
1. 图片格式:J2ME支持GIF、PNG和WBMP等格式,但PNG因其优秀的透明度支持和较小的文件大小,常被优先选用。 2. 图片优化:由于J2ME设备的内存和处理能力有限,开发者需要对图片进行压缩和尺寸调整,以减少内存占用并...
常见的格式有GIF、PNG和JPEG,其中PNG支持透明度,适用于需要精细图形和半透明效果的场合。开发者需要根据实际需求进行图片压缩和尺寸调整,以确保在各种设备上流畅运行。 4. **使用素材的注意事项** 在使用这些...
线条艺术效果通常通过查找边缘并将非边缘像素设为透明来实现。`lineArt()` 方法可能使用边缘检测算法(如Canny算法)来实现。 9. **粉笔画效果**: 粉笔画效果模仿了传统的粉笔画风格,可能涉及模糊处理和色彩减淡...
- 如果使用了`clipList`,则根据不同的剪裁矩形绘制同一图片的不同部分,从而模拟出透明效果。 ```java public void advance(boolean repaint) { if (++current >= images.length) { current = 0; } if ...
本文主要讨论如何使用插值算法在J2ME环境中实现图片的放大和缩小。首先,我们需要理解图像缩放的基本原理。 1. 图像缩放的基本思想: 图像放大或缩小涉及到图像坐标系统的变换。在放大图像时,新的目标图像坐标可能...
为了让游戏更生动,我们需要实现赛车和环境的动画效果。这通常通过改变赛车的位置、角度或速度来实现。在J2ME中,可以利用定时器每隔一定时间更新赛车状态,然后在Canvas上重新绘制,以形成连续的动画效果。 **输入...
下面我们将深入探讨如何在J2ME中实现图片大小的调整。 首先,J2ME中的图像通常以`Image`对象的形式存在,我们可以使用` javax.microedition.lcdui.Image` 类来操作它们。由于J2ME的资源限制,直接对大图片进行操作...
同时,为了提供良好的用户体验,消除后的动画效果也很重要,这可以通过改变方块透明度或移动方块位置来实现。 4. **资源管理**: 游戏中的图片、音频等资源需要有效管理。J2ME的Midlet类提供了一些资源加载方法,...
下面将详细介绍如何在J2ME程序中实现这一效果。 首先,理解J2ME的基础。J2ME是Java平台的一个子集,专门设计用于嵌入式设备,如移动电话和PDA。它由配置(Configurations)和 profiles(Profiles)组成,如MIDP...
这可能包括帧序列、精灵动画或者使用位图效果库来实现平滑的过渡效果。PNG素材可以被切割成多个帧,然后通过编程逻辑进行动态组合和播放。 在J2ME开发中,处理PNG素材需要了解如何有效地进行资源加载、解码和绘制。...
### 手机中的图片处理:实现透明效果 在进行J2ME手机应用程序开发时,特别是在游戏开发领域,处理透明图片是一项常见的需求。由于J2ME平台的限制与特性,实现透明图片的效果需要采取一些特定的技术手段。本文将详细...
例如,可以调整图片的色彩、透明度,甚至进行图像合成操作。了解如何高效地处理图片对于优化性能和提升用户体验至关重要。 ### 2. Java 自制手机联网游戏 J2ME提供了网络通信的API,如 javax.microedition.io....
在移动设备上开发Java 2 Micro Edition (J2ME) 应用时,资源优化是至关重要的,尤其是图像..."J2ME优化压缩PNG文件.7z"这个压缩包可能包含了实现这些优化的具体代码示例或指导,对于J2ME开发者来说是非常有价值的资源。
在J2ME中,实现物体的移动通常涉及到坐标系统和时间管理。开发者会使用`PaintComponent`方法来绘制游戏画面,并通过更新物体的位置来模拟运动。例如,飞机可能有一个x和y坐标,每次游戏循环时,这些坐标会根据速度和...