c++ builder XE4, 10.2 Tokyo > TeeChart > 한 번 그린 시리즈 중 일부를 제거하고 그리는 구현
8992 단어 teechartcppBuilder#migrated
C++ builder XE4
TeeChart Lite v2013.08.130414
RAD Studio 10.2 Tokyo Update 2 (追記 2018/01/10)
TeeChart v2016.17.160129 32bit VCL
TeeChart에서 그린 꺾은선형 차트에서, 어느 범위만큼 선을 자르고 싶은 경우가 있다.
이를 위한 구현
Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <DateUtils.hpp>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Chart1->Series[0]->XValues->DateTime = true;
Chart1->BottomAxis->DateTimeFormat = L"nn:ss";
TDateTime dt;
dt = Now();
double yval;
for (int idx=0; idx < 10; idx++) {
yval = (1+ idx) % 2;
Series1->AddXY(dt, yval, "", clRed);
dt = IncSecond(dt, 1);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::breakLine()
{
double xvals[2000];
double yvals[2000];
Series1->TreatNulls = tnDontPaint;
int serCnt = Series1->Count();
for(int sidx = 0; sidx < serCnt; sidx++) { // sidx: series index
xvals[sidx] = Series1->XValue[sidx];
yvals[sidx] = Series1->YValue[sidx];
}
Series1->Clear();
for(int sidx = 0; sidx < serCnt; sidx++) { // sidx: series index
if (sidx >= 3 && sidx < 5) {
Series1->AddNullXY(xvals[sidx], yvals[sidx]);
continue;
}
Series1->AddXY(xvals[sidx], yvals[sidx]);
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
breakLine();
}
//---------------------------------------------------------------------------
breakLine()
에서 조건 if (sidx >= 3 && sidx < 5) {
에 의해 선을 자르도록 하고 있다.결과
자르기 전
자른 후
보충
기본적으로는 AddXY() 하는 처리 모두에 AddNullXY() 관련의 처리를 실장하면 되지만, 그것이 여러가지 기능으로 사용되고 있을 때에, 개개의 AddXY() 에 각각 실장하는 것은 유지보수의 점에서 좋지 않다.
문득, "한 번 그린 그래프를 선을 자르고 다시 그리면 좋을 것"이라고 생각하고, 이 실장을 시도했다.
double []를 사용하고 있지만,이 근처는 STL의 vector가되고 list 나름을 사용하는 것이 좋을지도 모른다.
Reference
이 문제에 관하여(c++ builder XE4, 10.2 Tokyo > TeeChart > 한 번 그린 시리즈 중 일부를 제거하고 그리는 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/7of9/items/948ef9ea916dd48fd659텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)