C# .NET图表控件-将条形图标签置于外侧和左侧?

C# .NET图表控件-将条形图标签置于外侧和左侧?,c#,.net,mschart,C#,.net,Mschart,我的问题很简单,但我觉得答案有点复杂: 我正在尝试设置此图表上的标签,以便第一个日期位于条形图的左侧,最后一个日期位于右侧: 每个条实际上由一个点组成,该点表示整个时间跨度(绘制为带有白色内部颜色的边框)和一个点表示完成百分比(绘制为这些边框中的实体填充) 到目前为止,我所完成的工作是使用Point CustomProperties完成的: Chart1.Series[s].Points[0].Label = gsvPhaseList[0].EndDate.Value.ToString("M/

我的问题很简单,但我觉得答案有点复杂:

我正在尝试设置此图表上的标签,以便第一个日期位于条形图的左侧,最后一个日期位于右侧:

每个条实际上由一个点组成,该点表示整个时间跨度(绘制为带有白色内部颜色的边框)和一个点表示完成百分比(绘制为这些边框中的实体填充)

到目前为止,我所完成的工作是使用Point CustomProperties完成的:

Chart1.Series[s].Points[0].Label = gsvPhaseList[0].EndDate.Value.ToString("M/dd");
Chart1.Series[s].Points[0].SetCustomProperty("BarLabelStyle", "Outside");

Chart1.Series[s].Points[1].Label = gsvPhaseList[0].StartDate.Value.ToString("M/dd");
Chart1.Series[s].Points[1].SetCustomProperty("BarLabelStyle", "Left");
我的问题是,似乎没有一种方式可以说“左外”


我的下一步是在图表上的Paint事件中添加一个钩子,这样我就可以实际获得标签的位置并向左移动(我希望如此),但我希望首先确保没有遗漏任何简单的内容。有什么想法吗?

您的图表会显示范围栏。您可以通过在每个点的左侧添加一个额外的数据点来伪造左外侧位置

你需要使它足够宽,以容纳标签,你应该保持它有点左的实际点,所以标签不会接触的一面

使其颜色=颜色。透明,标签将显示在左侧和右侧

下面是一段代码,用于装饰图表中的所有系列:

// just a few test data in Series S1 & S2..
S1.Points.AddXY(1, 13, 14.5);  // the dummy point
S1.Points.AddXY(1, 15,22);
S2.Points.AddXY(1, 7,8.5); // 2nd dummy
S2.Points.AddXY(1, 9,13);

// set the labels
foreach (Series S in chart1.Series)
    for (int i = 0; i < S.Points.Count; i+=2 )
    {
        DataPoint pt0 = S.Points[i];
        DataPoint pt1 = S.Points[i + 1];
        pt0.Color = Color.Transparent;
        pt0.SetCustomProperty("BarLabelStyle", "Right");
        pt0.Label = pt1.YValues[0] + " ";

        pt1.SetCustomProperty("BarLabelStyle", "Outside");
        pt1.Label = " " + pt1.YValues[1];
    }
//系列S1和S2中只有少量测试数据。。
S1.点。添加xy(1,13,14.5);//虚拟点
S1.点AddXY(1,15,22);
S2.点。添加xy(1,7,8.5);//第二个假人
S2.点AddXY(1,9,13);
//设置标签
foreach(图1中的系列S.系列)
对于(int i=0;i
您也可以编写代码来自动添加这些额外的标签点


这些是条子还是堆叠的条子?您是否可以使用系列1透明的堆叠条,并将其标签右对齐显示?这看起来像是Series2的标签&除此之外,他们实际上是游骑兵,记录在这里:这绝对是可能的;如果我写的后期处理程序不起作用,我会调查的。