0
노드 네트워크를 시각적으로 표시하기 위해 .NET 응용 프로그램을 만들려고합니다. 노드는 마우스로 드래그 할 수있는 Drawing.Rectangle 인스턴스이며 Graphics.DrawLine을 사용하여 연결합니다. 아래처럼. .NET에서 노드 네트워크 그리기 화면이 너무 느리게 재생 됨
는 사각형들은 드래그 때, 내가 구성 요소에 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));
}
}
}
}
감사합니다.
양식/패널에 대해 이중 버퍼링을 설정 했습니까? http://msdn.microsoft.com/en-us/library/system.windows.forms.control.doublebuffered.aspx –
코드를 현재 수행중인 방식으로 표시하십시오. –
관련 코드 비트를 추가했습니다. 결과가없는 폼에서 DobuleBuffered를 사용하려고했습니다. – Alex