|
태윤님 덕분에 개념이 정리 되서리.. 참 고맙습니다..^^
자꾸 이상한 값이 나와서염.. --> 트래커 그릴라고 하고 있거던여
도형을 선택하면..
//-------- 좌표값을 저장함. ------------
// all->Add(new box(TRect(100,100,200,300),"box1"));
switch (ShapeNum)
{
case 0: //선택
break;
case 1: //사각형
all->Add(new box(TRect(Point1.x, Point1.y,X,Y)));
break;
case 2: //둥근 사각형
all->Add(new Round(TRect(Point1.x, Point1.y,X,Y)));
break;
case 3: //원
all->Add(new cirlc(TRect(Point1.x, Point1.y,X,Y)));
break;
};
//-----------------------------------------
//--------- 도형을 선택함. ----------------
1. 도형을 선택함
2. 선택된 도형이 맨앞으로 옴
all->Move(cur_index, all->Count-1); // 찾은 객체를 맨 마지막으로 옮긴다.
draw_all(); //다시 그린다.
Tr = (TRect *) all->Items[all->Count-1];
Tracker(*Tr); //tracker를 그린다.
//---------- 트래커를 그림 ---------------
void __fastcall TForm1::Tracker(TRect r)
r={left:4211976 top:233 right:93 buttom:371}
--->> 들어가는 값이 넘 크게 들어가염(왜 이렇게 되는지)
제가 뭘 잘못 했나여..?
{
DrawShapePoint(r.left-3 ,r.top-3 ,r.left+3 ,r.top+3);
DrawShapePoint(r.right-3 ,r.top-3 ,r.right+3 ,r.top+3);
DrawShapePoint(r.left-3 ,r.bottom-3 ,r.left+3 ,r.bottom+3);
DrawShapePoint(r.right-3 ,r.bottom-3 ,r.right+3 ,r.bottom+3);
DrawShapePoint(r.left-3 ,r.top + ((r.bottom - r.top)/2)-3
,r.left+3 ,r.top + ((r.bottom - r.top)/2)+3);
DrawShapePoint(r.right-3 ,r.top + ((r.bottom - r.top)/2)-3
,r.right+3 ,r.top + ((r.bottom - r.top)/2)+3);
DrawShapePoint(r.left + ((r.right - r.left)/2)-3, r.top-3
,r.left + ((r.right - r.left)/2)+3, r.top +3);
DrawShapePoint(r.left + ((r.right - r.left)/2)-3, r.bottom-3
,r.left + ((r.right - r.left)/2)+3, r.bottom +3);
}
void __fastcall TForm1::DrawShapePoint(int w, int x, int y, int z)
{
Form1->Canvas->Brush->Color = clBlack;
Form1->Canvas->Brush->Style = bsSolid;
Form1->Canvas->Pen->Mode = pmNotXor;
Form1->Canvas->Pen->Style = psSolid;
Form1->Canvas->FillRect(Rect(w,x,y,z));
}
//----------------------------------------------------------------------------
|