2011-03-02 82 views
3

我正在使用C#在WPF中創建一些'地圖應用程序'。我使用Visual Blend 2繪製國家的邊界​​,因此我得到了Path對象(用XA​​ML編寫)。路徑是第一個點==最後一個點的對象,因此路徑始終是關閉的。有些國家(如日本)有一些島嶼,因此一個國家有一條以上的道路。如何分組路徑對象?

我想爲這些對象(國家 - 所以有一個或多個路徑)添加一些行爲,例如當用戶鼠標進入某個國家(或IsMouseOver屬性爲'true' - 但這裏無所謂)時,國家正在改變他們的背景顏色。

哪裏有的國家== 1路徑,沒有問題。但是,在有些國家有多條路徑的情況下,我能做些什麼?

所以我的問題是:如何在一個對象中組路徑?

我試圖用GeometryGroup類,但我不能正確地使用它......

你有一些想法?

回答

4

您的路徑可以有多個'M'沒有問題,並且可以正常使用path.Fill。最終取決於你正在繪製的圖形類型。

這裏有一個例子:

<Path Data="M10,10 h100 v100 h-100z M30,30 h50 v50 h-50z" 
    Stroke="Gray" 
    StrokeThickness="1" 
    Fill="Blue"/> 

,或者如果您使用代碼Geometry.Parse("M10,10 h100 v100 h-100z M30,30 h50 v50 h-50z")

+0

謝謝,它會幫助我很多:)其實我在這裏有一些其他問題,因爲Expression Blend正在爲所有路徑創建不同的'Margin'屬性,所以我需要考慮它,但是我會使用你的建議。我寫這篇文章是因爲我沒有足夠的排名積分爲你投票。但是,再次感謝:) – angelPL 2011-03-02 13:57:02

+0

你是隆重的,有問題的留言。 – 2011-03-02 15:20:58

1

創建一個簡單的C#類用作一個國家的邏輯模型。然後它可能包含一個List<Path> CountryBoundaries實例變量,它將管理背景顏色。

然後,您需要將路徑的mouseover事件連接到正確的國家/地區。

+0

是的,我正在考慮將它們存儲在一個班級中。謝謝。 – angelPL 2011-03-02 13:59:55