如果我在茶壶上画了一个蜡烛系列,并且更改了最后一个蜡烛的CloseValue,蜡烛就不会自动在图表上更新。我真的不想让整个图表失效,因为如果有很多蜡烛,那就太慢了。我认为Candle系列的DrawValue方法可以解决这个问题,但它似乎也重新绘制了整个图表。是否有一种方法可以在屏幕上更新/重绘一支蜡烛?
我知道当我在Delphi 5中做这件事时,蜡烛似乎没有重新绘制整个图表--尽管也许整个图表更新的速度足够快,似乎就是这样。一般来说,C#的Teechart绘图比Delphi 5 VCL Teechart的绘图慢3到5倍.
发布于 2013-02-27 15:39:44
我认为您可以使用只允许刷新系列的方法RefreshSeries,正如在下一行代码中所做的那样:
candle1.RefreshSeries();你能告诉我,如果它对你有用吗?如果您有什么问题,请告诉我。
更新信息以回答下一个问题:
好吧,我想我在这里解释得不太清楚,桑德拉。让我再试一次。假设我有一张只有一个系列的图表--3万支蜡烛。假设我在图表上显示了所有的蜡烛。重新绘制所有30K蜡烛需要时间。假设代码只改变了一支蜡烛--最后一支蜡烛。有没有办法重新画出有新蜡烛的图表的那一小部分,而不重新绘制整个图表以显示新的变化?我试图使传递给它蜡烛矩形的函数失效,但看起来两者产生的结果完全相同。
你能告诉我们你用的是哪种版本的TeeChart吗?另一方面,我做了一个简单的代码,我修改了CloseValue,并发布了不需要重新绘制、重绘或刷新系列的代码,因为该值是自动更新的。我使用最后一个版本的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;
}谢谢,
https://stackoverflow.com/questions/15101063
复制相似问题