3

今私は持っています:

    EncodedImage logo = EncodedImage.getEncodedImageResource("image.png");
    logo.scaleImage32(Fixed32.toFP(2), Fixed32.toFP(2));
    BitmapField image = new BitmapField(logo.getBitmap());
    image.setMargin(15, 15, 15, 15);
    this.add(image);

画像を通常のサイズで表示するだけです。ただし、logo.setScale(2)の代わりに動作しますが.scaleImage32(...)、非推奨です。

.scaleImage32() を使用して画像を半分のサイズで表示する正しい方法は何ですか?

4

1 に答える 1

3

残念ながら、あなたは不器用なAPIにうんざりしていて、私の意見では、Java(およびすべてのC言語)の弱点です。

あなたはそれがあなたのイメージscaleImage32()を拡大縮小していると思いました。logoそうではありませんでした。logoスケーリングされたもののコピーを返していました。ただし、この値では何もしませんでした。次を返すlogoスケーリングされたコピーが本当に必要なときに、ビットマップフィールドに表示するために使用しました。scaleImage32()

EncodedImage logo = EncodedImage.getEncodedImageResource("image.png");
EncodedImage scaledLogo = logo.scaleImage32(Fixed32.toFP(2), Fixed32.toFP(2));
BitmapField image = new BitmapField(scaledLogo.getBitmap());

いくつか追加します。

1)アプリをOS 5.0以降に制限できれば、scaleInto()APIの方が使いやすいと思います

2)この種のシナリオは、人々がメソッド名に大騒ぎする理由です。RIMはscaleImage32()、メソッドを呼び出すインスタンスがスケーリングされると思われるため、に不適切な名前を選択しました。getScaledImage32()、またはそのような名前が付けられている必要があります。

3)私が認めるのが恥ずかしい、あいまいなプログラミングの見出しの下で、私はAdaでコーディングしていました。Adaは、プログラミングエラーを防ぐために可能な限りのことを行うことを目的としていました。Adaの特徴の1つは、コンパイラが未使用の戻り値をエラーとして扱うことでした。このシナリオがまさにその理由です。

だから、これについてあまり悪く感じないでください:)

于 2013-01-24T03:05:12.027 に答える