2016-09-15 3 views
1

は、私の目標は、私がしようと512×512サイズ

の大きさで、任意のサイズの画像をダウンロードし、それに円形のマスクを適用し、画面上に画像を表示することですURLImageに512 x 512のプレースホルダと円形マスクを使用し、を使用してLabelに配置します。しかし、イメージは円形の形で自然な大きさで描画されている間、ラベルは正しい高さ(512)を取得します。アスペクト比を維持しながらラベルを縦に塗りつぶしたい。

マイコード:

  EncodedImage img = URLImage.createToStorage(
       roundPlaceholder, // roundPlaceholder is 512 x 512 
       "rounded" + uid, 
       imageUrl, 
       URLImage.createMaskAdapter(mask)); // mask is 512 x 512 

      myLabel.setIcon(img); 

は、私が何かをしないのですか、これはそれを行うための方法ではありませんか?

答えて

1

これを試してください:イメージを自然なサイズでダウンロードしますが、プレースホルダのサイズは自由に変更できません。幅または高さがより長いかどうかを判断し、イメージクラスの.scaledWidthまたは.scaledHeightメソッドを使用してサイズを変更し、縦横比を保持します。マスクサイズを適用する前にマスクサイズが画像と一致することを確認する作業がもう少しあるかもしれません。

+0

おかげで、しかし、あなたの提案は動作しませんでした。 URLImageは、幅/高さに関係なく、小さなサイズで描画されているように見えます。 –

0

マスクアダプターのデフォルトの動作は、自然なサイズではなく「縮尺」です。これはあなたに誤解を招くかもしれません。 「スケール・フィット」のアプローチを期待しているかもしれませんが、ブランク・スポットが発生する可能性があるため、問題があるかもしれません。

参照:https://github.com/codenameone/CodenameOne/blob/master/CodenameOne/src/com/codename1/ui/URLImage.java#L175-L183

+0

いいえ、マスクは赤いニシンです。空白の512 x 512イメージをプレースホルダとして使用すると、結果は同じになります。一方、私がプロジェクトのリソースに同じイメージを追加し、それを使ってsetIcon()を呼び出すと、正しいサイズで描画されます。たぶんURLImageを通常の画像に変換する方法がありますか? –

+0

No. URLImageは、ダウンロードイメージをサイズに合わせてサイズを変更します。前記論理/ユースケースは、前記画像に指定された特定のスペースに合うようにすることである。これはアプリケーション設計のために重要であり、したがって、置換はリフロー/分断されず、シームレスになる。あなたはURLImageが欲しくなくて本当にあなたのニーズをより良く満たす単純なファイルダウンロードを使用する必要があるようです。 –

+0

オクシャイ、私はそれを理解した。私は以前、同じ名前を使って、アプリの別の部分に同じイメージのより小さなバージョンをダウンロードしていたことが分かります。明らかに、私はシミュレータのストレージをクリアした後でも、小さなバージョンが再利用されました。とにかくありがとうございました。 –