0

如何在 BlackBerry 中设置 BitmapField 的宽度和高度?以下代码有效,但我无法显示整个图像。显示屏仅显示我图像的一部分。

 BitmapField bmp = new BitmapField(connectServerForImage(ImageUrl)) {
       protected void layout(int width, int height) 
       {
          setExtent(80, 70);
       }
 };
4

2 回答 2

2

我假设您是说您BitmapField正在显示您检索到的图像裁剪

而且您希望它可以缩放,也许可以缩放以适合您的BitmapField? 有很多方法可以做到这一点,但一种是在下载后调整图像大小,然后再将其提供给BitmapField

从这个关于调整位图大小的答案

public static Bitmap resizeImage(Bitmap originalImage, int newWidth, int newHeight) {
    Bitmap newImage = new Bitmap(newWidth, newHeight);
    originalImage.scaleInto(newImage, Bitmap.FILTER_BILINEAR, Bitmap.SCALE_TO_FILL);
    return newImage;
}

(请注意,如果您必须支持 BlackBerry OS < 5.0,我提供的链接有另一种调整图像大小的方法)。

然后,使用

Bitmap img = resizeImage(connectServerForImage(ImageUrl), 80, 70);
BitmapField bmp = new BitmapField(img) {
       protected void layout(int width, int height) 
       {
          setExtent(80, 70);
       }
};

但是,我相信如果你真的将 的大小设置Bitmap img为 80x70,那么就没有必要将 的范围设置BitmapField为 80x70。它应该默认为您提供的图像的大小。因此,您可以将代码简化为:

BitmapField bmp = new BitmapField(img);
于 2012-08-28T10:16:19.340 回答
0
 int prefWidth=(30*bitmap.getWidth())/bitmap.getHeight();
 Bitmap temp=resizeBitmap(bitmap,prefWidth,30);

在哪里

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

本支持bb os 4.5

于 2012-10-15T07:51:27.823 回答