Диаграммы Microsoft: прозрачность

Мне нужна диаграмма с прозрачным фоном, и поэтому 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);
}

person xdzgor    schedule 21.02.2011    source источник
comment
Попробуйте установить c.AntiAliasing = Text. Кстати, не могли бы вы в будущем выложить изображение? Я думаю, что это облегчит людям поиск вашей проблемы.   -  person Brandon Bohrer    schedule 21.02.2011


Ответы (3)


Установите для параметра Сглаживание диаграммы значение AntiAliasingStyles.Graphics, чтобы отключить сглаживание текста.

Взято из этой темы.

person Martin Capodici    schedule 26.11.2011
comment
Хотя это немного очищает текст, он по-прежнему неприемлемо неровный... хотя это больше проблема с самим элементом управления диаграммой. - person Edyn; 27.06.2013

Может быть, это поможет вам

в файле .aspx, где находится код диаграммы, найдите тег asp:ChartArea. затем добавьте BackColor = "Прозрачный".

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

Надеюсь, это поможет.

person Pablo Johnson    schedule 20.04.2012

chart.TextAntiAliasingQuality = TextAntiAliasingQuality.SystemDefault;

Я прочитал это отсюда: http://forums.asp.net/p/1656335/4315304.aspx?Re%20Chart%20transparency%20and%20text%20quality

person cheny    schedule 27.02.2015