在.NET中绘制节点网络,屏幕刷新太慢

在.NET中绘制节点网络,屏幕刷新太慢,.net,drawing,2d,.net,Drawing,2d,我正在尝试创建一个.NET应用程序来可视化表示节点网络。节点正在绘制。可以用鼠标拖动的矩形实例以及使用Graphics.DrawLine建立的连接。如下图所示 为了避免矩形在拖动时被重新绘制而留下丑陋的序列,我正在调用Graphics.Clear(图形)。在组件上清除并在每次调用鼠标时重新绘制每个矩形和线条。但这导致了一个非常丑陋的闪光效果,因为我认为它被称为不够快 是否有一些.NET函数或更好的方法重新绘制此场景,以便刷新看起来更平滑 我的代码: private void Nodes

我正在尝试创建一个.NET应用程序来可视化表示节点网络。节点正在绘制。可以用鼠标拖动的矩形实例以及使用Graphics.DrawLine建立的连接。如下图所示

为了避免矩形在拖动时被重新绘制而留下丑陋的序列,我正在调用Graphics.Clear(图形)。在组件上清除并在每次调用鼠标时重新绘制每个矩形和线条。但这导致了一个非常丑陋的闪光效果,因为我认为它被称为不够快

是否有一些.NET函数或更好的方法重新绘制此场景,以便刷新看起来更平滑

我的代码:

    private void NodesPanel_MouseMove(object sender, MouseEventArgs e)
    {
        if (MouseButtons.Left == e.Button)
        {

            if (currentlyClickedNode != null)
            {
                surface.Clear(Color.White);
                drawUnselectedNodes();
                drawConnections();

                if (!ClickedNodeGate) // Clicked on the node
                {
                    currentlyClickedNode.setPosition(e.X - QuestNode.NODE_WIDTH / 2, e.Y - QuestNode.NODE_HEIGHT / 2);
                    currentlyClickedNode.drawMe(surface, penl);
                }
                else // clicked on the gate
                {
                    drawingLine = true;
                    currentlyClickedNode.drawMe(surface, penl);
                    DrawingHelper.DrawLine(surface, penl, currentlyClickedNode.getGatePosition(), new Vector2D(e.X, e.Y));
                }
            }
        }
    }

感谢您提供的任何帮助。

这是一个非常复杂的主题,有成千上万种不同的方法可以做到这一点。您将必须了解有关Windows图形和窗口子系统的更多信息。您可能想从

开始,您是否为表单/面板打开了双缓冲?请在当前操作中显示代码。添加了相关的代码位。我尝试在表单上启用DobuleBuffered,但没有结果