6
votes

BlackBerry - Dessinez une image sur l'écran

Comment dessiner des images PNG avec une taille et une position spécifiques à l'écran?


0 commentaires

4 Réponses :


4
votes

quelque part dans une fonction d'initialisation: xxx

et dans la fonction de peinture de votre toile: xxx

(où g est les graphiques Objet Vous obtenez de la fonction de peinture)

EDIT: Fixe Petite erreur comme indiqué dans Commentaires


0 commentaires

2
votes

Si vous utilisez net.rim.device.api.system.pngendedimage ou l'une des autres classes étendues de net.rim.device.api.system.encodedimage Vous pouvez utiliser la méthode Swalimage32 (int Scalex, int Sculpy) ( Disponible dans OS 4.2 et ce dernier) pour augmenter l'image à la taille souhaitée. Sachez que Scalex and Sculpy, bien que dactylographié comme INT est en réalité net.rim.device.api.math.fixed32 afin d'afficher l'image à une demi-taille: xxx pré>

ou pour une image Taille d'origine deux fois: P>

EncodedImage twiceSize = myImage.scaleImage32(Fixed32.tenThouToFP(5000), Fixed32.tenThouToFP(5000));


2 commentaires

Le seul inconvénient est que le code utilise uniquement des classes de bord et n'est donc pas portable à aucun autre périphérique Java.


Vrai, mais votre réponse ne remplit que l'une des deux exigences spécifiées par l'OP.



27
votes

Redimensionner Image
class ScrLayout extends MainScreen {
    int mScrWidth = Display.getWidth();
    int mScrHeight = Display.getHeight();
    int mImgWidth = 80;
    int mImgHeight = 80;
    int mImgMargin = 10;
    String fileNames[] = { "1.png", "2.png", "3.png", "4.png", "5.png",
            "6.png", "7.png", "8.png", "9.png" };
    BitmapField[] mBmpFields;

    public ScrLayout() {
        super(VERTICAL_SCROLL | VERTICAL_SCROLLBAR);
        prepareBmpFields();
    }

    private void prepareBmpFields() {
        LayoutManager manager = new LayoutManager();
        add(manager);
        mBmpFields = new BitmapField[fileNames.length];
        for (int i = 0; i < fileNames.length; i++) {
            EncodedImage image = EncodedImage
                    .getEncodedImageResource(fileNames[i]);
            image = sizeImage(image, mImgWidth, mImgHeight);
            mBmpFields[i] = 
                new BitmapField(image.getBitmap(), FOCUSABLE);
            manager.add(mBmpFields[i]);
        }
    }

    class LayoutManager extends VerticalFieldManager {
        public LayoutManager() {
            super(VERTICAL_SCROLL | VERTICAL_SCROLLBAR);
        }

        protected void sublayout(int width, int height) {
            int columns = mScrWidth / (mImgWidth + 2 * mImgMargin);
            for (int i = 0, j = 0; i < mBmpFields.length; i++) {
                int posX = j * (mImgWidth + 2 * mImgMargin) + mImgMargin;
                int posY = i * (mImgHeight + 2 * mImgMargin) + mImgMargin;
                Field field = mBmpFields[i];
                layoutChild(field, mImgWidth, mImgHeight);
                setPositionChild(field, posX, posY);

                j = (j == columns - 1) ? 0 : j + 1;
            }
            setExtent(mScrWidth, mScrHeight);
        }
        public int getPreferredWidth() {
            return mScrWidth;
        }
        public int getPreferredHeight() {
            return mScrHeight;
        }
    }
}


0 commentaires

0
votes
private VerticalFieldManager mainBackVerticalFieldManager = null;

int deviceWidth = Display.getWidth();
int deviceHeight = Display.getHeight();    

mainBackVerticalFieldManager   = new VerticalFieldManager(VerticalFieldManager.NO_VERTICAL_SCROLL|VerticalFieldManager.NO_VERTICAL_SCROLLBAR){
        protected void paint(Graphics graphics) {
            graphics.clear();
            graphics.drawBitmap(0, 0, deviceWidth,deviceHeight,Bitmap.getBitmapResource(Constants.PURCHASE_SUMMARY_BG), 0,0);
            super.paint(graphics);
        };
    };
Here you can change deviceWidth and height as your requirement.

0 commentaires