我打算在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);
}
答案 0 :(得分:0)
更好的方法是创建从CustomItem继承的新类,或者使用Canvas而不是Form。
在这两种情况下,您都会覆盖paint()方法。 在那里你得到一个图形对象。你用这个对象做你的绘图。 特别适合你,它有一个drawImage()方法,你可以放在这个位置。 然后,您不需要像素数据操作。
重写CustomItem或Canvas是您在Java-me编程中经常做的事情,因此值得学习。