2016-11-12 1 views
0

pouvez-vous me dire quel est le problème avec mon code? Je veux générer l'image de graphique dans l'application de console au-dessus de la bibliothèque System.Windows.Forms.DataVisualization.Charting ... Le code suivant me génère le graphique seulement avec des colonnes, mais j'ai besoin de graphique avec l'axe. Des idées?Enregistrement de graphique dans le fichier image avec l'axe

Chart chart = new Chart();  

chart.Size = new System.Drawing.Size(2000, 500); 
ChartArea area = new ChartArea(); 
chart.ChartAreas.Add(area); 

chart.BackColor = System.Drawing.Color.Transparent; 
chart.ChartAreas[0].AxisX.MajorGrid.Enabled = false; 
chart.ChartAreas[0].AxisY.MajorGrid.Enabled = false; 

chart.ChartAreas[0].AxisX.Title = "sasdasdasd"; 

Series series = new Series() 
{ 
    Name = "series2", 
    IsVisibleInLegend = false, 
    ChartType = SeriesChartType.Column 
}; 

chart.Series.Add(series); 

foreach (CnbItem item in items) 
{ 
    DataPoint p1 = new DataPoint(0, Double.Parse(item.Kurz)); 
    p1.Color = System.Drawing.Color.LightBlue; 
    p1.AxisLabel = item.Kod; 
    p1.LegendText = item.Kod; 
    p1.Label = item.Kurz; 

    series.Points.Add(p1); 

} 

string filename = "D:\\Chart.png"; 
chart.SaveImage(filename, ChartImageFormat.Png); 

Répondre

0

Mise à jour: Réglage de la à Transparent fonctionne réellement Backcolor du Chart très bien. Cependant, certaines visionneuses d'images n'affichent pas de transparence. J'utilise Irfanview comme visionneuse par défaut et c'est l'un de ceux qui ne le peuvent pas. Je soupçonne que le vôtre manque également de transparence ..

lieu toute transparence est rendu en noir, donc à moins que vous avez une couleur de ligne non-noir .. vos axes et les étiquettes, etc .. semblent être disparu. Paint (sur W10) en est un autre mais rend la transparence au blanc, de sorte que les pixels noirs sont au moins visibles.

L'image ci-dessous est de Photoshop, qui, bien sûr, n'a pas ce problème ..

enter image description here

+0

grâce, cela fonctionne de couleur, mais maintenant ces étiquettes AxisX ne sont pas sous toutes les colonnes , et les valeurs sur axisY ne sont pas correctes:/peux tu me dire pourquoi sans créer de nouveaux post pls? – Aligator

+1

Eh bien pour cela toutes les règles normales s'appliquent. Les étiquettes d'axe sont généralement placées automatiquement en fonction de l'espace disponible. vous pouvez définir un Intervalle comme vous voulez, '1' signifiant toutes les unités. Vous ne savez pas exactement ce que vous entendez par 'les valeurs sur l'axeY ne sont pas correctes (?)'. Vous pouvez mettre à jour votre question avec une image .. – TaW

+0

Oui, intervalle = 1, était ce dont j'avais besoin :) merci – Aligator