Диаграммы Microsoft: прозрачность - PullRequest
5 голосов
/ 21 февраля 2011

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

Ответы [ 3 ]

6 голосов
/ 26 ноября 2011

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

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

0 голосов
/ 27 февраля 2015
chart.TextAntiAliasingQuality = TextAntiAliasingQuality.SystemDefault;

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

0 голосов
/ 21 апреля 2012

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

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

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

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

...