我认为您可以使用只允许刷新系列 RefreshSeries 的方法,就像下一行代码一样:
candle1.RefreshSeries();
你能告诉我,如果它对你有用吗?如果您有任何问题,请告诉我。
更新信息以回答下一个问题:
好吧,我想我在这里解释得不好,桑德拉。让我再尝试一次。假设我的图表只有一个系列 - 30,000 支蜡烛。假设我在图表上显示所有蜡烛。重新绘制所有 30K 蜡烛需要时间。假设代码只更改了一根蜡烛 - 最后一根。有没有办法只重绘图表中包含新蜡烛的那一小部分,而不是重绘整个图表以显示新的变化?我尝试将 Invalidate 函数传递给蜡烛的矩形,但似乎 Invalidate() 和 Invalidate(rect) 产生完全相同的结果。
您能告诉我们您使用的是哪个版本的 TeeChart?另一方面,我编写了一个简单的代码,在其中修改了 CloseValue 并发布了不需要重绘、重绘或刷新 Series,因为该值会自动更新。我使用最新版本的 TeeChartFor.Net 内部版本号 [4.1.2012.01312] 和下一个代码进行了测试:
Steema.TeeChart.Styles.Candle candleSeries1;
Random r;
double tmpOpen;
double tmpClose;
int count;
DateTime dt;
TimeSpan ts;
private void InitializeChart()
{
tChart1.Aspect.View3D=false;
tChart1.AutoRepaint = false;
r = new Random();
candleSeries1.Clear();
candleSeries1.XValues.DateTime = true;
candleSeries1.GetHorizAxis.Labels.Angle = 90;
count = 0;
dt = DateTime.Today;
ts = TimeSpan.FromDays(1);
candleSeries1.Pen.Visible = false;
for (int t=0;t<30000;t++)
{
tmpOpen = r.Next(100);
tmpClose = tmpOpen - r.Next(100);
++count;
candleSeries1.Add(dt,tmpOpen,tmpOpen + r.Next(50),
tmpClose -r.Next(50),tmpClose);
dt += ts;
}
tChart1.AutoRepaint = true;
}
private void button1_Click(object sender, EventArgs e)
{
tmpOpen = r.Next(100);
tmpClose = tmpOpen - r.Next(100);
candleSeries1[candleSeries1.LastVisibleIndex].Close = tmpOpen;
}
谢谢,