|
TChart를 쓰지 마시고 그냥 직접 그리시는게 나을 것 같은데...
더 나은 방법이 있는진 모르겠지만,
Chart->BottomAxis->Minimum = 0;
Chart->BottomAxis->Maximum = 150;
Chart->LeftAxis->Minimum = 0;
Chart->LeftAxis->Maximum = 150;
Series1->AddNullXY(Chart->BottomAxis->Minimum, Chart->LeftAxis->Maximum, "");
Series1->AddNullXY(Chart->BottomAxis->Maximum, Chart->LeftAxis->Minimum, "");
이런식으로 대충 범위를 잡아주시고,
Series에 AfterDrawValues 이벤트 핸들러를 만드신 다음
그 안에,
HRGN Rgn;
Rgn = CreateRectRgn(Chart->BottomAxis->CalcXPosValue(Chart->BottomAxis->Minimum),
Chart->LeftAxis->CalcYPosValue(Chart->LeftAxis->Minimum),
Chart->BottomAxis->CalcXPosValue(Chart->BottomAxis->Maximum),
Chart->LeftAxis->CalcYPosValue(Chart->LeftAxis->Maximum));
ExtSelectClipRgn(Chart->Canvas->Handle, Rgn, RGN_AND);
DeleteObject(Rgn);
스크롤이 필요할 경우를 위해 이렇게 영역을 잡으시고
Chart->Canvas->Pen->Color = clBlack;
Chart->Canvas->Brush->Color = clBlue;
TPoint p[4]; // CalcX~~, CalcY~~ 함수를 이용해서 꼭지점 좌표를 차트 좌표로 변환해 넣어줍니다.
Chart->Canvas->Polygon(p, 3);
이런식으로 그리면 될 것 같네요
Canvas의 Polygon 함수는 소수점을 그려주진 않는데, 굳이 좀 더 정확한 표현을 원한다면,
Graphics32 를 이용해 폴리곤을 그리고 Canvas에 Draw하는 법도 있겠죠.
ExtSelectClipRgn(Chart->Canvas->Handle, 0, RGN_COPY);
클리핑 영역 해제시는 이렇게 하시면 되죠.
머슴.한석복 님이 쓰신 글 :
: 오랜만에 볼포에 질문을 남기게 되네요.
:
: 프로젝트 중에 그래프를 그려야 하는 상황이 되어서, Tchar를 사용해 보려고 하는데,
:
: 생각보다 훨씬 복잡 하네요.
:
: 질문 드릴 내용은,
:
: 차트에서 4개의 포인트(데이터)를 주어서, Rectangle을 그리고 싶은데요..
: 방법을 잘 모르겠네요.
:
: 4개의 포인트는 랜덤하게 들어 올 수도 있고, 아닐 수도 있고 그렇습니다.
: 예를 들어서,
: X, Y
: =================
: Point1 10 , 10.5
: Point2 20 .5 , 10.8
: Point3 19.5 , 1.8
: Point4 10.5, 1.7
: 이런식으로 정사각형이나, 직사각형이 아닌 사각형인 경우이구요.
: 그리고, Rectangle은 색깔을 갖고 있게 되고요.
:
: form에다가 TChart 올려 놓고 더블클릭 해서, 이것 저것 바꿔 보는데, 원하는대로 나오지가 않네요.
: 좌표가 2벌만 에디팅 되게 나온다던가,
:
: 좌표 종류를 Shape로 해서 rectangle로 하니까, 정사각형 내지는 직사각형만 되고..
: 공부할게 많네요.
: 혹시, 고수분들 중에, 이런식으로 구성하는 방법을 아시는 분 조언좀 주세요.
: 부탁 드리겠습니다.
:
: 좋은 주말들 되세요.
|