C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[23383] Re:TChart 질문 Y축에 간단하게 선을 그리는 방법을 ...
이종빈 [offspring] 1421 읽음    2002-12-26 11:34
최종혁 님이 쓰신 글 :
: 차트에서 라인으로 그리는데....
: 날짜별로 값이 있습니다.
: 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;
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
23372 TChart 질문 Y축에 간단하게 선을 그리는 방법을 ... 최종혁 697 2002/12/25
23383     Re:TChart 질문 Y축에 간단하게 선을 그리는 방법을 ... 이종빈 1421 2002/12/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.