Comment dessiner des images PNG avec une taille et une position spécifiques à l'écran? P>
4 Réponses :
quelque part dans une fonction d'initialisation: et dans la fonction de peinture de votre toile: p> (où g est les graphiques Objet Vous obtenez de la fonction de peinture) P> EDIT: Fixe Petite erreur comme indiqué dans Commentaires P> P>
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: ou pour une image Taille d'origine deux fois: P> EncodedImage twiceSize = myImage.scaleImage32(Fixed32.tenThouToFP(5000), Fixed32.tenThouToFP(5000));
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.
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; } } }
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.