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
[58577] Re:SetPixel 질문 드려요..
장성호 [nasilso] 1702 읽음    2009-09-17 19:56
3만개를 찍는데 그렇게 느린가요?
다음과 같이 20만개의 점을  SetPixel을 찍어도  500ms가 나오지 않던데...

void __fastcall TForm1::Button9Click(TObject *Sender)
{
    //
    int tic=GetTickCount();
    HDC dc=GetDC(this->Handle);
    for(int i=0;i<200000;i++)
    {
        int x=rand()%this->ClientWidth;
        int y=rand()%this->ClientHeight;
        SetPixel(dc,x,y,clRed);
    }

    ReleaseDC(Handle,dc);
    tic=GetTickCount()-tic;
    ShowMessage(tic);
    //제 노트북에서 약 400ms
}
//---------------------------------------------------------------------------


그리고 님의 코드에 문제가 하나 있습니다.
GetDC를 했으면 반드시 ReleaseDC를 해줘야 합니다.

//다음과 같이 GetDC , ReleaseDC를 반복할 경우 약 1300ms 
void __fastcall TForm1::Button10Click(TObject *Sender)
{
    int tic=GetTickCount();

    for(int i=0;i<200000;i++)
    {
        int x=rand()%this->ClientWidth;
        int y=rand()%this->ClientHeight;
        HDC dc=GetDC(this->Handle);
        SetPixel(dc,x,y,clRed);
        ReleaseDC(Handle,dc);
    }
    tic=GetTickCount()-tic;
    ShowMessage(tic);
}
//---------------------------------------------------------------------------


즉 GetDC를 한번으로 줄이기만 해도 속도가 3배이상 나올것 같습니다.

그리고 원래 SetPixel 은 느린걸로 알고있습니다.
더블버퍼링을 써야 빨라집니다.
   더블버퍼링이란?
   1. 먼저 memoryDC에다가  원하는 그림을 다 그리고
   2. 맨 그림을 다 그린후에 실제 dc에다가 한번에 paint하는 방식입니다.

그럼..



정연진 님이 쓰신 글 :
: 안녕하세요..초보 빌더 6.0입니다..^^;
: 제가 파일에서 좌표값을 받아서 화면에 점을 찍는데요..
: 너무 느리네요. 한줄 읽어서 점찍고 한줄 읽어서 점찍고 하는거 같네요..
: 한 3만개쯤 되는데 버벅 거리다 끝나버려요....
:
: while(fgets(lines,100,fp))
: {
: sscanf(lines,"%d,%d",&x,&y);
: SetPixel(GetDC(this->Handle),x,y,clWhite);
: }
: 이런식으로 했는데요..
:
: 어떤 다른 좋은 방법이 있을지 고수님들 도와주세요^^;

+ -

관련 글 리스트
58576 SetPixel 질문 드려요.. 정연진 972 2009/09/17
58577     Re:SetPixel 질문 드려요.. 장성호 1702 2009/09/17
58581         Re:Re:SetPixel 질문 드려요.. 정연진 1556 2009/09/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.