我想将png
图像作为LWUIT表单的背景图像。问题是图像被更改:将图像设置为窗体的背景图像后,图像中有污点。这是代码:
public class DetailPhotoClient extends Form implements ActionListener {
private Command options, delete, back, annuler, ok;
private GaleriePhotos backForm;
private FileConnection fcFile;
private Image sourceImage, fullImage;
private InputStream is;
private PopupMenu popup;
public DetailPhotoClient(GaleriePhotos prevForm, String absolutePathphotoName)
{
super();
back = new Command("Retour");
options = new Command("Options");
this.addCommand(back);
this.addCommand(options);
this.addCommandListener(this);
delete = new Command("Supprimer");
annuler = new Command("Annuler");
ok = new Command("Ok");
backForm = prevForm;
try {
fcFile = (FileConnection) Connector.open(absolutePathphotoName, Connector.READ);
is = fcFile.openInputStream();
sourceImage = Image.createImage(is);
fullImage = createThumbnail(sourceImage);
setBgImage(fullImage);
is.close();
fcFile.close();
} catch (IOException ex) {
handleException();
} catch (OutOfMemoryError oom) {
handleOOM();
}
}
private Image createThumbnail(Image image) {
Image thumb = image.scaled(this.getPreferredW(), this.getPreferredH());
return thumb;
}
...
}
我注意到当我手动打开照片时,那是来自手机记忆库的照片文件夹,然后照片就不会改变了!
那么在将图像设置为Form的背景图像时如何使图像不被改变?
答案 0 :(得分:1)
验证从文件读取的图像(即sourceImage
)是否在本机电话设备中看到。如果不是这样的问题就在这里。
如果您能够看到sourceImage
正确,那么在获取缩放图像时需要评估一些事项。
如果您的表单contentPane的宽度/高度小于图片宽度/高度,则使用
更好的选项 Image thumb = image.scaledSmallerRatio(this.getWidth(), this.getHeight());
注意:是,它的getWidth()而不是getPreferredW()。如果您没有获得所需的结果,请尝试使用getPreferredW()进行缩放。
如果您的图片的宽度/高度小于form contentPane的宽度/高度,您可能也不会缩放它,因为图像适合屏幕。
答案 1 :(得分:1)
默认情况下,LWUIT会对背景图像使用缩放。它将始终缩放图像,除非您明确询问样式的不同行为,例如平铺,对齐等尝试:
myForm.getStyle().setBackgroundType(Style.BACKGROUND_IMAGE_ALIGNED_CENTER);