MS图表控件:格式化坐标轴标签

3
我有关于格式化MS ASP.NET图表控件轴标签的问题。在深入了解我的问题之前,请看一下这个屏幕截图。
如您所见,轴标签难以阅读,似乎加粗了。现在,我的问题是:
- 默认的图表属性中哪些导致轴标签看起来不像Arial 11px常规字体,即加粗和字符之间紧密? - 如何使轴标签的外观更易于阅读和清理,即普通字重和字符之间的分离?
相关代码如下:
public Chart GetChart(ChartData chartDataData, IChartSettings settings)
{
    var chart = new Chart
    {
        BackColor = Color.Transparent,
        Height = settings.Height,
        Palette = ChartColorPalette.None,
        PaletteCustomColors = settings.PaletterCustomColors.ToArray(),
        Width = settings.Width
    };
    if (settings.ShowLegend)
    {
        chart.Legends.Add("Legend").Alignment = StringAlignment.Center;
    }
    AddChartArea(chart);

    foreach (var seriesData in chartDataData.Series)
    {
        AddSeries(chart, seriesData, settings.ChartType);
    }

    chart.AlignDataPointsByAxisLabel();
    return chart;
}

private void AddChartArea(Chart chart)
{
    var area = new ChartArea();
    area.AxisX.LabelStyle.Angle = -45;
    area.AxisX.MajorGrid.LineColor = Color.Transparent;
    chart.ChartAreas.Add(area);
    area.AxisX.LabelStyle.Font = area.AxisY.LabelStyle.Font = new Font("Arial", 11, GraphicsUnit.Pixel);
}

private void AddSeries(Chart chart, SeriesData data, SeriesChartType chartType)
{
    var series = new Series
    {
        ChartType = chartType,
        Name = data.Name,
        ToolTip = data.Name,
        Url = data.Url
    };

    foreach (var pointData in data.Points)
    {
        AddPoint(series, pointData.XValue, pointData.YValue);
    }
    chart.Series.Add(series);
}

private void AddPoint(Series series, string xValue, float yValue)
{
    var point = new DataPoint
    {
        AxisLabel = xValue
    };
    point.SetValueXY(xValue, yValue);
    series.Points.Add(point);
}

这里是设置对象的代码:

public static ChartSettings TaskSummary = new ChartSettings
{
    ChartType = SeriesChartType.StackedColumn,
    Height = Unit.Pixel(300),
    Width = Unit.Pixel(450),
    PaletterCustomColors = new[]
    {
        Color.FromArgb(191, 214, 151),
        Color.FromArgb(249, 255, 149),
        Color.FromArgb(191, 79, 75),
        Color.Green
    },
    ShowLegend = true
};

感谢您的帮助。

你尝试过 area.AxisX.LabelStyle.Font.Bold = false 吗?另外,可以尝试调整字体大小,比如改为12,看看效果如何... - scrat.squirrel
1个回答

5

如果你将图表的BackColor设置为Color.Transparent,则需要设置AntiAliasing="Graphics"


你能参考文档并解释它为什么能正常工作吗? - KFL
我能找到的最好的解释在这里中。引用:“问题深层次地存在于图表控件使用的GDI+中...当您在具有透明背景的图像中绘制文本并且使用文本反锯齿时,GDI+使用黑色作为默认背景来计算反锯齿效果。您可以将纯色设置为背景,或者您可以使用Chart.AntiAliasing = AntiAliasingStyles.Graphics;关闭文本反锯齿。” - KFL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接