2012-12-21 90 views
1

我写了下面的代码在这里的背景图像显示,但图像没有覆盖整个背景如何设置背景图片fitable在黑莓应用

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

需要拉伸前按比例绘制(拉伸)位图。检查这个答案,http://stackoverflow.com/a/2268027/431639。 '公共静态位图resizeImage()'将解决你的问题。另请阅读API文档http://www.blackberry.com/developers/docs/5.0.0api/net/rim/device/api/system/Bitmap.html#scaleInto%28net.rim.device.api.system。位图,%20int%29。 – Rupak

回答

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; 
    } 

您可以用上面的调整图像大小的方法 只是传递要调整大小的图像及其宽度和高度。 并且该函数将返回调整大小的图像。

其中重新调整阵列是以下方法

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; 
    }