|
어떤 뜻인지 알겠습니다~
엉뚱한곳에서 해결책을 찾으려 했군요 ㅠㅠ;;
화면은 하나니 수치상의 데이터값으로 해당 도형을 없애거나 생성하는 것이군요.
답변 감사합니다~~^^
송신영 님이 쓰신 글 :
: 그리거나 지우거나 할 경우 최종적으로 출력되는 부분은 화면 하나라는 사실입니다.
: 그래서 이미 화면에 출력된 여러개의 그림은 하나의 그림이라고 볼수 있습니다.
: 이것을 각각 분리하는 것은 불가능하죠
: 그래서 그림판이나 그런 그리기 툴에서는 그리는 부분은 한곳에서 처리하고
: 그리고자하는 내용을 수치상의 데이터로만 관리해야합니다.
: 내가 사각형을 그린다고 치면 그려지는 사각형의 데이터(좌표값, 색상, 굵기등..)만 설정하고 유지한상태로
: 그려지는 부분에 데이터가 준비되었으니 그리라는 명령만해주면 그리는 쪽에서는
: 데이터를 기준으로 그리기만하면됩니다.
: 그려지는 데이터가 여러개이면 해당 데이터도 여러개로 관리해야합니다.
: 그러면 나중에 내가 그린 특정한 부분만 다시 지우고자 할경우
: 해당 데이터만 삭제시키고 다시 그리면 삭제된 데이터 부분만 안그려 지겠죠
: 그림판등에서 그리기 취소등의 동작은 이런 식으로 이루어지는 것입니다.
: 즉, 최종 출력 물인 DC나 Canvas를 가지고 어떻게 하려고 하지 말고
: 따로 그려지는 수치상의 데이터를 관리해야한다는 것입니다.
:
: 김현우 님이 쓰신 글 :
: : 안녕하세요.
: : TCanvas 관련해서 질문 드립니다
: : 제가 아래 와 같이 버튼(정사각형)으로 정사각형을 Panel1 에 만들었는데요..
: : 만든 정사각형외각을 드래그해서 모양도 바꾸는 것까지는 했습니다.
: :
: : 그런데 다른 버튼(다각형)을 하나 새로 만들어서 Panel1에 또 다른 도형을 추가 하려고 합니다.
: :
: : 그러면 Panel1 에 정사각형과 또다른 도형이 그려지는데요..
: : 저는 그 두개의 도형이 서로다른 Canvas로 개별적으로 지우거나 모양을 변형 시키고 싶은데요..
: : 제가 (TCanvas *Canvas = new TCanvas;) TCanvas를 할당 하였는데
: : 그 그림을 지우려고 하면 하면 두개 도형이 같이 없어지잖아요...
: : 개별적으로 그려지거나 지우거나 할수 없나요
: : Panel1 안에 서로 다른 여러 Canvas를 그려지게 하고 싶습니다.
: : 배열처럼 여러개로 할 수 는 없는지 방법을 찾고 있는데 .. 아직 못찾고 있습니다. ㅠㅠ
: : 질문의 요지를 최대한 정리하려고 했는데요 이해가 되시는분 부탁드립니다. ㅠㅠ.;;
: :
: : void __fastcall TForm1::RECClick(TObject *Sender)
: : {
: : TCanvas *Canvas = new TCanvas;
: : HDC hdc;
: : hdc = NULL;
: :
: : hdc = GetDC(Panel1->Handle);
: : Canvas -> Handle = hdc;
: : Canvas -> Pen -> Width = 1;
: : Canvas -> Pen -> Color = clRed;
: : Canvas -> Pen -> Style = psSolid;
: : Canvas -> Brush -> Style = bsClear;
: :
: : Canvas -> Rectangle(X1,Y1,X2,Y2);
: : ReleaseDC(Handle,hdc);
: : delete Canvas;
: : GetRec = true;
: : }
: : void __fastcall TForm1::POLYClick(TObject *Sender)
: : {
: : TCanvas *Canvas = new TCanvas;
: : //TCanvas canvas[5];
: : HDC hdc;
: : hdc = NULL;
: :
: : hdc = GetDC(Panel1->Handle);
: : Canvas -> Handle = hdc; Canvas -> Pen -> Width = 1;
: : Canvas -> Pen -> Color = clGreen;
: : Canvas -> Pen -> Style = psSolid;
: : Canvas -> Brush -> Style = bsClear;
: :
: : TPoint points[9];
: : points[0] = Point(px0,py0);
: : points[1] = Point(px1,py1);
: : points[2] = Point(px2,py2);
: : points[3] = Point(px3,py3);
: : points[4] = Point(px4,py4);
: : points[5] = Point(px5,py5);
: : points[6] = Point(px6,py6);
: : points[7] = Point(px7,py7);
: : points[8] = Point(px8,py8);
: :
: : pCanvas->Polygon(points,PolySize);
: : ReleaseDC(Handle,hdc);//
: : delete Canvas;
: : GetPoly = true;
: : }
|