如图所示:运行实例,我更改了计时器刷新频率为100ms,但是更改为10ms仍然有问题,窗体抖动更厉害,如果更改1000ms,抖动下降,但是会出现画面捕捉延时
如图所示:运行实例,我更改了计时器刷新频率为100ms,但是更改为10ms仍然有问题,窗体抖动更厉害,如果更改1000ms,抖动下降,但是会出现画面捕捉延时
收起
回答:抖动不如说是一闪一闪的,原因是没有双缓冲,页面刷新需要时间的,所以会闪,双缓冲可以很不错的解决这个问题,具体代码实现就是加几条语句,链接如下:
里面有C#版本,截取如下:
public void Show(System.Windows.Forms.Control control)
{
Graphics gc = control.CreateGraphics();
// 创建缓冲图形上下文 (类似 Win32 中的CreateCompatibleDC)
BufferedGraphicsContext dc = new BufferedGraphicsContext();
// 创建指定大小缓冲区 (类似 Win32 中的 CreateCompatibleBitmap)
BufferedGraphics backBuffer = dc.Allocate(gc, new Rectangle(new Point(0, 0), control.Size));
gc = backBuffer.Graphics; // 获取缓冲区画布
/* 像使用一般的 Graphics 一样绘图 */
Pen pen = new Pen(Color.Gray);
foreach (Step s in m_steps)
{
gc.DrawLine(pen, s.Start, s.End);
}
// 将双缓冲区中的图形渲染到指定画布上 (类似 Win32 中的)BitBlt
backBuffer.Render(control.CreateGraphics());
}
以上资料来源于博主:(右耳朵猫),可以看看
报告相同问题?