我正在尝试使用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");
}
然后我得到一张如下图表:
问题在于我不希望饼图片段上出现的标签是黑色的,我希望它们是白色的。但是,我找不到关于如何以XML或任何其他方式执行此操作的文档。
所以我的问题是如何使用XML来更改饼图本身的片段上的标签颜色(图片中显示为黑色的那些)?
答案 0 :(得分:1)
好吧,我明白了。我要做的是在XML中添加一个系列。要做到这一点,我必须知道系列的名称,我知道,因为当我在AddSeries
上调用chart2
方法时,第一个参数是它的名称,因此我的系列名称为Default
因此,我采取的下一步是在ChartAreas
之前添加一系列开放标记和一系列结束标记。在teh系列标记之间,我添加了另一个具有Name
和LabelForeColor
属性的系列标记,如下所示:
<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
这是产生的图像:
我在This blog post的帮助下解决了这个问题。我注意到他们正在改变系列颜色,所以我认为XML中类似的东西可以解决问题。