【问题标题】:Microsoft charts: transparency微软图表:透明度
【发布时间】:2011-02-21 19:35:51
【问题描述】:

我想要一个具有透明背景的图表,因此 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。顺便问一下,将来你也可以发布图片吗?我认为这会让人们更容易找到您的问题。

标签: transparency mschart


【解决方案1】:

将图表的 AntiAliasing 设置为 AntiAliasingStyles.Graphics 以禁用文本的抗锯齿功能。

取自this thread

【讨论】:

  • 虽然这会稍微清理一下文本,但它仍然是不可接受的锯齿状......不过,这更多是图表控件本身的问题。
【解决方案2】:

也许这对你有帮助

在您的图表代码所在的 .aspx 文件中,查找 asp:ChartArea 标记。然后添加 BackColor = "Transparent"。

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

希望对您有所帮助。

【讨论】:

    【解决方案3】:
    chart.TextAntiAliasingQuality = TextAntiAliasingQuality.SystemDefault;
    

    我从这里读到这个:http://forums.asp.net/p/1656335/4315304.aspx?Re%20Chart%20transparency%20and%20text%20quality

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多