请问C#中的paint事件是怎么实现的?

2024-12-26 13:02:48
推荐回答(4个)
回答1:

首先调用某控件的Invalidate()
Invalidate标记一个需要重绘的无效区域,并不意味着调用该函数后就立刻进行重绘。
只是向消息队列里发送一条消息,就返回了。
WINDOWS一直在循环处理消息队列,(这因该知道的吧。)
当处理到你的INVALIDATE时。就触发了PAINT(异步处理)
当然你调用完Invalidate(),再调用UPDATE以后。就直接触发ONPANIT了。
(同步处理)
同步处理有个REFREASH()函数=Invalidate()+update()

回答2:

是用winform的吧?
其实窗体加载的时候paint事件就调用过了。
如果想再次调用,请调用窗体的Refresh()方法,也就是刷新咯,会把窗体上的所有空间以及图形绘制一遍。
至于画板,我做过一个,不过只有简单的画笔功能。
比如按下鼠标左键后,移动鼠标,开始画线,放开鼠标左键,画线结束。可以是不规则曲线。
需要Pen 类,PaintEventArgs对象。
还要用到MouseDown MouseMove MouseUp Paint 事件。
看你比较有钻研精神,源代码就不给你咯。。
有问题请查下MSDN吧,关键字Pen,里面直接就有个绘制矩形的例子。

回答3:

paint 由操作系统向控件发送WM_paint 消息
你要自己做画板你可以按照一定的时间周期去画这个是最简单的

回答4:

Refresh()