|
이상하게 BDS 2006에서는 깜빡임이 심하네요. DoubleBuffer도 잘 안먹고요..
BloodWolf 님이 쓰신 글 :
: 허접 님이 쓰신 글 :
: : 안녕하세요~
: : 오랜만에 질문 드리는 허접입니다.
: : 그래픽(?) 관련해서 질문이 있습니다.
: : 현재 RS232 통신을 통해서 들어오는 데이터를 가지고 라인을 그리고 있습니다.
: : Panel 위에 Image Box 를 놓고 그 위에 라인을 그립니다.
: :
: : ---------------------------------------------------------------------
: : POINT pt;
: : GetCursorPos (&pt);
: : SetCursorPos (bData[3]+pt.x, bData[2]+pt.y);
: :
: : CI1->Canvas->MoveTo(pt.x-Left-203, pt.y-Top-109);
: : CI1->Canvas->LineTo(bData[3]+pt.x-Left-203, bData[2]+pt.y-Top-109);
: : ---------------------------------------------------------------------
: :
: : 그런데 문제는, CI1 이라는 Image Box에 JPEG 형식의 그림 파일을 dll로 등록해서 배경그림으로 사용하고 있는데, 화면에 라인을 그려줄때 화면이 엄청나게 깜박거리네요.
: : 음... 더블버퍼링인가.. 그게 유일한 해결책이라고 하는거 같은데, 어찌 사용을 해야하는지 모르겠습니다.
: : 해결책좀 알려주세요~~ 가능하시다면.. 소스도 부탁 드릴께요..
:
: double buffering은 main form 생성자 부분에서 다음 코드를 넣어주면 됩니다.
:
: this->DoubleBuffered=true;
:
: Panel에 그림을 그리는 루틴에서는 다음과 같이 Canvas에 Lock/Unlock을 사용해 주면 깜박임이 줄어듭니다.
:
: POINT pt;
: GetCursorPos (&pt);
: SetCursorPos (bData[3]+pt.x, bData[2]+pt.y);
:
: CI1->Canvas->Lock();
: try
: {
: CI1->Canvas->MoveTo(pt.x-Left-203, pt.y-Top-109);
: CI1->Canvas->LineTo(bData[3]+pt.x-Left-203, bData[2]+pt.y-Top-109);
: } __finally
: {
: CI1->Canvas->Unlock();
: }
|