2010-04-15 84 views
12

Wpf命中測試很不錯,但我發現擴展命中區域的唯一方法是在對象周圍放置透明填充區域。我找不到任何方法在Path對象周圍添加透明區域。路徑非常薄,如果用戶點擊路徑附近,我想啓用命中測試。我無法找到任何方法來的路徑對象中包含的圖像的透明區域延伸: alt text http://img175.imageshack.us/img175/6741/linepadding.png如何擴展Path對象的WPF命中測試區域

我試圖使用部分透明的行程刷但我跑進這裏描述的問題:How can I draw a "soft" line in WPF (presumably using a LinearGradientBrush)?

我也嘗試將一個裝飾器放在我的行上,但由於WPF消除鋸齒算法,當我放大畫布並干擾其他物體碰撞測試時,位置很不利。

任何建議延長命中測試區將不勝感激。

謝謝, 庫馬爾

回答

7

Path.Data是幾何對象。幾何類有幾個方法可以幫助你打的測試與寬容:

GetFlattenedPathGeometry(Double, ToleranceType) 
GetOutlinedPathGeometry(Double, ToleranceType) 
GetRenderBounds(Pen, Double, ToleranceType) 

我認爲GetRenderBounds將工作最適合你。

一旦你的幾何形狀(再加上一點點的寬度),你可以調用

geometry.FillContains(Point, Double, ToleranceType) 

geometry.StrokeContains(Pen, Point, Double, ToleranceType) 

走出了這一切,你應該調整從你的命中測試所需的命中;

+0

+1幫助我解決了類似問題... – SvenG 2012-03-28 16:53:09

3

您可以將Path包裹在透明的Border中。

2

在WPF中,您可以創建其幾何數據綁定的第一個路徑(使用元素綁定),但使用透明畫筆和增加的厚度。

東西或多或少這樣的:

<Path x:Name="backPath" Data="{Binding Data, ElementName=mainPath}" StrokeThickness="10" Stroke="Transparent"/> 
<Path x:Name="mainPath" Data="{Binding DataFromViewModel}" StrokeThickness="1" Stroke="Red"/> 

注意,使得它在上面呈現的主路徑來後XAML。