【发布时间】:2012-07-31 09:06:17
【问题描述】:
有没有在 WPF 中使用 Geometry 来测试一个 uielement?我试过VisualTreeHelper,但它不起作用。 UIElement 可以在鼠标用点点击它时引发鼠标按下事件。
但是,如果几何与UIElement 相交,我想引发一个事件。我怎么能这样做?
public class MyUI : UIElement
{
protected override void OnReder(DrawingContext dc)
{
dc.DrawRectangle(..., new Rect(12,12,120,120));
...
}
}
MyUI ui = new MyUI();
Grid grid = new Grid();
grid.Children.Add(ui);
EllipseGeometry eg = new EllipseGeometry(new Rect(24,24,40,40));
VisualTreeHelper.HitTest(grid, null, HitTestResult, new GeometryHitTestParameters(eg));
if (results.Count > 0)
MessageBox.Show("Hit Count = "+results.ToString());
...
List<DependencyObject> results;
public HitTestResultBehavior HitTestResult(HitTestResult result)
{
results.Add(result.VisualHit);
return HitTestResultBehavior.Continue;
}
【问题讨论】:
-
你还没有说到底什么不起作用或你得到什么错误,但如果我假设一些事情,我会让你的示例代码运行。请参阅我编辑的答案。
-
如果您使用转换,这个问题/答案可能有用:stackoverflow.com/questions/10451066/…