-
在J2ME中如何使用 Graphics对象来画背景透明的图片40
创建一个Image对象, 然后适用Image对象的getGraphics() 方法得到Graphics对象,然后使用Graphics对象来画这个图片, 如何画出背景透明的图片呢?
问题补充:
没看明白你说的什么意识:
在详细说下我要实现的效果:
image = Image.createImage(20, 20);
Graphics g = image .getGraphics();
g.setColor(imageColor);
g.setFont(font);
g.drawString("STATE", 0,0,Graphics.LEFT|Graphics.TOP);
然后我需要画出来的这个image 对象是背景透明的图片。
如果我把这个图片显示在一个文字上方, 可以看到图片下的文字。
问题补充:
to: yingjinsheng
MIDP 2.0 ,2.1 中有
Color color = new Color(0,0,0,255);
g.setColor(color);
这个类和方法吗?
问题补充:
to:zhai puhong
你这个是直接操作png图片格式的数据,如果png图片本身就是背景透明的, 不用做变换就是透明的,对于一个背景透明的图片,我测试了下, 把a未设置为0和255效果是一样的。
我要实现的是画出一个背景透明的图片。一般的画图方法如下:
image = Image.createImage(20, 20);
Graphics g = image .getGraphics();
g.setColor(bgColor); //这里先设置背景色
g.fillRect(0,0,20,20);//然后填充背景色
g.setColor(imageColor);//然后在画图片的内容
g.setFont(font);
g.drawString("STATE", 0,0,Graphics.LEFT|Graphics.TOP);
要实现的效果, 只要图片的背景色是透明的就可以了。2008年8月06日 13:13
3个答案 按时间排序 按投票排序
-
楼主,这里有一篇讲MIDP2.0中图片象素级处理之半透明处理的原理和例子:
http://dev.yesky.com/92/2355592.shtml
原文引用:
“MIDP2.0中提供了对图片的象素级的处理,利用这一点,我们可以对图片进行相关的处理,比如半透明,把彩色图片处理成灰度图片,以及图片变色效果都可以在J2ME里很方便地实现。
在进行这些操作之前,我们必须先了解JAVA中的一些位操作符:
<<,>>,&,|,主要是这几个操作符,下面我们就开始我们的操作
1、半透明处理
在PNG里每个象素是一个ARBG格式,是一个8位的十六进制的数字,比如0xff121212,这个东西描述了图片的一个象素,我们可以通过Image类中的getRGB(int[] rgbData, int offset, int scanlength, int x, int y, int width, int height) 方法获得一个rgbData,这个rgbData就保存了图片所对应的象素信息,取出象素信息之后我们需要对其进行透明效果的处理,透明效果的值是保存在8位中的最高2位,你可以把这个象素值转换成16进制输出,一般情况下最高2位应该都是为FF,也就是不透明,我们现在需要把这个FF改成一个比他小的值,那么我们的图片就透明了,最高位为00的时候图片就全透明了。
其实8位16进制对应了32位的2进制,那么我们可以通过下面的方法取出他的最高2位:
A = Argb>>24//把这个数向右移动24位,那么剩下的8位就是我们要的最高位了
修改之后我们再通过下面的方法可以把他存回去 Argb = a<<24 |( argb & 0x00FFFFFF);
那么我们通过循环把这个图片的所有象素信息都改变之后,在用改变的象素信息来构造一个图片,或者这个通过我们的Graphics 下面的drawRGB方法直接画出来的就是一个半透明效果的图片了,你可以在画这个图片之前先画一个其他的图片,这样你就可以很明显地看到效果了”
import java.io.IOException; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; /** * @author 刘军 * @version 1.0 */ public class TCanvas extends Canvas { Image image;//要处理的图片 int argb[]; public TCanvas() { super(); try { image = Image.createImage("/test.png");//导入图片 } catch (IOException e) { e.printStackTrace(); } argb = new int[image.getWidth()*image.getHeight()]; image.getRGB(argb,0,image.getWidth(),0,0,image.getWidth(),image.getHeight());//获得图片的ARGB值 int temp; int a= 100;//把象素的透明度都设置为100 for(int i=0;i<argb.length;i++) { argb[i]=(a<<24) | (argb[i] & 0x00FFFFFF);// 修改最高2位的值 } } protected void paint(Graphics g) { g.drawImage(image,0,0,Graphics.TOP|Graphics.LEFT); g.drawRGB(argb,0,image.getWidth(),0,100,image.getWidth(),image.getHeight(),true);// 画象素数组 } }
看看有没有用。2008年8月12日 08:34
-
Graphics g = image .getGraphics();
Color color = new Color(0,0,0,255);
g.setColor(color);
这样就可以设置透明了2008年8月09日 14:51
-
MIDP1.0的手机不支持图片透明的,除了NOKIA的.
g.translate(x,y); g.setClip(x,y,wid,hei);
另外,这篇文章也许能帮你http://www.iteye.com/topic/279372008年8月06日 13:26
相关推荐
本文将深入探讨如何在J2ME中实现图片的透明效果。 首先,了解基本的J2ME图形API是必要的。在J2ME中,`Graphics` 类是用于在显示屏上绘制图形的核心类。它提供了多种方法来绘制线条、矩形、文本以及位图(图片)。...
在本文中,我们将深入探讨如何在Java 2 Micro Edition (J2ME)环境中设置一个简单的背景。J2ME是一个轻量级的Java平台,主要用于移动设备和嵌入式系统,如手机、游戏机等。在J2ME应用程序中,设置背景可以提升用户...
- 首先,创建一个可变的`Image`对象,并使用`Graphics`对象在其上绘制所需的图片内容。 - 然后,使用`getRGB`方法获取这张图片的所有像素数据。 - 接下来,遍历这些像素数据,将需要变为透明的部分的Alpha通道置为0...
在J2ME中,可以使用`Graphics`类提供的方法对图片进行旋转。例如,`rotate(int x, int y, int angle)`方法可以在指定的(x, y)坐标上旋转当前的绘图区域,angle参数表示旋转的角度。对于描述中的“箭头图标旋转”,...
对于初学者来说,通过这些代码和图片,他们可以学习到如何在J2ME中处理图形、动画以及如何将这些元素整合到游戏中。 【标签】"玛丽"直指游戏主角——马里奥,这是任天堂公司出品的一款经典游戏中的主角,也是游戏史...
3. 图形绘图:J2ME的`Graphics`类提供了基本的绘图功能,如画线、填充形状、绘制文本和图片。开发者通常需要利用这些方法创建游戏中的角色、背景和其他元素。 4. 用户输入处理:J2ME通过`KeyListener`或`Command`...
2. **Graphics对象**:在`paint()`方法中,通过Graphics对象来绘制每个单元格的边框、背景和图标,以及处理文字的显示。 3. **监听器**:每个单元格都应关联一个点击事件监听器,当用户触摸屏幕时,触发相应的事件...
3. **构造函数**:在这个构造函数中,尝试加载背景图片,并检查是否存在异常。如果图片加载失败,则设置`imgexit`为`false`。 4. **`startApp()`方法**:这个方法负责启动应用程序。如果图片加载成功,则显示欢迎...
1. **图形渲染**:J2ME中的`Graphics`类用于绘制游戏画面,包括背景、方块、得分等元素。开发者需要精确控制每一帧的绘制,确保游戏流畅运行。 2. **对象管理**:方块由不同形状的小方块组成,这些小方块可以视为...
在J2ME中,可以使用`Graphics`对象的绘图方法来实现这一点,比如`drawImage()`。 在实际开发中,J2ME游戏菜单系统还需要考虑到以下几点: 1. **性能优化**:由于J2ME运行在资源有限的设备上,因此需要关注代码效率...
1. **图形和动画处理**:在J2ME中,使用`Graphics`对象进行绘图操作,包括画线、填充形状、绘制位图等。为了实现动画效果,通常需要定时更新`GameCanvas`的内容,如通过改变`Sprite`的位置来实现平移。 2. **事件...
4. **图形渲染**:J2ME使用` Graphics `对象进行绘图,开发者需要创建一个类来负责画布上的所有图形操作,包括绘制拼图块、背景、边框等。可能有一个名为` GameView `的类,它继承自` Canvas `或` Displayable `,并...
1. **基础图形绘制**:在J2ME中,使用`Graphics`类进行基本的图形绘制,包括线条、矩形、圆形、文本等。这些实例将展示如何使用`drawString()`, `drawRect()`, `fillRect()`, `drawOval()`等方法创建游戏界面。 2. ...
1. **Canvas类**:J2ME中的Canvas类是用于创建自定义图形界面的基础,开发者可以重写它的`paint()`方法来绘制小球和背景。 2. **Graphics类**:Canvas对象有一个Graphics实例,用于进行实际的绘图操作,如画线、...
在图形方面,J2ME使用低级的位图操作,开发者需要手动加载图片资源并将其转换为Graphics对象可以绘制的形式。游戏中的动画通常通过切换不同的帧或者平滑地改变图像位置来实现。射击游戏Demo可能包含了多个图像资源,...
在J2ME中,我们通常使用Sprite类来表示精灵。Sprite不仅包含图像数据,还包含了位置、大小、旋转角度等属性,可以进行移动、缩放和旋转等操作。创建精灵时,我们需要加载图片资源,并将其转换为适合J2ME环境的格式,...
J2ME游戏的音效管理也是重要一环,可能使用了MIDP API中的`MidiPlayer`或`AudioClip`来播放背景音乐和音效。此外,游戏的资源管理(如图片、音频文件)通常是通过加载类来完成的,以减少内存占用并提高性能。 在...
在J2ME中,图像通常被加载到内存,然后通过`Graphics`对象进行绘制。开发者会使用这些图片来构建游戏的视觉效果。 学习这个游戏源代码,初学者可以了解以下几个关键知识点: 1. **Java基础**:理解并掌握Java面向...
开发者需要使用它来画出游戏角色、敌人、子弹等元素,并通过更新坐标实现动态效果。`Canvas`类是游戏的主要画布,可以自定义绘制逻辑。 2. **事件处理**:玩家的输入,如触摸屏幕或按键,需要通过事件监听器处理。...
- 用户界面:使用J2ME的Graphics类绘制游戏画面,包括背景、瓷砖、计分板等元素。 - 事件处理:监听用户触摸或按键操作,触发相应的游戏行为。 - 状态管理:游戏可能有多个状态,如开始、进行中、结束等,需要一个...