저는 SQLGate 라는 프로그램을 개발하고 있는 개발자입니다.
제목에서 Doublebuffred 에 대해서 몇가지 체험을 이야기 하려고 합니다.
구글에서 검색해 보면,
"컨트롤에서 깜빡임을 줄이거나 방지하기 위해 보조 버퍼를 사용하여 화면을 다시 그려야 하는지 여부를 나타내는 값을 가져오거나 설정합니다. "
라고 나옵니다.
http://msdn.microsoft.com/ko-kr/library/system.windows.forms.control.doublebuffered.aspx
SQLGate 라는 제품에서 SQLGate2010 이라는 제품으로 업그레이드를 하면서 컴파일로를 교체했었습니다.
유니코드를 지원한다는 사실 만으로 그동안 미루어 왔던 컴파일러를 바꿀 시기가 되었다 판단되었습니다.
그 이후 2년 이상의 시간이 흘렀습니다.
많은 사용자들이 SQLGate 가 이전보다 느려졌다라고 이야기 합니다.
저는 SQLGate를 듀얼 모니터에서 사용해도 느린감을 못찾았습니다. - 이유는 제가 UI를 자주 변경해서 작업하지 않는데 있었죠 -
최근 홍** 전산실에서 사용하는 사용자를 만났고 그 이유를 대해서 자세히 듣게 되었습니다.
화면을 최대한 해보니 MDI 창에 CHILD WINDOW가 같이 확대되는 과정에서 페인팅 문제로 인해서 프로그램이 느려지는 현상을 눈으로도 확인할 수 있었습니다.
사무실에 들어와 여러가지 코드를 하나씩 지워가면서 UI의 잔상을 눈으로 계속 확인했습니다. 정말 눈이 너무 아프고 달리 자동화 할수 있는 방법이 없었습니다.
전 오직 서드파티 컴포넌트의 페인팅 코드가 문제가 있을꺼라고 생각했습니다. 특히 SpTBX 계열 컴포넌트가 느리게 작동하는걸 알았고 이를 교체해야겠다고 생각했습니다. 근데 아시다시피 SpTBX 가 델 2007에서 유니코드를 지원하는 컴포넌트라 사용했었던건데 델2009 로 오면서 필요하지 않았지만 기존의 코드가 이미 너무 많이 작성되어 있는 상태였습니다. 그래서 교체하는 작업이 상단한 시간을 요구할 거라 생각했고, 그래도 교체해야 한다고 판단했습니다.
SpTBX 를 뜯어 내는 작업을 상단히 힘들었습니다.
그러는 중에 우리는 새로운 것을 확인하게 되었습니다.
델7에서 패널을 두개 올려 놓고 아래쪽 패널의 Align= alClient 를 놓고 그 패널 위에 TLabel 만 올려 놓습니다.
그리고 실행후에 폼의 크기를 조절합니다. 좀 빠르게 .....
그러면 TLabel의 캡션이 깜빡이 없이 잘 표시 됩니다.
그런데 똑같은 상황을 델2009에서 사용하면 캡션이 깜박거립니다. 단지 캡션만 올려 놓았을 뿐인데요.
사실 좀 놀랐습니다. 그 상태로 약 2년간 개발을 해왔다는 사실에 우리 개발팀도 좀 놀랐습니다.
그중에 델2009에서 부터 생긴 Doublebuffred 에 대해서 알게 되었고, Doublebuffred = True 로 해 놓았을 뿐인데
우리 프로그램은 화면 UI 의 움직임이 눈에 띄게 좋아졌습니다.
거기에 패널에 ParentBGColor 라는 프로퍼티를 False 로 해주면 더욱 움직이 없는 패인팅을 한다는걸 알게 되었습니다.
혹시나 저와 같은 현상으로 고민하시는 분들은 꼭 확인해 보세요
감사합니다.
혹시 더 빠르게 표시할수 있는 방법이 있는 분은 꼭 좀 알려주세요.
Doublebufferd는 꽤 오래 전부터 사용이 가능했던거 같은데요.
적어도 델파이 7에서는 사용 가능했던거 같은데요^^* 아닌가요 ㅡ.ㅡa