|
CustomControl 의 내부가 그려지는 함수에서
ScrollBar의 영역을 감지해, 그 부분은 그리지 않도록 수정해 보세요.
같은 영역을 두 번 그리게 되면 깜박임 생기죠.
DoubleBuffered 를 true로 놓는 방법도 있지만,
메모리를 많이 사용하게 되고, 응답속도가 느려지는 단점이 있기 때문에
원천적으로 같은 영역을 덮어 그리는 작업을 최소화 해 주는게 가장 좋습니다.
임시로 가장 쉽게 접근할 수 있는 방법은 Drawing 처리 안에서 해당 CustomControl 의 Child Control들을
모두 Repaint() 해버리는 방법도 있긴합니다.
강대민 님이 쓰신 글 :
: ** 일반적인 TForm 스크롤바가 깜빡거리지않음
: void __fastcall TForm7::Button1Click(TObject *Sender)
: {
: TScrollBar *ScrollBar=new TScrollBar(this);
: ScrollBar->Parent=this;
:
: ScrollBar->Top=0;
: ScrollBar->Left=0;
: ScrollBar->Width=100;
: ScrollBar->Height=10;
: }
:
:
: ** TCustomControl 스크롤바가 깜빡거림
: __fastcall TCustomControl1::TCustomControl1(TComponent* Owner)
: : TCustomControl(Owner)
: {
: ScrollBar=new TScrollBar(this);
: ScrollBar->Parent=this;
:
: ScrollBar->Top=0;
: ScrollBar->Left=0;
: ScrollBar->Width=10;
: ScrollBar->Height=100;
:
: ScrollBar->Visible=true;
: }
:
: 커스텀 컨트롤을 만들들고 싶어서 컴포넌트의 new vcl compoent 메뉴에서
:
: TCustomControl 를 슈퍼클레스로해서 프로젝트를 생성했습니다
:
: 그리고 스크롤바가 필요해서 위의 소스처럼 생성장에서 new 시켜서 만들어줫습니다
:
: 스크롤바가 잘생성되고 작동도 잘되지만
:
: TCustomControl 의Invalidate 함수를 호출해서 다시그릴려면 new 만든 컨트롤까지
:
: 다시그리는지 배경색이나왔다 껌뻑거리내요.. 제가 만든프로그램이
:
: Invalidate 를 많이 호출하는대.. 덕분인지 위의 컨트롤이 껌뻑거리다 못해 어떨땐느 표시가 안나오기도하는대
:
: 어떤식으로 해결해야 할지 모르겠습니다
:
: 일반적인 TForm 도 그런지 Invalidate 함수를 타이머로 걸어서 호출해봐도 그러지는않내요...
:
: TCustomControl 위에 생성시킨 컨트롤이 그러나봅니다..
:
: 어떤식으로 해결해야할지 모르겠습니다.. 고수님의 관심 부탁드립니다
|