|
폼에 Image1와 Button을 하나 생성하시고,
다음 코드를 입력해 보시면 됩니다.
Button1을 누를시마다 값을 추가하는 방식입니다.
cuperido
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int COUNT;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int itX, itY;
Image1->Width = 400;
Image1->Height = 200;
Image1->Canvas->Brush->Color = clBlack;
Image1->Canvas->FillRect(Image1->ClientRect);
// 눈금 그려주기
Image1->Canvas->Pen->Color = clWhite;
for(itX = 0; itX < Image1->Width; itX += 20) {
Image1->Canvas->MoveTo(itX, 0);
Image1->Canvas->LineTo(itX, Image1->Height);
}
for(itY = 0; itY < Image1->Height; itY += 20) {
Image1->Canvas->MoveTo(0, itY);
Image1->Canvas->LineTo(Image1->Width, itY);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int itValue;
// 임시 값
itValue = random(10) + 1;
if(COUNT >= 19) {
Image1->Canvas->CopyRect(Rect(0, 0, 19 * 20, Image1->Height),
Image1->Canvas,
Rect(20, 0, 20 * 20, Image1->Height));
COUNT = 18;
}
// 지정된 값을 표현
Image1->Canvas->Brush->Color = clNavy;
Image1->Canvas->FillRect(Rect(COUNT * 20 + 1, Image1->Height - (itValue * 20) + 1, (COUNT + 1) * 20, Image1->Height));
COUNT ++;
}
//---------------------------------------------------------------------------
천승환 님이 쓰신 글 :
: 계속되는 빠른 답변 너무 감사드립니다..~~..
:
: 단순히 2D의 차트를 그리는 일입니다.
: 기능도 없이 단순하게 그리기만 합니다.
:
: 시간이 촉박해서..그냥 TeeChart를 사용했었는데..
: 오히려 시간을 더 잡아먹게 되버렸네요..
:
: 예제가 있으시면 부탁드리겠습니다..~..^^.
:
:
:
: 유영인 Cuperido 님이 쓰신 글 :
: : 단순히 2D등의 차트라면, 이미지에다가 직접 작업을 해주시는것이
: : 어떨까 싶습니다. 메모리상과 캔버스 상에서 바로 복사를 해주면 되는 것이니까요.
: : (이 경우 원하실경우 간단한 예제를 보여드릴 수도 있습니다)
: :
: : : 근데..기존의 그래프가 계속 남아있어야 하므로...
: : : Series->Clear() 라는것을 해주지 못하니깐..
: : : 갈수록 느려집니다..
: :
: : 차트의 경우, 데이터가 많아지면 기하급수적으로 느려지게 됩니다.
: : 기존의 그래프값을 지워서 밀어버리든지 이러한 작업을 하셔야 하는데,
: : 깜빡임 현상등도 일어날 수 있고요, TeeChart가 각 값을 유동적있게 접근할 수 있는지
: : 이것도 잘 모르겠고요, 아니면 주기적으로 클리어 해주든지, 하는 작업이 어쨌든 꼭 필요할 것 같습니다.
: :
: :
: : cuperido
: :
: :
: : 천승환 님이 쓰신 글 :
: : : 빠른 답변 감사합니다.^^;.
: : :
: : : 제가 내용을 수정했는데요..
: : :
: : : TeeChart안에...Tool중에 Cursor를 이용해서...
: : : 현재의 데이터를 그리는거와 동시와...그 앞으로 지나가게 하면..
: : : 그 비슷한 용도가 나옵니다.
: : :
: : : 근데..기존의 그래프가 계속 남아있어야 하므로...
: : : Series->Clear() 라는것을 해주지 못하니깐..
: : : 갈수록 느려집니다..
: : :
: : : 많은 데이터를 계속 가지고 있어서 그런듯 싶습니다.
: : :
: : : TeeChart말고 가볍고 쓸만한건 어떤게 있는지 조언 부탁드립니다..
: : :
: : : 다른걸 못찾기에..그냥 TeeChart를 쓰는것이거든요..
: : :
: : :
: : :
: : :
: : : 유영인 Cuperido 님이 쓰신 글 :
: : : : 병원에서 그리는 그래프를 용도로 TeeChart 를 사용하시는건 좀 무겁지 않나..
: : : : 라는 생각이 드는군요.
: : : :
: : : : TeeChart가 설치되어 있지 않아서 확실한 예제는 보여드리기 힘들지만,
: : : : 아래와 같은 방법대로 하시면 대충 비슷하게 나오지 않을까 싶습니다.
: : : :
: : : : 1. 100이 넘어가면, 0번 값을 지우고, +1 만큼 땡겨온 뒤 뒤에다 추가하는 방법
: : : :
: : : : 2. 100만큼 보여주는 대신, 메모리가 허용할 수 있는 한계만큼 (예: 0~10000) 정도로
: : : : 한계를 잡아주시고, VisibleRect 을 이동하는 방법
: : : :
: : : :
: : : : cuperido
: : : :
: : : :
: : : : 천승환 님이 쓰신 글 :
: : : : : 안녕하세요.
: : : : :
: : : : : TeeChart에서 어떤 기능 때문에 질문드립니다.
: : : : :
: : : : : Chart의 X축이 0 ~ 100 인 경우,..
: : : : :
: : : : : 100개의 데이터가 그려진 후, 다음 데이터가 X = 0 의 위치에 다시 그려지게 하고 있습니다
: : : : :
: : : : : 그렇게하면.. 이전에 그려진 그래프가 지워지는데,..
: : : : :
: : : : : 안지워지게 ..3~4 포인트 차이로 지워 나가면서 새로운 데이터를 그려나가려고 합니다.
: : : : :
: : : : : 마치..병원에서 쓰는 장비들 처럼요..
: : : : :
: : : : :
: : : : : 어떤 옵션이나 그런 기능이 있는지 궁금하구요..
: : : : :
: : : : : 아니면 다른 방법이 있는지요?..
: : : : :
: : : : : Tee Chart로 안된다면 다른 방법이 있는지 알고 싶습니다..
: : : : :
: : : : : 부탁드립니다.
|