0

私は次の設定をしています:

Colorgrid を持つ TeeChart コントロールとそれに追加されたポイント シリーズ:

grid = tChart2.Series[0] as Steema.TeeChart.Styles.ColorGrid;
points = tChart2.Series[1] as Steema.TeeChart.Styles.Points;

それらを初期化するには、次のようにします。

Random rnd = new Random();
for (int i = 0; i < 128; i++)
{
    for (int j = 0; j < 128; j++)
    {
        grid.Add(j, rnd.Next(255), i);
    }
}

for (int i = 0; i < 20; i++)
{
    double x = rnd.Next();
    double y = rnd.Next();
    points.Add(x, y);
}

tChart2.Refresh();

そして、フォームにボタンがあります:

private void button1_Click(object sender, EventArgs e)
{
    Random rnd = new Random();

    for (int i = 0; i < 128; i++)
    {
        for (int j = 0; j < 128; j++)
        {
            grid.YValues[j + 128 * i] = rnd.Next(255);
        }
    }

    for (int i = 0; i < 20; i++)
    {
        points.SetNull(i);
    }

    for (int i = 0; i < rnd.Next(20); i++)
    {
        points.XValues[i] = rnd.Next(128);
        points.YValues[i] = rnd.Next(128);
    }

    points.BeginUpdate();
    points.EndUpdate();
}

しかし、ポイントは描画されません。SetNull() ステートメントを含む for ループを削除すると、それらは描画されますが、Points.Clear( )/Points.Add(x, y) 方法論。

以下もそれぞれ試してみましたが、違いはありません。

points.TreatNulls = Steema.TeeChart.Styles.TreatNullsStyle.DoNotPaint;
points.TreatNulls = Steema.TeeChart.Styles.TreatNullsStyle.Ignore;
points.TreatNulls = Steema.TeeChart.Styles.TreatNullsStyle.Skip;

これを達成する方法を知っている人はいますか?

4

1 に答える 1

0

OK、すべてのポイントをnullに設定すると問題が発生します。メソッド SetNull を使用する場合は、ポイントの色を透明に設定してポイントを非表示にすることを知っておく必要があります。したがって、問題を解決したい場合は、表示したいポイントの色をリセットするだけで、SetNull を再度実行するか、ポイントの色を手動で変更し、TreatNullsStyle を無視に設定して操作を組み合わせることができます。私の意見では、次のコードで行っているように、SetNull を再度使用するのが最善の方法だと思います。

    public Form1()
    {
        InitializeComponent();
        InitializeChart();
    }
    Steema.TeeChart.Styles.ColorGrid grid; 
    Steema.TeeChart.Styles.Points points;

    private void InitializeChart()
    {
        grid = new ColorGrid(tChart1.Chart);
        points = new Points(tChart1.Chart);
        tChart1.Aspect.View3D = false;
        Random rnd = new Random();
        for (int i = 0; i < 128; i++)
        {
            for (int j = 0; j < 128; j++)
            {
                grid.Add(i, rnd.Next(255), j);
            }
        }

        for (int i = 0; i < 20; i++)
        {
            double x = rnd.Next(100);
            double y = rnd.Next(100);
            points.Add(x, y);
        }
    }
    private void button1_Click(object sender, EventArgs e)
    {
        Random rnd = new Random();

        for (int i = 0; i < 128; i++)
        {
            for (int j = 0; j < 128; j++)
            {
                grid.YValues[j + 128 * i] = rnd.Next(255);
            }
        }

        for (int i = 0; i < 20; i++)
        {
            points.SetNull(i);
        }

        for (int i = 0; i < rnd.Next(20); i++)
        {
            points.XValues[i] = rnd.Next(128);
            points.YValues[i] = rnd.Next(128);
            points.SetNull(i, false);
        }
        points.TreatNulls = TreatNullsStyle.Ignore;
    }

以前のコードが正しく機能するかどうか教えていただけますか?

役立つことを願っています。

ありがとう、

于 2013-05-07T10:07:39.817 に答える