Windows窗体自定义控件绘画停止

本文关键字:绘画 自定义控件 窗体 Windows | 更新日期: 2023-09-27 17:59:04

我正在制作一个绘制模拟的自定义控件。问题是,当不断使其无效时(这是必要的,因为每次勾选的外观都会更改),它会阻止绘制其他控件(例如,只要我用鼠标拖动模拟中的对象,属性网格就不会更新)。

我该如何防止这种行为?windows窗体的绘制是如何工作的?同样,当表单上有两个该控件的实例时,第一个实例会阻塞第二个实例。所以只有一个被画出来,另一个保持空白。

这里有谁已经制作了复杂的用户控件?我不能使用其他渲染机制,因为该程序应该在办公室环境中使用,因为办公室环境可能没有适合硬件加速绘图的图形卡。

//编辑:发现问题。我在子方法facepalm

Windows窗体自定义控件绘画停止

中的drawcall中有一个Invalidate()

好的,脏的解决方法传入:

我用表格计时器不断地重新绘制我的东西。这样可以防止gui锁定。它很丑陋。。。

我知道我参加聚会迟到了,但你可能想看看Form.Ondle活动。

当应用程序的消息队列为空时,会发生此事件,这意味着所有其他UI更新和用户事件处理(暂时)都已完成。除非你有一些东西一直在生成源源不断的消息,否则它们往往会在UI交互过程中突然出现。突发结束时是更新自定义控件的好时机。

定时器一点也不乱,IMO。这是建立最低更新频率的好方法。通常,只有当显示的信息发生变化,或者一个窗口覆盖然后打开你的窗口,迫使重新绘制时,才需要更新。但是,如果你没有以这种方式跟踪变化,或者底层信息每秒变化数百次,那么计时器是一个很好的方法来限制你的更新,使它们只在特定的频率范围内发生。