|
최종혁 님이 쓰신 글 :
: 차트에서 라인으로 그리는데....
: 날짜별로 값이 있습니다.
: Y축에 선을 하나 그려서 버튼을 누르면 Y축에 선이 한칸씩 움직이는 차트를
: 그리고 싶은데...
: Y축에 간단하게 선을 그리는 방법을 가르쳐주세요....
:
: 그리고 차트에서 여러개의 선을 그리다보니. 값이 너무 적어서
: bottom과 너무 가까이 그려져서 안그려지는것 같이 보입니다.
: 윗쪽과 아래쪽 여분을 주는 방법도 가르쳐주세요.
:
: 정말 감사드립니다.
Y축 위, 아래 여분을 줄려면..
Chart1->LeftAxis->StartPosition, Chart1->LeftAxis->EndPosition 값을 바꿔주시면 됩니다..
사용해보시면 금방 아실겁니다..
아래 소스는 TChart Y축에 평행한 직선을 그리는 예제입니다..
차트에 마우스로 클릭한 지점에 Vertical Line을 그리게 됩니다..
제가 예전에 했었던겁니다.. 참고하시구여.. ^^;
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
m_ptX = -1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Series1->FillSampleValues(1000);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Chart1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
TRect rc;
rc = Chart1->ChartRect;
if(Button == mbRight) {
if(m_ptX != -1) {
DrawVertLine(m_ptX, rc.Top, rc.Bottom);
m_ptX = -1;
}
}
else if(Button == mbLeft) {
if((X >= rc.Left) && (X <= rc.Right) && (Y >= rc.Top) && (Y <= rc.Bottom)) {
if(m_ptX != -1) {
DrawVertLine(m_ptX, rc.Top, rc.Bottom);
}
DrawVertLine(X, rc.Top, rc.Bottom);
m_ptX = X; m_valX = Chart1->BottomAxis->CalcPosPoint(X);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Chart1AfterDraw(TObject *Sender)
{
TRect rc;
if(m_ptX != -1) {
rc = Chart1->ChartRect;
m_ptX = Chart1->BottomAxis->CalcPosValue(m_valX);
DrawVertLine(m_ptX, rc.Top, rc.Bottom);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DrawVertLine(int posX, int beginY, int endY)
{
Chart1->Canvas->Pen->Mode = pmXor;
Chart1->Canvas->Pen->Color = clWhite;
Chart1->Canvas->MoveTo(posX, beginY);
Chart1->Canvas->LineTo(posX, endY);
Chart1->Canvas->Pen->Mode = pmCopy;
}
//---------------------------------------------------------------------------
|