|
제 실력으로는 아래 소스만 보구서는.. 원인을 찝어내니가.. 힘들것 같네요.
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));
: : }
:
:
|