0

pngLWUITフォームの背景画像として画像を作りたいです。問題は、画像が変更されていることです。フォームの背景画像として設定した後、画像に汚れがあります。ここにコードがあります:

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;
    }
    ...
}

電話のメモリの写真フォルダから手動で写真を開くと、写真が変更されていないことに気付きました。

では、フォームの背景画像として設定するときに画像を変更しないようにするにはどうすればよいですか?

4

2 に答える 2

1

ファイルから読み取られた画像sourceImageがネイティブの電話デバイスで見られるものであるかどうかを検証します。そうでない場合、問題はここにあります。

あなたがsourceImage正しいものを見ることができるならば、拡大縮小された画像を得るために評価されるべきいくつかの事柄があります。

  1. フォームのcontentPaneの幅/高さが画像の幅/高さよりも小さい場合は、より適切なオプションが使用されます

    Image thumb = image.scaledSmallerRatio(this.getWidth(), this.getHeight()); 注:はい、getWidth()であり、getPreferredW()ではありません。希望する結果が得られない場合は、getPreferredW()を使用してスケーリングしてみてください。

  2. 画像の幅/高さがフォームcontentPaneの幅/高さよりも小さい場合は、画像が画面に収まるため、拡大縮小しない方がよいでしょう。

于 2011-11-23T21:10:48.763 に答える
1

LWUIT はデフォルトで背景画像のスケーリングを使用します。タイリング、整列など、スタイルに異なる動作を明示的に要求しない限り、常に画像をスケーリングします。試してください:

myForm.getStyle().setBackgroundType(Style.BACKGROUND_IMAGE_ALIGNED_CENTER);
于 2011-11-24T09:32:01.897 に答える