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
[46527] Re:화면깜박임 질문이요~
BloodWolf [cyberpd] 1328 읽음    2006-09-13 11:24
허접 님이 쓰신 글 :
: 안녕하세요~
: 오랜만에 질문 드리는 허접입니다.
: 그래픽(?) 관련해서 질문이 있습니다.
: 현재 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();
    }

+ -

관련 글 리스트
46526 화면깜박임 질문이요~ 허접 908 2006/09/13
46527     Re:화면깜박임 질문이요~ BloodWolf 1328 2006/09/13
46529         Re:Re:화면깜박임 질문이요~ Batman 1460 2006/09/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.