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
[18882] Re:Re:Re:BitBlt는 해결 했으나 여전히 깜빡임은 ㅠ.ㅠ....
유영인.Chris [cuperido] 2174 읽음    2002-05-25 16:43
제 실력으로는 아래 소스만 보구서는.. 원인을 찝어내니가.. 힘들것 같네요.

Line 을 일일히 줄에 다 그려주는 루틴도 상당히 느릴 것 같고.. Invalidate 도 썩 내키지 않구요.. 만약 급하신 일이라면.. 메일로 프로젝트 압축해서 보내주시면 어떻게든 수정을 해서 보내드릴께요..


최흥배 님이 쓰신 글 :
: BitBlt는 제가 Invalidate를 사용하니까 제대로 되는데
: 그래도 깜빡이는건 여전하네요...
: 제발 좀 아시는분 좀 가르쳐주세요...ㅠ.ㅠ
: 이건 게임 제작에 사용할 맵툴이라 깜빡이면 눈이 너무 피곤 할것 같아
: 깜빡이는거 꼭 고치고 싶네요
:
: : ........
: : void CImgprocess::WorkViewInit(TImage &workview)
: : {
: :                  m_WorkView = &workview;
: :
: :                  int width,height;
: :                  //WorkView의 크기.
: :                  width = m_WorkView->Width;
: :                  height = m_WorkView->Height;
: :                  m_iWorkWidth = width;
: :                  m_iWorkHeight = height;
: :                  // target비트맵 초기화.
: :                  m_TargetImg->Width = width;
: :                  m_TargetImg->Height = height;
: :                  //모바일에서 사용하는 투명색을 바탕에 칠한다.
: :                  m_TargetImg->Canvas->Brush->Color = TColor(RGB(32,144,32));
: :                  m_TargetImg->Canvas->FillRect(TRect(0,0,width,height));
: :                  WHLineDraw(*m_TargetImg,width,height,m_iTileW,m_iTileH);
: :                  Swap();
: : }
: :
: : // 이미지 컨트롤 바탕을 위에 지정한 색으로 칠하기 위해 비트맵에 가로,세로로 선을 그립니다.
: : void CImgprocess::WHLineDraw(TImage& image,int x, int y, int tilewidth, int tileheight)
: : {
: :                   image.Canvas->Pen->Style = psDot;
: :                   for(int i=0;i<=x;i+=tilewidth)
: :                   {
: :                                    image.Canvas->MoveTo(i,0);
: :                                    image.Canvas->LineTo(i,y);
: :                   }
: :                   for(int i=0;i<=y;i+=tileheight)
: :                   {
: :                                    image.Canvas->MoveTo(0,i);
: :                                    image.Canvas->LineTo(x,i);
: :                   }
: :
: : }
: :
: : // 비트맵에 다른 비트맵에서 원하는부분만큼을 지정한 위치에 그립니다.
: : void CImgprocess::DrawWorkViewTile(TileInfo& desttile)
: : {
: :          m_ImgMat[m_WorkTilePos.row][m_WorkTilePos.col] = m_ImgTilePos;
: :          m_TargetImg->Canvas->CopyRect(desttile.rRange,m_SrcBmp->Canvas,
: :                                                                        TRect(0,0,m_iTileW-1,m_iTileH-1));
: :          Swap();
: : }
: :
: : // 비트맵을 이미지 컨트롤에 그립니다.
: : void CImgprocess::Swap()
: : {
: :                   if(m_TargetImg == NULL) return;
: :                   BitBlt(m_WorkView->Canvas->Handle, 0,0,
: :                                    m_iWorkWidth,m_iWorkHeight,
: :                               m_TargetImg->Canvas->Handle, 0, 0, SRCCOPY);
:                      m_WorkView->Invalidate();
: :
: :       //CopyRect는 깜박임이 있네요.
: :                   //m_WorkView->Canvas->CopyRect(TRect(0,0,m_iWorkWidth,m_iWorkHeight),
: :                        //                                                 m_TargetImg->Canvas,TRect(0,0,m_iWorkWidth,m_iWorkHeight));
: : }
:
:

+ -

관련 글 리스트
18871 [질문] 더블 버퍼링에 대해서요.... 최흥배 1362 2002/05/25
18874     Re:[질문] 더블 버퍼링에 대해서요.... 유영인.Chris 1679 2002/05/25
18881         Re:Re:BitBlt는 해결 했으나 여전히 깜빡임은 ㅠ.ㅠ.... 최흥배 2210 2002/05/25
18882             Re:Re:Re:BitBlt는 해결 했으나 여전히 깜빡임은 ㅠ.ㅠ.... 유영인.Chris 2174 2002/05/25
18883                 메일 보냈습니다.(냉무) 최흥배 959 2002/05/25
18886                     Re:문제에 관한 해결 방법.... 유영인.Chris 2282 2002/05/26
18894                         Re:Re:정말 고맙습니다. 최흥배 1086 2002/05/27
18873     Re:[질문] 더블 버퍼링에 대해서요.... 불사새 1421 2002/05/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.