次のコード行で行うように、シリーズ RefreshSeries のみを更新できるメソッドを使用できると思います。
candle1.RefreshSeries();
うまくいくかどうか教えていただけますか?何か問題がありましたら、お知らせください。
次の質問に答えるために情報を更新します。
わかりました、私はここで自分自身をうまく説明していないと思います、サンドラ。もう一度試してみましょう。系列が 1 つしかないチャートがあるとしましょう - 30,000 ローソク足です。チャートにすべてのろうそくを表示するとしましょう。30K のろうそくをすべて再描画するには時間がかかります。コードが 1 つのローソク足 (最後のローソク足) だけを変更するとします。新しいローソク足があるチャートの小さな部分だけを再描画し、新しい変化を示すためにチャート全体を再描画しない方法はありますか? ろうそくの四角形を渡して Invalidate 関数を試しましたが、Invalidate() と Invalidate(rect) はまったく同じ結果を生成するようです。
使用している 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;
}
ありがとう、