如何为Path对象扩展WPF命中测试区域

Wpf命中测试相当不错,但我发现扩展命中区域的唯一方法是在对象周围放置一个透明的填充区域。我找不到任何方法来添加一个Path对象的透明区域。路径非常薄,如果用户在路径附近点击,我想启用命中测试。我找不到任何方法来扩展路径对象的透明区域,如下图所示: alt text http://img175.imageshack.us/img175/6741/linepadding.png 我尝试使用部分透明的笔刷,但我遇到了这里描述的问题:我怎样才能画出一个“柔软”的画笔。 WPF中的行(可能是使用LinearGradientBrush)? 我也尝试在我的线上放置一个装饰,但由于WPF抗锯齿算法,当我放大我的画布并干扰其他对象以糟糕的方式进行测试时,位置就会偏离。 任何扩展命中测试区的建议都将受到高度赞赏。 谢谢, 库马尔     
已邀请:
Path.Data是一个几何对象。 Geometry类有几种方法可以帮助您使用容差进行测试:
GetFlattenedPathGeometry(Double, ToleranceType)
GetOutlinedPathGeometry(Double, ToleranceType)
GetRenderBounds(Pen, Double, ToleranceType)
我认为GetRenderBounds最适合你。 一旦你有几何(加上一点宽度)你就可以打电话
geometry.FillContains(Point, Double, ToleranceType)
要么
geometry.StrokeContains(Pen, Point, Double, ToleranceType)
在所有这些中,你应该从命中测试中调整所需的命中;     
您可以将Path包装在透明的
Border
中。     
在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之后,因此它呈现在顶部。     

要回复问题请先登录注册