0

ティーチャートにローソク シリーズを描画し、最後のローソクの CloseValue を変更した場合、ローソクはチャート上で自動的に更新されません。ローソク足がたくさんあると遅いので、グラフ全体を無効にして表示したくありません。CandleシリーズのDrawValueメソッドで解決できると思っていたのですが、実際にはチャート全体も再描画してしまうようです。その1つのろうそくだけを画面上で更新/再描画する方法はありますか?

Delphi 5でこれを行っていたとき、チャート全体を再描画せずにろうそくが更新されたように見えましたが、チャート全体の更新が十分に速かったため、そのように見えました。一般に、C# の Teechart の描画は、Delphi 5 VCL Teechart の描画よりも 3 ~ 5 倍遅いようです...

4

1 に答える 1

1

次のコード行で行うように、シリーズ 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;

}

ありがとう、

于 2013-02-27T15:39:44.687 に答える