2013-10-25 44 views
2

我有兩個畫布的路徑在他們的類型。這些元素放置在地圖上,我有一個頂部座標和左側座標。這些元素的邊框顏色不同。在它們的邊界它們重疊,因此僅顯示了其中一個元素邊界着色。有沒有辦法調整我的xaml代碼,以便顯示兩個邊框,而不更改頂部和左側座標,因爲當我將這些元素放入我的地圖時,我將從ViewModel的列表中取出它們。兩個重疊國的一個例子是:顯示兩個重疊的邊框xaml WP8

Example of ovelapping country

所以你可以在圖片中看到你只能看到蘇格蘭和愛爾蘭的邊界,但也不恩格蘭茲。我用於每個國家的xaml代碼是

Canvas.Left="{Binding CountryView.X}" Canvas.Top="{Binding CountryView.Y}" Canvas.ZIndex="{Binding CountryView.Z}">  

<Canvas> 
     <Path x:Name="CountryUser" Stretch="Fill" StrokeThickness="{StaticResource StrokeUserControl}" StrokeLineJoin="Round" Fill="{StaticResource CountryBackground}" Stroke="{Binding CountryView.CountryColor}" Data="{Binding CountryView.MapData}"/> 
    </Canvas> 

Where CountryView是我的國家名單。我已經研究了一下DashArray,並且可以在國家共享邊界的地方應用破折號,例如在邊界處,每種顏色都有不同的破折號,但該國的其餘地區與該國是一條線顏色?

回答

2

如果你有相同的經驗,我會在這裏遇到很多難題,但你可能會在*中遇到很大的痛苦,但是......幸運的是,解決方法或技巧,你可以做到這一點,你會一路走來。針對當前的問題,您可以選擇一些方法來幫助用戶解決問題。這只是其中的幾個;

ScaleTransformMargin您的Path您正在使用輪廓1像素或更多,以允許您的邊框的一個小空間顯示爲彼此相鄰並且不一定重疊。

利用您路徑之間Opacity無論是通過特異性直接設置OpacityPath或通過使用Alpha通道作爲衝程提供的顏色的,像#59ff0000,以允許至少一個在顏色上重疊邊界對比度。所以說例如你有2個路徑,一個藍色,一個黃色,然後他們重疊的地方會顯示綠色。

通過StrokeDashArray創建對比度,正如您指出的那樣,使用空格/寬度來交錯邊界,因此即使它們重疊也不會互相重疊,這也是StrokeDashOffset可能進入的地方便利。

如果您允許您的用戶與這些形狀交互,我還可以向您展示如何將VisualStateManager應用到路徑中,並在它們被選中時爲Stroke劃破動畫,以使其更易於被用戶看到到他們選擇的區域。

無論如何,希望這會有所幫助。讓我知道你是否想要具體的例子。乾杯。

UPDATE: 您可以像這樣使用ScaleTransform;

<Canvas> 
    <Path x:Name="CountryUser" Stretch="Fill" StrokeThickness="{StaticResource StrokeUserControl}" StrokeLineJoin="Round" Fill="{StaticResource CountryBackground}" Stroke="{Binding CountryView.CountryColor}" Data="{Binding CountryView.MapData}"> 
    <Path.RenderTransform> 
     <CompositeTransform ScaleX="0.95" ScaleY="0.95"/> 
    </Path.RenderTransform> 
    </Path> 
</Canvas> 

您可以調整Scale X/Y係數以滿足您的需求,但.95應該可以提供一個體面的結果本身。

+0

我嘗試了保證金,但它對我無效。所以如果你能給我一個例子會很好。不透明度看起來不太好,因爲一些國家會有四種不同的邊界顏色。 – JonasN89

+0

將保證金直接應用於路徑時,看起來如何?它沒有被調用?如果不是的話,你可能會嘗試將它嵌入到ViewBox中,並將它應用到它的Padding/Margin中,但是出於性能原因,如果你有很多元素,我不會建議。 –

+0

W當我嘗試直接應用Margin時,沒有任何反應,它沒有被調用,當我使用ViewBox時,情況也是如此。有什麼建議麼? – JonasN89