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.