2011-06-22 46 views
1

多路徑我有幾何對象的名單,我想畫在我的WPF應用程序。幾何圖形的該列表不會被配置成一個給定的視圖中很好地擴展,所以我就需要以某種方式擴展要麼每個單獨的對象,這可能導致問題或縮放我認爲這是可能最好的容器。借鑑了油畫

我猜我可能要到我的幾何對象添加到畫布上,但我不知道。我不知道如何確定轉換畫布以正確顯示內容的正確方法。

我只是在尋找指導如何幾何形狀添加到一個容器(可能是帆布),並有容器自動變換,無論幾何的原始大小的很好地顯示其內容。我已經知道如何幾何形狀添加到路徑,但我不知道如何正確地擴展畫布在一個很好的放大和居中的方式顯示它的孩子:

path.Data = geometry[i]; 
canvas.Children.Add(path); 

舉個例子,假設我想只用一張基本的矩形地圖按國家繪製世界地圖。假設這些國家以美國爲中心,座標以英里爲單位,所以形狀不切實際。我如何將每個國家添加到容器中,然後顯示以國際日期爲中心的總世界地圖?如果地圖沒有縮放和翻譯,它只會渲染一個純色,因爲地圖在堪薩斯州會變得如此放大。

回答

0

A Viewbox將爲您和其中的畫布進行縮放,因爲路徑的容器看起來也很好,但畫布需要設置爲地圖的實際大小,因爲它不會縮放到它的縮放比例兒童。我的問題

+0

那一部分。畫布不能縮放,並且幾何圖形的大小可能是數千像素的平方。我需要弄清楚如何在縮放其內容時縮放畫布。你不能只將每條路徑縮放50%。如果你有一塊棋盤,並且你將每個方塊縮放50%,那麼你最終會出現空白。您必須按可變數量進行縮放和翻譯。這似乎很複雜,必須有更好的方法。 – Cameron

+0

其實你可以縮放每個方塊,你只需要選擇一個共同的中心。您還可以在多個路徑添加到它應該如果形狀是獨立的,因爲他們要在各種各樣的堆棧最終大小的孩子,但佈局可能最終很怪異的網格。 –

+0

是的,堆棧的事情發生在那種情況下。我可以在縮放之前爲每個路徑設置transformOrigin =(0,0),但我仍然需要知道如何轉換畫布以很好地顯示其子路徑。我足夠了解WPF是危險的;我可能在想這個完全錯誤的。 – Cameron