|
void __fastcall TForm1::FormCreate(TObject *Sender)
{
pl=new TList();
btn_pressed=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
for(int i=0;i<pl->Count;i++){
delete pl->Items[i];
}
delete pl;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
btn_pressed=true;
pl->Add(new TPoint(-1,0));
pl->Add(new TPoint(X,Y));
PaintBox1->Canvas->MoveTo(X,Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
btn_pressed=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
if(btn_pressed){
PaintBox1->Canvas->LineTo(X,Y);
pl->Add(new TPoint(X,Y));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) //clear
{
PaintBox1->Canvas->FillRect(PaintBox1->ClientRect);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender) // re-draw
{
for(int i=0;i<pl->Count;i++){
if(((TPoint*)(pl->Items[i]))->x==-1){
i++;
PaintBox1->Canvas->MoveTo(((TPoint*)(pl->Items[i]))->x,((TPoint*)(pl->Items[i]))->y);
}else{
PaintBox1->Canvas->LineTo(((TPoint*)(pl->Items[i]))->x,((TPoint*)(pl->Items[i]))->y);
}
}
}
.끝.
조성택 님이 쓰신 글 :
: 페인트 박스에서 마우스로 선을 그리고 다시 그려질대는 TList에 미리 정보를 넣어서 다시 그리게 하려고 하는데 잘 안되네요..하는 방법좀..
|