Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MsChart-特定值的范围栏标记_C#_.net_Winforms_Charts_Mschart - Fatal编程技术网

C# MsChart-特定值的范围栏标记

C# MsChart-特定值的范围栏标记,c#,.net,winforms,charts,mschart,C#,.net,Winforms,Charts,Mschart,我就是找不到在范围栏上的特定值上添加标记的方法。 假设我们有一个简单的范围条形图,有1个系列和1个点。该点有2个Y值(例如:5-20)。你怎么能在15点显示一个三角形标记 谢谢。您可以制作两个图表区域,并将它们放在彼此的顶部。使第二个chartarea背景色透明 private void Form1_Load(object sender, EventArgs e) { chart1.Series.Clear(); chart1.ChartAreas[0].Position =

我就是找不到在范围栏上的特定值上添加标记的方法。 假设我们有一个简单的范围条形图,有1个系列和1个点。该点有2个Y值(例如:5-20)。你怎么能在15点显示一个三角形标记


谢谢。

您可以制作两个图表区域,并将它们放在彼此的顶部。使第二个chartarea背景色透明

private void Form1_Load(object sender, EventArgs e)
{
    chart1.Series.Clear();

    chart1.ChartAreas[0].Position = new ElementPosition(0, 0, 100, 100);

    Series s1 = new Series();
    s1.ChartType = SeriesChartType.RangeBar;
    s1.Points.AddXY(2, 2);
    s1.Points.AddXY(1, 1);

    chart1.Series.Add(s1);

    ChartArea ca2 = new ChartArea();
    chart1.ChartAreas.Add(ca2);
    ca2.Position = new ElementPosition(0, 0, 100, 100);
    ca2.BackColor = Color.Transparent;

    Series s2 = new Series();
    s2.ChartType = SeriesChartType.Point;
    s2.MarkerStyle = MarkerStyle.Triangle;
    s2.MarkerSize = 10;
    s2.Points.AddXY(2, 2);
    s2.ChartArea = ca2.Name;

    chart1.Series.Add(s2);
}

您可以制作两个图表区域,并将它们放在彼此的顶部。使第二个chartarea背景色透明

private void Form1_Load(object sender, EventArgs e)
{
    chart1.Series.Clear();

    chart1.ChartAreas[0].Position = new ElementPosition(0, 0, 100, 100);

    Series s1 = new Series();
    s1.ChartType = SeriesChartType.RangeBar;
    s1.Points.AddXY(2, 2);
    s1.Points.AddXY(1, 1);

    chart1.Series.Add(s1);

    ChartArea ca2 = new ChartArea();
    chart1.ChartAreas.Add(ca2);
    ca2.Position = new ElementPosition(0, 0, 100, 100);
    ca2.BackColor = Color.Transparent;

    Series s2 = new Series();
    s2.ChartType = SeriesChartType.Point;
    s2.MarkerStyle = MarkerStyle.Triangle;
    s2.MarkerSize = 10;
    s2.Points.AddXY(2, 2);
    s2.ChartArea = ca2.Name;

    chart1.Series.Add(s2);
}
试试这个:

    private void Form1_Load(object sender, EventArgs e)
    {
        DataPoint dp1 = new DataPoint(1, new double[] { 5, 15 });
        dp1.MarkerStyle = MarkerStyle.Triangle;
        dp1.MarkerSize = 12;
        dp1.MarkerColor = Color.Red;

        DataPoint dp2 = new DataPoint(1, new double[] { 15, 20 });

        chart1.Series[0].Points.Add(dp1);
        chart1.Series[0].Points.Add(dp2);
    }
试试这个:

    private void Form1_Load(object sender, EventArgs e)
    {
        DataPoint dp1 = new DataPoint(1, new double[] { 5, 15 });
        dp1.MarkerStyle = MarkerStyle.Triangle;
        dp1.MarkerSize = 12;
        dp1.MarkerColor = Color.Red;

        DataPoint dp2 = new DataPoint(1, new double[] { 15, 20 });

        chart1.Series[0].Points.Add(dp1);
        chart1.Series[0].Points.Add(dp2);
    }

它必须在同一系列上吗?只需添加一个新系列。然后使用
series1.Points.AddXY(5,20)并确保将其设置为图表类型点<代码>系列1.ChartType=系列ChartType.Point
系列1.MarkerStyle=MarkerStyle.Triangle你可以用黑客攻击:将你的(5-20)范围分成2个范围,(5-15)和(15-20),然后在(5-15)范围上添加一个标记。它看起来像一个单一(5-20)范围,15上有一个标记。@Baddack
RangeBar
Point
系列不兼容。嗯,很有趣。适用于范围图和柱状图,但不适用于条形图。也许op可以用其中一个。也可以在第一个图表区的顶部绘制第二个图表区,并在每个图表区绘制一个系列。巴达克,我尝试过你的选择,但没有成功。我收到一条错误消息,说我不能混合点和范围栏。它必须在同一系列上吗?只需添加一个新系列。然后使用
series1.Points.AddXY(5,20)并确保将其设置为图表类型点<代码>系列1.ChartType=系列ChartType.Point
系列1.MarkerStyle=MarkerStyle.Triangle你可以用黑客攻击:将你的(5-20)范围分成2个范围,(5-15)和(15-20),然后在(5-15)范围上添加一个标记。它看起来像一个单一(5-20)范围,15上有一个标记。@Baddack
RangeBar
Point
系列不兼容。嗯,很有趣。适用于范围图和柱状图,但不适用于条形图。也许op可以用其中一个。也可以在第一个图表区的顶部绘制第二个图表区,并在每个图表区绘制一个系列。巴达克,我尝试过你的选择,但没有成功。我收到一条错误消息,说我不能混合点和范围栏。效果很好!谢谢!工作出色!谢谢!谢谢你的回答。你的答案也不错,但我选择了jstreet选项。很好,我认为他有一个更好的答案。很高兴你成功了!谢谢你的回答。你的答案也不错,但我选择了jstreet选项。很好,我认为他有一个更好的答案。很高兴你成功了!