|
안녕하세요.
현재 PaintBox를 이용하여 그림을 처리하는 툴을 만들고 있는데, 마우스의 움직임에 따라 특정영역을 제외한 부분을 검은색으로 칠하는 것을 만들고 있습니다. 왜 이렇게 하느냐 하면, PaintBox 아래쪽에 있는 그림의 특정부분만을 볼려고 하는 것입니다.
우선 소스를 올립니다. 여기서 PB_Draw가 PaintBox입니다. 폼은 화면전체크기사이즈입니다.
void __fastcall TForm1::PB_DrawMouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
Form1->DoubleBuffered = true;
Draw_Blank (X, Y);
}
void __fastcall TForm1::Draw_Blank(int x, int y)
{
TRect r;
PB_Draw->Refresh (); // 현재 그려져 있는 부분을 지우기
PB_Draw->Canvas->Pen->Width = 5;
PB_Draw->Canvas->Pen->Color = clBlack;
PB_Draw->Canvas->Pen->Mode = pmCopy;
PB_Draw->Canvas->Pen->Style = psSolid;
PB_Draw->Canvas->Brush->Color = clBlack;
PB_Draw->Canvas->Brush->Style = bsSolid;
r.left = 0;
r.top = 0;
r.right = Screen->Width;
r.bottom = y;
PB_Draw->Canvas->Rectangle (r);
r.left = 0;
r.top = y;
r.right = x;
r.bottom = y+100;
PB_Draw->Canvas->Rectangle (r);
r.left = x+100;
r.top = y;
r.right = Screen->Width;
r.bottom = y+100;
PB_Draw->Canvas->Rectangle (r);
r.left = 0;
r.top = y+100;
r.right = Screen->Width;
r.bottom = Screen->Height;
PB_Draw->Canvas->Rectangle (r);
}
여기서 문제는 PB_Draw->Refresh ()부분에서 화면 번쩍임 현상이 발생한다는 것입니다. 이를 해결할 수 있는 방법이 없을까요 ?
|