微软图表:透明度

5
我需要一个背景透明的图表,所以PNG格式似乎是一个不错的选择。但是当我设置透明背景时,坐标轴标签的质量急剧下降。我该如何解决?请查看以下代码。目前,图表具有透明背景,正如我想要的那样,但文本质量很差。如果我注释掉两个"Color.Transparent"的设置,则文本质量很好,但背景不透明。我该如何获得透明度和漂亮的文本?
public static void Main(string[] args)
{
  Chart c = new Chart();
  c.TextAntiAliasingQuality = TextAntiAliasingQuality.High;

  Series s = new Series("Series1");
  c.Series.Clear();
  c.Series.Add(s);
  s.ChartType = SeriesChartType.Line;

  s.Color = Color.Black;

  ChartArea chartArea = new ChartArea("ChartArea1");
  c.ChartAreas.Clear();
  c.ChartAreas.Add(chartArea);

  chartArea.BackColor = Color.FromArgb(255, 255, 255);
  chartArea.BackSecondaryColor = Color.FromArgb(220, 220, 220);
  chartArea.BackGradientStyle = GradientStyle.TopBottom;

  chartArea.AxisX.LineColor = Color.Gray;
  chartArea.AxisX.LineWidth = 2;
  chartArea.AxisX.LineDashStyle = ChartDashStyle.Solid;

  chartArea.AxisY.LineColor = Color.Gray;
  chartArea.AxisY.LineWidth = 2;
  chartArea.AxisY.LineDashStyle = ChartDashStyle.Solid;

  chartArea.AxisX.MajorGrid.LineColor = Color.LightGray;
  chartArea.AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash;

  chartArea.AxisY.MajorGrid.LineColor = Color.LightGray;
  chartArea.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash;

  c.BackColor = Color.Transparent;
  chartArea.BackColor = Color.Transparent;


  double[] x = new double[] { 1999, 2005 };
  double[] y = new double[] { 3210, 13456 };

  Axis ay = chartArea.AxisY;
  ay.Maximum = 13456;
  ay.Minimum = 3210;

  Axis ax = chartArea.AxisX;
  ax.Maximum = 2005;
  ax.Minimum = 1999;

  for (int i = 0; i < x.Length; i++)
  {
    double xvalue = x[i];
    double yvalue = y[i];
    s.Points.AddXY(xvalue, yvalue);
   }

   // Save chart-image to disk:
   c.SaveImage("chartimage.png", ChartImageFormat.Png);
}

尝试设置c.AntiAliasing = Text。顺便说一句,将来您能否也发布一张图片?我认为这会让人们更容易找到您的问题。 - Brandon Bohrer
3个回答

6

将图表的抗锯齿设置为 AntiAliasingStyles.Graphics 以关闭文本上的抗锯齿。

摘自这个帖子


虽然这样可以稍微清理一下文本,但仍然不够平滑……不过这更多是图表控件本身的问题。 - Edyn

0

或许这可以帮到你

在你的 .aspx 文件中,找到包含图表代码的 asp:ChartArea 标签,然后添加 BackColor = "Transparent"。

<asp:ChartArea Name="ChartArea1" BackColor="Transparent" 
            </asp:ChartArea>

希望这可以帮到你。


0

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