|
왕골 님이 쓰신 글 :
: 안녕하세요. 빌더 초보입니다.
:
: 제가 질문하고자 하는 것은 폼위에 canvas로 그래프(가로축:시간, 세로축:하중(kg) )를 그리고 난 후 그 그래프를 마우스를 이용하여 세로축의 위치를 바꾼(즉 가로축 데이타는 변함이 없고 세로축만 가변) 다음 바꾸어진 데이타를 저장할려고 하는데 전혀 아이디어가 없습니다.
:
: 고수님들의 조언 부탁드립니다.
:
: 그럼.....
임펠리테리입니다.
아주 간단한 방법은 없겠네요. 먼저, 혹시 지금 폼의 캔버스에 직접 그리고 계시다면 페인트박스로 바꾸시길 권합니다. 폼의 캔바스를 그대로 사용하면 드래그 처리가 다시 일정 영역으로 제한해야 할테니 더 복잡해질 거구요.
다음은 간단히 작성해본 예제인데.. 원하시는 내용과 똑같지는 않습니다. 하지만 응용해보시면 될 겁니다. 빈 폼에 페인트박스 하나를 올리고, OnPaint와 OnDragOver이벤트를 다음과 같이 작성합니다. 페인트박스의 드래그모드는 오토매틱이어야 합니다.
int OrgX = 0, OrgY = 0;
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
PaintBox1->Canvas->MoveTo(OrgX + 30, OrgY + 30);
PaintBox1->Canvas->LineTo(OrgX + 120, OrgY + 60);
}
void __fastcall TForm1::PaintBox1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
OrgX = X, OrgY = Y;
PaintBox1->Invalidate();
StatusBar1->SimpleText = AnsiString(X) + " " + Y;
}
위의 예제에서는 페인트박스에 그려진 라인이 커서를 따라다닙니다.
그럼 참고하시길...
|