我正在尝试为节点网络的可视化表示创建.NET应用程序。这些节点是Drawing.Rectangle实例,可以使用鼠标拖动,并使用Graphics.DrawLine建立连接。如下所示。
为了避免重新绘制矩形,在拖动时留下一条丑陋的火车,我在组件上调用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));
}
}
}
}
感谢您提供任何帮助。
答案 0 :(得分:1)
这是一个非常复杂的主题,实际上有数千种不同的方法。您将不得不了解有关Windows图形和窗口子系统的更多信息。您可能希望从http://shop.oreilly.com/product/0790145369079.do
开始