使用System.Web.UI.DataVisualization.Charting命名空间更改饼图上的标签颜色

时间:2014-12-29 18:56:22

标签: c# charts asp.net-mvc-5

我正在尝试使用System.Web.UI.DataVisualization.Charting命名空间生成一个饼图,我让它主要做我想要的。我使用的主题包含以下代码:

public static class ChartThemes
{
    public const string Blue =
    @"<Chart ForeColor=""#ffffff"" BackColor=""#0000ff"" BackGradientStyle=""TopBottom""         BackSecondaryColor=""White"" BorderColor=""26, 59, 105"" BorderlineDashStyle=""Solid"" BorderWidth=""2"" Palette=""none"" PaletteCustomColors=""#0000FF; #0055ff; #5599ff;"">
    <Titles>
        <Title ForeColor=""#ffffff"" Name=""main"" Font=""Arial Black, 16pt, style=Bold"" />
    </Titles>
    <ChartAreas>
        <ChartArea Name=""Default"" _Template_=""All"" BackColor=""64, 165, 191, 228"" BackGradientStyle=""TopBottom"" BackSecondaryColor=""White"" BorderColor=""64, 64, 64, 64"" BorderDashStyle=""Solid"" ShadowColor=""Transparent"">
            <AxisY LineColor=""64, 64, 64, 64"" TitleForeColor=""#ffffff"" TitleFont=""Arial Black, 8pt"">
                <MajorGrid Interval=""Auto"" LineColor=""#00ff00"" />
                <LabelStyle Font=""Trebuchet MS, 16pt, style=Bold"" ForeColor=""#ffffff"" />
            </AxisY>
            <AxisX TitleForeColor=""#ffffff"" TitleFont=""Arial Black, 8pt"">
                <LabelStyle ForeColor=""#ffffff"" />
                <MajorGrid Interval=""Auto"" LineColor=""#ff0000"" />
            </AxisX>
            <AxisX2>
                <LabelStyle ForeColor=""#ffffff"" />
            </AxisX2>
            <AxisY2>
                <LabelStyle ForeColor=""#ffffff"" />
            </AxisY2>
        </ChartArea>
    </ChartAreas>
    <Legends>
        <Legend _Template_=""All"" BackColor=""Transparent"" Font=""Trebuchet MS, 8.25pt, style=Bold"" IsTextAutoFit=""False""  ForeColor=""#ffffff""/>
    </Legends>
    <BorderSkin SkinStyle=""Emboss"" />
  </Chart>";
}

然后我就像这样生成我的饼图:

public ActionResult PieChart()
{
     var chart2 = new Chart(width: 600, height: 600, theme: Helpers.ChartThemes.Blue).AddTitle("Pie Chart","main")
    .AddSeries("Default", chartType: "Pie", xValue: new[] { "Pizza", "Hamburgers", "Hot Dogs" }, yValues: new[] { 20, 20, 60 })
    .AddLegend()
    .GetBytes("png");
    return File(chart2, "image/png");
 }

然后我得到一张如下图表:

Blue Pie Chart

问题在于我不希望饼图片段上出现的标签是黑色的,我希望它们是白色的。但是,我找不到关于如何以XML或任何其他方式执行此操作的文档。

所以我的问题是如何使用XML来更改饼图本身的片段上的标签颜色(图片中显示为黑色的那些)?

1 个答案:

答案 0 :(得分:1)

好吧,我明白了。我要做的是在XML中添加一个系列。要做到这一点,我必须知道系列的名称,我知道,因为当我在AddSeries上调用chart2方法时,第一个参数是它的名称,因此我的系列名称为Default

因此,我采取的下一步是在ChartAreas之前添加一系列开放标记和一系列结束标记。在teh系列标记之间,我添加了另一个具有NameLabelForeColor属性的系列标记,如下所示:

<Series Name=""Default"" LabelForeColor=""#ffffff"" />

如果您想通过using the properties listed in this Documentation.

添加更多属性

所以结束XML看起来像:

@"<Chart ForeColor=""#ffffff"" BackColor=""#0000ff"" BackGradientStyle=""TopBottom"" BackSecondaryColor=""White"" BorderColor=""26, 59, 105"" BorderlineDashStyle=""Solid"" BorderWidth=""2"" Palette=""none"" PaletteCustomColors=""#0000FF; #0055ff; #5599ff;"">
    <Titles>
        <Title ForeColor=""#ffffff"" Name=""main"" Font=""Arial Black, 16pt, style=Bold"" />
    </Titles>
    <Series>
        <Series Name=""Default"" LabelForeColor=""#ffffff"" />
    </Series>
    <ChartAreas>
    //... and so on and so forth

这是产生的图像:

White Label Pie Chart

我在This blog post的帮助下解决了这个问题。我注意到他们正在改变系列颜色,所以我认为XML中类似的东西可以解决问题。