C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[75311] Re:Re:Re:실행파일 열기에서 여러 폼 생성시 만들어지는 잔상이 보이는 문제
빌더(TWx) [builder] 2750 읽음    2019-03-15 13:41
님이 쓰신 글 :
: 송신영 님이 쓰신 글 :
: : Form Properties 중에 DoubleBuffered 를 true로 설정해 보세요.
: :
: :
: : 남스 님이 쓰신 글 :
: : : 안녕하세요
: : : 6개의 폼이 있는 실행파일을 실행시킬때 화면에 버튼같은 컴포넌트가 많은폼에서는 잔상이 심하게 보이다가 없어지네요..
: : : 방법이 없을까요?
: 폼별로 모두 설정해보았으나 별 효과가 없네요 ㅜㅜ



답변:


DoubleBuffered 는 Redraw 과정에서 일어나는 플리커 현상을 줄이기 위한 목적으로 사용되는 거고
위와 같은 증상을 해결하기 위한 목적에는 해당되지 않습니다. 메모리 사용량만 늘어 남.

플리커 현상을 줄이기 위한 필요가 있을 때도 DoubleBuffered 사용하지 말고
WM_ERASEBKGND와 WM_PAINT를 오버라이드 해서 필요한 부분만 그리는 방법이 가장 효과적인 방법임.



본론으로 돌아와서...

디자인 타임시에 폼에 버튼과 같은 컴포넌트 들을 배치하면...
컴파일 과정에서 컴파일러가 디자인 타임시에 폼에 배치된 콘트롤들의 계층구조를 리소스 섹션에 넣고

컴파일 된 프로그램 실행시 링크된 VCL 라이브러리 코드가 리소스 섹션을 읽어서...
콘트롤들의 RTTI 정보를 이용해서 콘트롤 들을 동적으로 생성 합니다.

콘트롤들이 많으면 RTTI 정보들을 파싱하는 과정이 지체되고, 콘트롤 생성과정에서
Delayed Layout 처리가 제대로 되지 않으면 개별적인 콘트롤 마다 Repaint 되는 동작들이
반복되어 시간이 지체 되기도 합니다.

리소스 섹션에 들어있는 콘트롤 계층 구조를  RTTI 정보를 이용해서 생성하고, 모든 콘트롤 들이 다 생성될 때 까지
레이아웃을 지연처리 하도록 VCL 라이브러리를 직접 수정해서 쓰거나...

아니면 Layout 처리가 개선된 최신 버전의 툴로 바꿔서 사용하세요.






+ -

관련 글 리스트
75306 실행파일 열기에서 여러 폼 생성시 만들어지는 잔상이 보이는 문제 남스 2499 2019/03/14
75307     Re:실행파일 열기에서 여러 폼 생성시 만들어지는 잔상이 보이는 문제 송신영 2541 2019/03/14
75308         Re:Re:실행파일 열기에서 여러 폼 생성시 만들어지는 잔상이 보이는 문제 2474 2019/03/14
75311             Re:Re:Re:실행파일 열기에서 여러 폼 생성시 만들어지는 잔상이 보이는 문제 빌더(TWx) 2750 2019/03/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.