Изображение PNG плохо окрашено, если установлено в качестве фонового изображения формы LWUIT - PullRequest
0 голосов
/ 23 ноября 2011

Я хочу сделать 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;
    }
    ...
}

Я заметил, что когда я открываю фотографию вручную, то есть из папки с фотографиями в памяти телефона, то фотография не изменяется!

Так как сделатьизображение не изменяется при установке его в качестве фонового изображения формы?

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

LWUIT по умолчанию использует масштабирование для фоновых изображений.Он всегда будет масштабировать изображения, если вы явно не спросите стиль о различном поведении, например, мозаика, выравнивание и т. Д. Попробуйте:

myForm.getStyle().setBackgroundType(Style.BACKGROUND_IMAGE_ALIGNED_CENTER);
1 голос
/ 24 ноября 2011

Проверьте, выглядит ли изображение, считанное из файла, т.е. sourceImage, как на обычном телефонном устройстве. Если нет, то проблема здесь.

Если вы видите sourceImage правильно, то есть некоторые вещи, которые необходимо оценить при получении масштабированного изображения.

  1. В случае, если ширина / высота области содержимого формы меньше ширины / высоты изображений, чем будет лучше, используйте

    Image thumb = image.scaledSmallerRatio(this.getWidth(), this.getHeight()); ПРИМЕЧАНИЕ: Да, это getWidth (), а не getPreferredW (). Если вы не получили желаемого результата, попробуйте масштабировать с помощью getPreferredW ().

  2. В случае, если ширина / высота вашего изображения меньше ширины / высоты формы contentPane, вы также можете не масштабировать его, поскольку изображение будет соответствовать экрану.

...