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

use*_*587 12 testing wpf hit canvas path

Wpf命中测试相当不错,但我发现扩展命中区域的唯一方法是在对象周围放置一个透明的填充区域.我找不到任何方法来添加一个Path对象的透明区域.路径非常薄,如果用户在路径附近点击,我想启用命中测试.我找不到任何方法来扩展路径对象的透明区域,如下图所示: alt text http://img175.imageshack.us/img175/6741/linepadding.png

我尝试使用部分透明的笔刷,但我遇到了这里描述的问题:如何在WPF中绘制"软"线(可能使用LinearGradientBrush)?

我也尝试在我的线上放置一个装饰,但由于WPF抗锯齿算法,当我放大我的画布并干扰其他对象以糟糕的方式进行测试时,位置就会偏离.

任何扩展命中测试区的建议都将受到高度赞赏.

谢谢Kumar

Jos*_* C. 7

Path.Data是一个几何对象.Geometry类有几种方法可以帮助您使用容差进行测试:

GetFlattenedPathGeometry(Double, ToleranceType)
GetOutlinedPathGeometry(Double, ToleranceType)
GetRenderBounds(Pen, Double, ToleranceType)
Run Code Online (Sandbox Code Playgroud)

我认为GetRenderBounds最适合你.

一旦你有几何(加上一点宽度)你就可以打电话

geometry.FillContains(Point, Double, ToleranceType)
Run Code Online (Sandbox Code Playgroud)

要么

geometry.StrokeContains(Pen, Point, Double, ToleranceType)
Run Code Online (Sandbox Code Playgroud)

在所有这些中,你应该从命中测试中调整所需的命中;