我正在尝试为节点网络的可视化表示创建一个 .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));
}
}
}
}
感谢您提供的任何帮助。