C# WinFormUI上闪烁

C# WinFormUI上闪烁,c#,winforms,graphics,panel,flicker,C#,Winforms,Graphics,Panel,Flicker,我已经为MicrosoftRoboticsStudio实现了一个WinFormUI来显示一些传感器数据。目前,它使用下面的函数每隔100毫秒绘制一个面板。问题是我看到我正在绘制的面板上闪烁,当拖动窗口时,它感觉非常缓慢。根据其他人在这个论坛上遇到的情况,我在创建表单时使用了DoubleBuffered=true,但没有效果。 关于如何改进这一点,有什么建议吗?提前谢谢 此函数在面板上绘制表示雷达的线条 private void DrawRadarLines() {

我已经为MicrosoftRoboticsStudio实现了一个WinFormUI来显示一些传感器数据。目前,它使用下面的函数每隔100毫秒绘制一个面板。问题是我看到我正在绘制的面板上闪烁,当拖动窗口时,它感觉非常缓慢。根据其他人在这个论坛上遇到的情况,我在创建表单时使用了DoubleBuffered=true,但没有效果。 关于如何改进这一点,有什么建议吗?提前谢谢

此函数在面板上绘制表示雷达的线条

    private void DrawRadarLines()
    {
        myPen = new Pen(Color.Red, 2);
        formGraphics = radarMap.CreateGraphics();

        for (int i = 0; i < sensorNetworkNum * 5; i++)
        {
            formGraphics.DrawLine(myPen, 
                (float)(195 - radarMapLines[i, 0] * scalingFactor), 
                (float)(195 - radarMapLines[i, 1] * scalingFactor), 
                (float)(195 - radarMapLines[i, 2] * scalingFactor), 
                (float)(195 - radarMapLines[i, 3] * scalingFactor));
        }

        myPen.Dispose();
        formGraphics.Dispose();
    }
private void drawlarlines()
{
myPen=新笔(颜色:红色,2);
formGraphics=radarMap.CreateGraphics();
对于(int i=0;i
当您使用CreateGraphics()时,这是不可避免的,您直接在屏幕上绘图。不要这样做,而是调用radarMap.Invalidate()并将代码移动到radarMap的绘制事件处理程序中。现在,双缓冲将起作用。

最后是否仍需要调用Dispose?据我所知,Dispose清除了资源。