Метки серии не видны для указанного значения индекса в teechart2017
В VS2013,teechart2017.ocx,
- Я делаю проект MFC на основе диалога.
- Я добавляю teechart в диалоге, меняю свойство mark для отображения значения, устанавливаю перетаскивание на 1, видимый, а не автопозицию.
- Я использовал событие getserismark для отображения только указанных меток.
- Я добавляю 20000 очков в серии 0,
если я использовал teechart8, он отображается правильно, но для teechart2017, отметки исчезли для всех.
void CMFCApplication2Dlg::OnGetSeriesMarkTchart1(long SeriesIndex, long ValueIndex, BSTR* MarkText) { // TODO: if (B_Filter) { if ((ValueIndex == 1250) || (ValueIndex == 137)|| (ValueIndex == 10000)) { } else { m_Chart1.Series(SeriesIndex).GetMarks().GetItem(ValueIndex).SetVisible(false); } }
1 ответ
Я воспроизвел проблему ( # 1986) и добавил CalcVisiblePoints
свойство для следующего технического обслуживания.
В версии 2016.0.0.1 была введена оптимизация, вызывающая эту проблему. Вы должны установить TChart1.Series(0).CalcVisiblePoints = False
пропустить эту оптимизацию и заставить ее работать как в v8.
С новым v2018.0.2.9 вы можете сделать это:
#include "CAspect.h"
#include "CLegend.h"
#include "CSeries.h"
#include "TeeChartDefines.h"
#include "CMarks.h"
#include "CMarksItem.h"
//...
CAspect a = mChart1.get_Aspect();
a.put_View3D(false);
CLegend l = mChart1.get_Legend();
l.put_Visible(false);
mChart1.AddSeries(scFastLine);
CSeries s = mChart1.Series(0);
s.FillSampleValues(20000);
CMarks sm = s.get_Marks();
sm.put_Visible(true);
for (int i = 0; i < s.get_Count(); i++) {
CMarksItem smi = sm.get_Item(i);
smi.put_Visible((i == 1250) || (i == 137) || (i == 10000));
}
s.put_CalcVisiblePoints(false);