2013-08-24 2 views
1

지금까지 필자는 Microsoft에 here이라는 예제를 복사/붙여 넣기했습니다 (그러나 #include는 제거했습니다).Window의 C++ 그래픽 (GDI +) 라이브러리로 개체를 이동하는 방법은 무엇입니까?

나는 OnPaint가 (움직이는 물체를 가지고있는 것처럼) 계속적으로 어떻게 불려지는지 알아 내려하고 있지만, 한 번 이상 호출되지는 않는 것 같습니다.

표준 Windows C++ 그래픽 라이브러리 (예 : GDI + 또는 다른 표준 Windows API)를 사용하여 움직이는 객체를 만드는 방법은 무엇입니까? OnPaint에게 직접 전화해야합니까? 아니면 지속적으로 호출되도록하는 쉬운 수정이 있습니까? 아니면 그냥 불가능한가요?

+0

왜 downvote? – Cisplatin

+0

윈도우가'WM_PAINT' 메시지를 처리 ​​할 때마다 호출됩니다. – chris

+0

더 자세히 설명 할 수 있습니까? 그게 내가 찾고있는 것이고, 나는 그것을 온라인으로 찾을 수 없다. – Cisplatin

답변

1

OnPaint() 메서드는 Windows에서 창을 다시 그릴 필요가 있다고 생각할 때만 실행됩니다. 일반적으로 창을 처음 만들 때 한 번만 발생합니다. 또는 창 최소화 및 복원시.

두 번 이상 실행하고 애니메이션을 적용하려면 다시 칠할 필요가 있음을 알려야합니다. 이렇게하는 가장 좋은 방법은 타이머를 사용하는 것입니다, 그것은 당신에게 애니메이션 시계를 줄 것입니다. 간격을 15.625 밀리 초의 배수보다 조금 작은 숫자로 설정하십시오. 45msec는 괜찮은 가치이며 초당 21 건의 업데이트를 제공합니다. 당신이 충분히 빨리 칠할 수 있다고 가정하십시오. WM_TIMER 메시지 처리기에서 InvalidateRect()를 호출하십시오. 또는 Winforms를 사용하는 경우 Invalidate().

관련 문제