Es war schon eine Weile, da ich so etwas wie dies tat, aber ich versuche, eine benutzerdefinierte Diagramm Klasse aus der DataVisualization.Chart Klasse abgeleitet zu erstellen, ich habe folgendC# Erstellen von benutzerdefinierten Diagramm Klasse
public class clsCustomChart:System.Windows.Forms.DataVisualization.Charting.Chart
{
public clsCustomChart(string strChartTitle, double[] dblX, double[] dblY)
{
// Create the chart
// Create the chart
Chart chartReturn = new Chart();
chartReturn.BackColor = Color.FromArgb(50, Color.DarkGray);
chartReturn.BorderlineDashStyle = ChartDashStyle.Solid;
chartReturn.BorderlineColor = Color.Black;
chartReturn.Width = 300;
chartReturn.Height = 300;
// Create the legend
Legend l = new Legend("Legend");
l.Docking = Docking.Bottom;
l.BackColor = Color.Transparent;
chartReturn.Legends.Add(l);
// Create the chart area
ChartArea a = new ChartArea("ChartArea1");
a.Area3DStyle.Enable3D = false;
a.Area3DStyle.WallWidth = 0;
a.BackColor = Color.FromArgb(100, Color.Black);
chartReturn.ChartAreas.Add(a);
// Create the axis
a.AxisX.LineColor = Color.Silver;
a.AxisX.MajorGrid.Enabled = true;
a.AxisX.MinorGrid.Enabled = false;
a.AxisX.MajorGrid.LineColor = Color.FromArgb(50, Color.Black);
a.AxisX.LabelStyle.Font = new System.Drawing.Font("Arial", 8F);
a.AxisY.LineColor = Color.Silver;
a.AxisY.MajorGrid.Enabled = true;
a.AxisY.MinorGrid.Enabled = false;
a.AxisY.MajorGrid.LineColor = Color.FromArgb(50, Color.Black);
a.AxisY.LabelStyle.Font = new System.Drawing.Font("Arial", 8F);
// Chart title
chartReturn.Titles.Add(new Title(strChartTitle));
// Add the data
// Create the data series
Series s = new Series("IN");
s.ChartType = SeriesChartType.Line;
dblX.ToList<double>().ForEach(x => { s.Points.Add(x); });
s.Color = Color.FromArgb(200, Color.Red);
s.BorderWidth = 3;
Series s2 = new Series("OUT");
s2.ChartType = SeriesChartType.Line;
dblY.ToList<double>().ForEach(x => { s2.Points.Add(x); });
s2.Color = Color.FromArgb(200, Color.Green);
s2.BorderWidth = 3;
chartReturn.Series.Add(s);
chartReturn.Series.Add(s2);
chartReturn.SaveImage("c:/test/" + DateTime.Now.ToString("ddMMyyyy_HHmmss") + ".jpeg", ChartImageFormat.Jpeg);
}
}
Die Code, der in dem benutzerdefinierten Diagramm ist, wird alle getestet und funktioniert gut, wenn Sie als ein Diagrammobjekt erstellen, und die benutzerdefinierte Klasse speichert das Diagramm als Bild fein.
Allerdings, wenn ich versuche, diese in einer Form
Chart C = (Chart)new clsCustomChart("TEST",x,y);
this.Controls.Add(C);
ich nicht bekommen, um das Diagramm ...... kann jemand raten .....
TIA
können Sie die DataVisualization Chart-Steuerelement an das Fenster Formular hinzufügen und sehen, wie die IDE fügt den Code hinzu? Von dort können Sie den Diagrammtyp durch Ihren eigenen abgeleiteten Typ ersetzen. – dfdsfdsfsdf
Versuchen Sie, einen Wert von einem Konstruktor "zurückzugeben"? Das Diagramm, das Sie definieren, ist in Ihrem benutzerdefinierten Steuerelement geschachtelt und nicht das benutzerdefinierte Steuerelement selbst. – nicholas
Entschuldigung, verstehe ich nicht? Ich habe meinen Code aus der Klasse im Formular "form_load" verwendet und zeichnet das Diagramm gut. –