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

时间:2012-11-05 18:02:28

标签: .net drawing 2d

我正在尝试为节点网络的可视化表示创建.NET应用程序。这些节点是Drawing.Rectangle实例,可以使用鼠标拖动,并使用Graphics.DrawLine建立连接。如下所示。

network

为了避免重新绘制矩形,在拖动时留下一条丑陋的火车,我在组件上调用Graphics.Clear并在每次调用Mouse_Move时重新绘制每个矩形和线。但这会产生一种非常丑陋,闪烁的效果,因为我认为它被称为不够快......

是否有一些.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));
                }
            }
        }
    }

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:1)

这是一个非常复杂的主题,实际上有数千种不同的方法。您将不得不了解有关Windows图形和窗口子系统的更多信息。您可能希望从http://shop.oreilly.com/product/0790145369079.do

开始