WPF,请看下这个可视化层的击中测试
WPF,请看下这个可视化层的命中测试上面的代码中,测试可视化层中的命中测试,我点击Textblock,为什么没有响
WPF,请看下这个可视化层的命中测试
上面的代码中,测试可视化层中的命中测试,我点击Textblock,为什么没有响应呢?难道没有点中Textblock吗?
[解决办法]HitTestResult result = VisualTreeHelper.HitTest((UIElement)sender, pt); //获取鼠标点击到的可视对象
改成这样才行,你是根据sender得到的pt
[解决办法]你这里如果使用canvas1是不行的,因为你设置了Height和Width,却没有设置对其。
如果你的canvas的HorizontalAlignment=Left 并且 VerticalAlignment设置为Top,才可以,因为在MSDN中canvas的布局在window中是全布局的,也就是说Canvas的坐标系统和Window的是完全符合的,Window的坐标是从左上角为(0,0)点的,所以你的Canvas加上左上对齐,就能符合Window的坐标系统了。
[解决办法]Point pt = e.GetPosition((UIElement)sender); //获得鼠标坐标
HitTestResult result = VisualTreeHelper.HitTest(ellipse1, pt); //获取鼠标点击到的可视对象
HitTest中的第一个参数不是你要命中的东西,而是你的点的所依赖的Visual视图。
Point pt = e.GetPosition((UIElement)ellipse1); //获得鼠标坐标
HitTestResult result = VisualTreeHelper.HitTest(ellipse1, pt); //获取鼠标点击到的可视对象
这样的话,pt得到的是相对ellipse1的点,也就是按照ellipse1外围矩形的左上角点作为(0,0)点,这里pt都是相对的