2011-12-11 9 views
6

グラフィック要素を正しく配置するのに問題があります。ここでは例を示します。イメージとグラフィックスのサイズを制御する方法は?

im1 = Import["http://upload.wikimedia.org/wikipedia/commons/5/5c/London_2010_Tower_Bridge.jpg"]; 
GraphicsRow[{im1, ImageAdd[im1, Graphics[Disk[]]], Graphics[Disk[]]}] 

example of problems

円は、両方同じ方法で指定されたが、異なるスケールで表示され、それがどのように動作するかを示すためにしようとする図は非常に満足のいくものではないされています。明らかに、画像は画像と一致するように拡大されますが、同じサイズで表示されない理由はわかりません。 はGraphicsRowに似ていますが、私には同じ問題があります。

答えて

8

この問題は、ディスプレイに表示されているマスクの直径が画像の高さと同じで、スタンドアロンディスクの直径が画像の幅と等しいために発生します。これは、ディスクのサイズを明示的に指定することで修正できます。

im1 = Import[ 
    "http://upload.wikimedia.org/wikipedia/commons/5/5c/London_2010_\ 
Tower_Bridge.jpg"]; 
disk = Graphics[Disk[], ImageSize -> [email protected]]; 
GraphicsRow[{im1, ImageAdd[im1, disk], disk}, Spacings -> 0, ImageSize -> Full] 

enter image description here

+0

あなたがそれを行うときシンプルに見えます。ありがとう... – cormullion

5

黒ディスクの周りのイメージと全く周りのパディングがあります。 (ImageDimensionsから得られた)インポートされたイメージの縦横比を知ることにより、およびGraphicsRowおよび黒色ディスクの特定のサイズを設定することにより、あなたは外観を制御することができる:

GraphicsRow[{im1, ImageAdd[im1, Graphics[Disk[]]], 
    Graphics[Disk[], ImageSize -> 90, ImagePadding -> 15]}, 
ImageSize -> 360, Spacings -> 0] 
+0

こんにちはマイク、ここでお会いできてうれしいです。スタックオーバーフローへようこそ! – Simon

+0

それはうまく動作します、ありがとう! – cormullion

6

別のオプションは、ラップすることであろうPaneの画像は、自動的な幅と固定された高さ、例えば

Row[Pane[#, {Automatic, 200}] & /@ 
{im1, ImageAdd[im1, Graphics[Disk[]]], Graphics[Disk[]]}] 

scaled to have the dame height

+0

おかげで、ペインについて知りませんでした...! – cormullion

+0

これはとても完璧に見えます! –

関連する問題