2012-12-31 76 views
2

我在C#中使用X轴上的自定义标签制作图表。该比例以日期为单位,并根据所选值进行更改(从一个月到两年)。它运作良好,每当我更改比例值时,图表的宽度保持不变;它只是调整栏宽。.NET图表自定义标签旋转

当我尝试旋转标签时发生问题。当我这样做时,它会根据每个不同的比例调整所有酒吧的大小,并且不会占用与原始大小相同的空间量。我希望能够旋转标签而无需调整所有内容。我可以这样做吗?这是为什么发生?我该如何解决它?

我使用添加自定义标签的代码是这样的:

DateTime StartMonthPos = XValues[0]; 
DateTime EndPos = new DateTime(); 

if (Time == 6 || Time == 12 || Time == 24) 
{ 
    foreach (DateTime Date in XValues) 
    { 
     EndPos = Date; 

     if (Date.Month != month) 
     { 
      Chart4.ChartAreas[0].AxisX.CustomLabels.Add(StartMonthPos.ToOADate(), EndPos.ToOADate(), StartMonthPos.ToString("MMMM"), 0, LabelMarkStyle.None); 
      StartMonthPos = Date; 
     } 

     month = Date.Month; 
    } 

    XAxis.CustomLabels.Add(StartMonthPos.ToOADate(), EndPos.ToOADate(), StartMonthPos.ToString("MMMM"), 0, LabelMarkStyle.None); 
} 
else 
{ 
    foreach (DateTime Date in XValues) 
    { 
     EndPos = Date; 
     Chart4.ChartAreas[0].AxisX.CustomLabels.Add(StartMonthPos.ToOADate(), EndPos.ToOADate(), StartMonthPos.ToString("M"), 0, LabelMarkStyle.None); 
     StartMonthPos = Date; 
    } 

    XAxis.CustomLabels.Add(StartMonthPos.ToOADate(), EndPos.ToOADate(), StartMonthPos.ToString("M"), 0, LabelMarkStyle.None); 
} 

如果我加入这行后的代码,事情搞的一团糟:

Chart4.ChartAreas[0].AxisX.LabelStyle.Angle = 0; 

这里是一个从有问题的代码之前图片:

Enter image description here

这里是后图片:

Enter image description here

回答

2

该职位涉及相当多的XAML的,但...

正如你可以单独看到这条线不能得到旋转:

Chart4.ChartAreas[0].AxisX.LabelStyle.Angle = 0; 

还有更多的旋转

+0

第二个不做得比较工作。图表的区域不会改变,但是图形的宽度会变化。如果我选择了这条路线,它可能会改为使用每个小节的宽度。仍然会尝试第一个。 – ijb109

+0

@ ijb109我只是想问你是怎么回事?我会在第二条路线上找到代码(尽管没有任何承诺),而您可以尝试'XAML'路线。 :) – bonCodigo

+1

我一直在研究'XAML'路由,但它不会很好,因为应用程序是使用ASP.Net编写的,我们正试图避免使用Silverlight。我仍然试图对上述代码进行不同的迭代以使其工作。 – ijb109