2012-12-21 4 views
1

J'ai écrit le code suivant ici l'image d'arrière-plan affiche, mais l'image ne couvrait pas le plein fondComment définir l'image de fond fitable en application BlackBerry

private Bitmap background; 
    int mWidth = Display.getWidth(); 
    int mHeight = Display.getHeight(); 

    public MyScreen() 
    {   
     // Set the displayed title of the screen 
     //backgroundBitmap = Bitmap.getBitmapResource("slidimage.png"); 
     final Bitmap background = Bitmap.getBitmapResource("slidimage.png"); 

     HorizontalFieldManager vfm = new HorizontalFieldManager(USE_ALL_HEIGHT | USE_ALL_WIDTH) { 
       public void paint(Graphics g) { 
        g.drawBitmap(0, 0,mWidth, mHeight, background, 0, 0); 
        super.paint(g); 
       } 
     }; 

     add(vfm); 
+2

Vous devez à l'échelle (étirement) Bitmap avant de tirer. Cochez cette réponse, http://stackoverflow.com/a/2268027/431639. 'public static Bitmap resizeImage()' résoudra votre problème. Lisez également la documentation de l'API, http://www.blackberry.com/developers/docs/5.0.0api/net/rim/device/api/system/Bitmap.html#scaleInto%28net.rim.device.api.system. Bitmap,% 20int% 29. – Rupak

Répondre

0
public static Bitmap resizeBitmap(Bitmap image, int width, int height) 
    { 
     int rgb[] = new int[image.getWidth()*image.getHeight()]; 
     image.getARGB(rgb, 0, image.getWidth(), 0, 0, image.getWidth(), image.getHeight());   
     int rgb2[] = rescaleArray(rgb, image.getWidth(), image.getHeight(), width, height); 
     Bitmap temp2 = new Bitmap(width, height);   
     temp2.setARGB(rgb2, 0, width, 0, 0, width, height);   
     return temp2; 
    } 

Vous pouvez utiliser ce qui précède méthode pour redimensionner l'image juste passer l'image à redimensionner et sa largeur et sa hauteur. et la fonction retournera l'image redimensionnée.

où Array rescale est la méthode ci-dessous

private static int[] rescaleArray(int[] ini, int x, int y, int x2, int y2) 
    { 
     int out[] = new int[x2*y2]; 
     for (int yy = 0; yy < y2; yy++) 
     { 
      int dy = yy * y/y2; 
      for (int xx = 0; xx < x2; xx++) 
      { 
       int dx = xx * x/x2; 
       out[(x2 * yy) + xx] = ini[(x * dy) + dx]; 
      } 
     } 
     return out; 
    } 
Questions connexes