有無論如何在WPF中使用幾何來測試元素嗎?我試過VisualTreeHelper
,但它不起作用。 UIElement
可能會引發鼠標向下的事件,如果鼠標用點擊它。WPF中的幾何HitTest 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;
}
你還沒有說究竟是什麼不起作用,或者什麼樣的錯誤你會得到,但如果我假設一些事情,我會讓你的示例代碼運行。看到我編輯的答案。 – Clemens 2012-08-02 08:25:27
如果你正在使用轉換,這個問題/答案可能是有用的:http://stackoverflow.com/questions/10451066/bug-in-geometry-hit-testing – 2013-08-21 07:33:23