TImage Flickering 문제

From YYpBD's MediaWiki

Jump to: navigation, search
Panel위에 이미지 컴포넌트를 올리고 Panel에 DoubleBuffered 속성을 True를 주었는데 깜박거린다.
혹시나 해서 Align을 제거해보니 제대로 동작한다.
이건 뭐지??
델파이 7에서 해보니 잘 동작한다...
FullRepaint라는 프로퍼티가 있어서 수정해보니 요상하게 동작

혹시나 해서 구글신의 도움을 받아보니 아래와 같은 내용이 있군...

http://www.stevetrefethen.com/blog/UsingTheWSEXCOMPOSITEWindowStyleToEliminateFlickerOnWindowsXP.aspx

윈도우 XP인 경우 폼에 속성을 더해주는 것이고...


http://www.stevetrefethen.com/blog/QuickTip2FixingFlickerCausedByWMERASEBKGNDInADelphiVCLApp.aspx

VCL 소스를 직접 수정하는 것이다.


위 방법은 많은 문제 발생여지가 있으니...

http://www.efg2.com/Lab/Library/Delphi/Graphics/Algorithms.htm
여기서 Flicker Elimination 쪽을 찾아봐도 되겠고

http://newsgroups.cryer.info/borland/public.delphi.graphics/200607/0607122347.html

여기처럼 Erase Background 메시지를 무시해버리는 방법도 있다.


ps
1. 첫번째 CreateParams 방법으로는 간단한 프로그램은 동작하나 실제 어플리케이션에 적용하니 프로그램이 멎어버리는 현상이 발생했다.
2. 두번째 방법은 VCL의 소스를 바꿔야되니 조금 위험하다.
3. TImage와 TImage안의 TBitmap의 사이즈가 동일하면 플리커링이 발생하지 않는다는 내용이 있었다.
4. 최종으로 적용한 것은 이xx 차장님의 일명 변태상속을 이용하여 TPanel을 상속받아서 WM_ERASEBKGND를 처리하였다. 깔끔하게 동작한다.
맞춤검색