调用 InvalidateVisual 后,子元素上鼠标点击事件没响应

Allblus 2018-06-11 10:04:44
我在鼠标移动时调用InvalidateVisual后,为什么在子元素上单击鼠标,OnMouseDown事件没响应呢?
以下是测试代码:


protected override void OnRender(DrawingContext drawingContext)
{
chartCanvas.Children.Clear();
AddElement();
base.OnRender(drawingContext);
}
protected override void OnMouseDown(MouseButtonEventArgs e)
{
base.OnMouseDown(e);
MessageBox.Show("Mouser down");
}

protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
this.InvalidateVisual();
}

public void AddElement()
{
Rectangle rect = new Rectangle()
{
Height = 100,
Width = 100,
Stroke = new SolidColorBrush(Colors.Red),
Fill = new SolidColorBrush(Colors.Red)
};
Canvas.SetLeft(rect, 100);
Canvas.SetTop(rect, 100);
chartCanvas.Children.Add(rect);
}

...全文
940 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
exception92 2018-06-15
  • 打赏
  • 举报
回复
为什么要用InvalidateVisual 它呢 仅仅是为了重新调用onrender onmousedown应该仅对chartCanvas 有效的
人间太皮 2018-06-15
  • 打赏
  • 举报
回复
引用 1 楼 Allblus 的回复:
现在CSDN越来越冷清了哦。
wpf已经没人用了,微软早就抛弃了,赶紧换工作吧
Allblus 2018-06-14
  • 打赏
  • 举报
回复
再说清楚点,就是在 chartCanvas 的子元素 rect 所在的范围 100*100 的区域上单击鼠标,OnMouseDown事件没响应,为什么呢?
Allblus 2018-06-14
  • 打赏
  • 举报
回复
现在CSDN越来越冷清了哦。
【资源说明】 基于wpf skiasharp的光线投影法碰撞检测投篮小游戏源码.zip 该项目是个人毕设项目源码,评审分达到95分,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关专业的学生或从业者下载使用,也可作为期末课程设计、课程大作业、毕业设计等。 具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现类似其他功能。 此案例主要是针对光线投影法碰撞检测功能的示例,顺便做成了一个小游戏,很简单,但是,效果却很不错。 # 投篮小游戏 规则,点击投篮目标点,就会有一个球沿着相关抛物线,然后,判断是否进入篮子里,其实就是一个矩形,直接是按照碰撞检测来的,碰到就算进去了,对其增加了一个分数统计等功能。 ## Wpf 和 SkiaSharp 新建一个 WPF 项目,然后,Nuget 包即可 要添加 Nuget 包 ```csharp Install-Package SkiaSharp.Views.WPF -Version 2.88.0 ``` 其中核心逻辑是这部分,会以我设置的 60FPS 来刷新当前的画板。 ```csharp skContainer.PaintSurface += SkContainer_PaintSurface; _ = Task.Run(() => { while (true) { try { Dispatcher.Invoke(() => { skContainer.InvalidateVisual(); }); _ = SpinWait.SpinUntil(() => false, 1000 / 60);//每秒60帧 } catch { break; } } }); ``` ## 弹球实体代码 (Ball.cs) ```csharp public class Ball { public double X { get; set; } public double Y { get; set; } public double VX { get; set; } public double VY { get; set; } public int Radius { get; set; } } ```

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧