站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题半透明问题~

半透明问题~

摘要: 半透明问题~


我目前需要用nokia的api做半透明效果,下面是代码:

int col = 0x66FF0000;
int x = 50;
int y = 50;
int w = 50;
int h = 100;
g.setClip(x, y, w, h);
DirectUtils.getDirectGraphics(g).setARGBColor(col);
g.fillRect(x, y, w, h);

奇怪的是模拟器上有半透明的效果但是上真机就不行了(我试过QD和3230都不行),只能看到一个不透明的色块。有经验的朋友请看下如何修改?
另外,哪位知道如何用midp2来做半透明的效果?请一并告知,给高分。谢谢!



在别的地方看到的文章,MIDP2.0透明方法
public class TCanvas extends Canvas implements Runnable{
Image image;//要处理的图片
int argb[];
int a= 0;//把象素的透明度初始值设置为0,然后在线程中不断地增加这个值
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;

for(int i=0;i {
argb[i]=(a<<24) | (argb[i] & 0x00FFFFFF);// 修改最高2位的值
}
Thread t = new Thread(this);
t.start();
}

protected void paint(Graphics g) {
g.setColor(0xffffff);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(0);
g.drawImage(image,0,0,Graphics.TOP|Graphics.LEFT);
g.drawRGB(argb,0,image.getWidth(),0,100,image.getWidth(),image.getHeight(),true);// 画象素数组
g.drawString(a+"",10,90,Graphics.TOP|Graphics.LEFT);
}
public void run()
{
while(a<256)
{
//改变象素内容
for(int i=0;i {
argb[i]=(a<<24) | (argb[i] & 0x00FFFFFF);// 修改最高2位的值
}
repaint();//重绘屏幕
a++;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}



代码没错,我在7360上没有正常,估计是手机不支持混色


错了,我在7360上正常,不是没有正常,不好意思


to liujun999999(▄︻┻┳) :
意思是我的代码是对的?但是我在QD和3230上测试过都没半透明的效果啊。


呵呵,那我就不知道了,反正我的7360上是有效果的


另外谢谢lispace(lispace),不过我只想画一个半透明的方块,应该没那么复杂的吧,有简单的方法么~


最简单的办法,用PS做个方块,弄成半透明的


DirectGraphics dg = DirectUtils.getDirectGraphics(g);
int xx[] = new int[4];
int yy[] = new int[4];
xx[0] = 40;
yy[0] = 40;
xx[1] = 135;
yy[1] = 40;
xx[2] = 135;
yy[2] = 167;
xx[3] = 40;
yy[3] = 167;
dg.fillPolygon(xx,0,yy,0,4,0x80000000);

试试这段代码,我在QD上测试可以


学习


貌似QD不支持透明


gln([ACE]snake)的方法果然可以的!但是使用数组似乎有点浪费,有没有直接一点的画法?另外,哪位知道midp2里面画半透明的方块是怎样的(不是图片)?


midp2.0里画半透明的放块要先画到一个图片上,然后去修改图片的RGB信息,再包图片画出来


谢谢楼上,能否举个例?


import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class TT extends Canvas {

int b[] = new int[30*30];
public TT() {
super();

for(int i=0;i{
b[i] = 0x00ff0000 | 0xaa000000;
System.out.println(Integer.toHexString(b[i]));
}

}

protected void paint(Graphics g) {
g.fillRect(10,10,10,10);
g.drawRGB(b,0,30,0,0,30,30,true);
}

}
这样好了


到目前为止我只在6681上用drawRGB试验成功过半透明的效果




mark


机型如果不支持,一切都是白搭


↑返回目录
前一篇: 请教j2me或j2se程序要运行在装有wince的arm9机器上,怎搞法?有相关资料吗?
后一篇: 请教关于编写游戏主角等级的问题