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か?これを行うには多くの方法がありますが、その 1 つは、ダウンロード後に画像をリサイズしてから、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);
       }
};

ただし、実際に のサイズを 80x70 に設定した場合、 の範囲Bitmap img80x70 に設定する必要はないと思います。指定した画像のサイズにデフォルト設定する必要があります。したがって、コードを次のように単純化できます。BitmapField

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 に答える