在J2ME中合成2个图像

时间:2014-02-13 08:40:46

标签: java-me

我打算在J2ME表单中安装水平和垂直居中的图像。但是我找不到有用的标记元素。因此,我打算创建一个完全透明的图像,其大小与表单元素的大小相同,并将我想要的图像叠加在其中心。并将生成的图像放在表单中(不使用画布)。我正在寻找这样做的方法因为我对J2ME的了解有限。

请帮忙吗?

public static Image CreateCompositeImage(Image oImage,int formWidth,int formHeight){

    final int imageWidth=oImage.getWidth();
    final int imageHeight=oImage.getHeight();
    int[] imge=new int[imageWidth*imageHeight];
    oImage.getRGB(imge,0,imageWidth,0,0,imageWidth,imageHeight);
    final int topMargin=(formHeight-imageHeight)/2;
    final int leftMargin=(formWidth-imageWidth)/2;
    final int pixelTop=topMargin*formWidth;

    int[] c=new int[formWidth*formHeight];
    int p=0, r=0;
    for (int i=0;i<pixelTop;i++){
        c[p++]=0xff000000;
    }
    for (int j=0;j<imageHeight;j++){
        for (int i=0;i<leftMargin;i++){
            c[p++]=0x880000ff;
        }
        for (int i=0;i<imageWidth;i++){
            c[p++]=imge[r++];
        }
        for (int i=0;i<leftMargin;i++){
            c[p++]=0x8800ff00;
        }
    }
    int pixelBottom=formWidth*formHeight-p;
    for (int i=0;i<pixelBottom;i++){
        c[p++]=0xffffffff;
    }
    return Image.createRGBImage(c,formWidth,formHeight,true);
}

1 个答案:

答案 0 :(得分:0)

更好的方法是创建从CustomItem继承的新类,或者使用Canvas而不是Form。

在这两种情况下,您都会覆盖paint()方法。 在那里你得到一个图形对象。你用这个对象做你的绘图。 特别适合你,它有一个drawImage()方法,你可以放在这个位置。 然后,您不需要像素数据操作。

重写CustomItem或Canvas是您在Java-me编程中经常做的事情,因此值得学习。