문제

상상할 애니메이션은 어떤 물체에 WinForm.당신정 상태를 업데이트하거나,모델과 재정의 페인트는 이벤트의 형태입니다.하지만,거기에서 최선의 방법은 무엇일을 지속적으로 칠 양식에 대한 애니메이션인가?

  • 무효화 형태로 당신은 그림을 완료하면?
  • 설정에 두 번째 타이머 및 무효화 형태에서는 정기적인 간격으?
  • 아마도이는 일반적인 패턴 이은 것은?
  • 이 있습 유용합니다.NET 을까?

각 시간에 필요 내가 이것을 발견하는 새로운 방법으로 새로운 단점이 있습니다.은 무엇인 경험과 권장 사항에서 사회?

도움이 되었습니까?

해결책

어떤 상황에서,그것은 더 빠르고 편리하게 그려지지 않은 페인트를 사용하여 이벤트,하지만 이 그래픽 객체에서 제어/상태와 그림"on".이 줄 수 있습니다 몇 가지 문제와 불투명도/방지 aliasing/텍스트 등,하지만 가치가있을 수 있습니다 문제가지 측면에서는 다시 전체 shabang.의 라인을 따라 뭔가:

private void AnimationTimer_Tick(object sender, EventArgs args)
{
    // First paint background, like Clear(Control.Background), or by
    // painting an image you have previously buffered that was the background.
    animationControl.CreateGraphics().DrawImage(0, 0, animationImages[animationTick++])); 
}

내가 사용하는 이에 몇 가지 제어,자신하고 있는 버퍼링되 이미지는"지우기"배경으로,때는 객체의 관심을 이동하거나 제거해야 합니다.

다른 팁

내가 만들어 라이브러리할 수 있는 데 도움이 됩니다.그것의 전환이라고 합,그리고 여기에서 찾을 수 있습니다: http://code.google.com/p/dot-net-transitions/

이 타이머를 사용하에서 실행 되는 백그라운드 스레드 애니메이션 개체입니다.라이브러리의 오픈 소스는 경우,그래서 그는 어떤 사용할 수 있는 코드를 무엇을 보고는 그것의 일을 합니다.

무슨 일을 하는 유일한 솔루션에서 WinForms(타이머와 상수 redrawings).의 무리가 있할 수 있는 기술을 사용하는 사용자의 경험을 가진 그러(과 같은 이중 버퍼링).

를 제공할 수 있습 WPF 니다.이 내장되어 시설에 대한 일에서 애니메이션 WPF,그리고 그들이 훨씬 부드럽게(그리고 더 적은 필요한 코드와 동기화에 귀하의 부분)이 타이머를 기반 솔루션입니다.

참고로 당신을 사용할 필요가 없습 WPF 통해 전체 응용 프로그램를 위한 해결책;가능 팩 이 기능으로 WPF 통제를 포함하 제어 WinForms 응용 프로그램(또는 관리되지 않는 응용 프로그램,는 문제):

http://www.codeproject.com/KB/WPF/WPF_UserControls.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top