我刚刚开始学习 C#,我想就绘画方面的良好做法寻求建议,以避免闪烁。
我使用了这里提到的方法,例如双缓冲和打开WS_EX_COMPOSITED
,但对我有用的方法是:
调用PaintEventHandler
:
this.dgData.Paint += new System.Windows.Forms.PaintEventHandler(this.myPaint);
并使用PaintEventArgs
绘制:
private void myPaint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics myGraphics = e.Graphics;
// Use myGraphics to draw
}
并且PaintEventHandler
是通过 a Refresh()
on a触发的Timer
。
private void TimerElapsed(object sender, System.EventArgs eventArgs)
{
Refresh();
}
但是,我担心的是,这种绘图方式需要我对PaintEventHandler
表单上的每个控件都有一个。
因此,我想问是否有更优雅的方式来实现这一点。
谢谢!