2011-12-11 52 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

這看起來很完美! –