2010-03-16 3 views
0

화살표를 "애니메이트"해야합니다. 어떤 방향 으로든 (위, 아래, 왼쪽, 오른쪽, 대각선) 갈 수 있고 화살촉은 끝에 있습니다. 그것은 오린에서 끝까지 자라는 것처럼 보일 필요가 있습니다. 더 복잡한 작업을하려면 사용자 정의 컨트롤에 있어야하므로 양식의 컨트롤 컬렉션에 추가하고 제거하여 화면에서 삭제할 수 있으며 배경은 실제로 투명합니다 (color.transparent가 없음). 나는 이전 선을 "지우려면"배경을 칠할 수 없습니다. 나는 그것을 정적으로 가지고있다. (원점에서 끝으로 그려진다.) 그러나 나는 그것을 움직일 수 없다. 사용자 정의 컨트롤에 타이머를 추가하려고했지만 성장하는 동안 라인의 중간 끝을 계산하는 올바른 알고리즘을 얻지 못했습니다. 도움이 될 것입니다. 감사합니다.화살촉이있는 e.Graphics.DrawLine에 애니메이션을 적용하십시오.

답변

0

Windows 폼에서 애니메이션을 사용하는 경우 다른 스레드를 사용해야합니다. 배경 작업자를 찾으십시오. http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

+0

배경 작업자를 사용하고 싶지 않은 경우 그림 상자를 사용하고 이미지를 바꿀 수 있다고 생각합니다. 나는 개인적으로 배경 작업자를 사용할 것입니다. – Icono123

+0

내 문제는 그것이 생기지 않도록 선을 "움직이는"방법이었습니다. 내 말은, 내가 별도의 스레드에서 그것을 할 계획이지만, 나는 라인이 성장하는 것처럼 보이게하는 방법을 찾을 수 없습니다. 나는 지금 길을 발견했다. 그것은 포인트별로 그림을 그린다. 덕분에 – Fer

+0

별도의 스레드를 사용할 필요가 없습니다. 멀티 스레딩 코드는 복잡하고 필연적이지 않습니다. 제 답변을 참조하십시오. – GarethOwen

0

다른 스레드가 필요하지 않습니다. Windows Forms 애니메이션을 성공적으로 구현했습니다.

내 디자인 :

    • 정기적으로 콜백 함수 '애니메이션을() 호출 할 Windows.System.Forms.Timer 객체를 사용하면 애니메이션() 함수는 화살표의 속성을 업데이트 , 그리고 윈도우 컨트롤에서 Invalidate()를 호출합니다.
    • 이 모든 것이 동일한 UI 스레드에서 발생하기 때문에 컨트롤에 더블 더플 링이 켜져있는 한 깜박임 효과가 발생하지 않습니다.
  • 관련 문제