2016-04-20 4 views
0

Ich mache ein Programm, um Parabeln zu zeichnen, und ich möchte die X- und Y-Achsen (die von (0,0)) eine andere Farbe haben. Ich habe keine Möglichkeiten gefunden, dies zu tun, und die einzige Lösung, die ich gefunden habe, ist ein großes Raster zu machen und sein Inkrement auf die Hälfte der Graphengröße zu setzen. Gibt es eine Alternative?WinForms: Markieren von X- und Y-Achsen

Ich habe das Standard-Chart-Steuerelement verwendet. Ich würde erwarten, dass so etwas wie:

+0

Wie erstellen Sie die Grafik? Verwenden von GDI + und benutzerdefinierten Bildern oder MSChart oder etwas anderes? Bitte fügen Sie weitere Details zu der Frage hinzu. Auch das Hinzufügen von Code oder ein Bild von dem, was Sie erwarten, kann hilfreich sein. –

+0

Ich habe das Standard-Chart-Steuerelement verwendet. Ich würde etwas wie http://mathbits.com/MathBits/StudentResources/GraphPaper/14by14%20axes.jpg erwarten. – TheRniz

+0

Mögliches Duplikat von [Erstellen eines 4-seitigen Diagramms/4-seitigen Rasters in Visual Studio] (http: // stackoverflow. com/questions/36117364/making-a-4-seitig-Graph-4-seitig-Grid-in-Visual-Studio) - Werfen Sie auch einen Blick auf [http://stackoverflow.com/questions/36119477/nicer-axisarrowstyle-arrows-for-my-chart-Achsen/36119485 # 36119485) – TaW

Antwort

3

Sie Crossing für Achse festlegen, die die Achse zur Mitte des Diagramms zu verschieben. Sie können auch LineWidth für die Achse einstellen, um sie dicker zu machen. Sie können auch ArrowStyle mit einem Pfeil am Ende der Achse festlegen.

Zum Beispiel ein Diagramm wie diese haben:

enter image description here

Verwendung solcher Code:

private void Form1_Load(object sender, EventArgs e) 
{ 
    //Set Chart Margins 
    this.chart1.ChartAreas[0].Position.Auto = false; 
    this.chart1.ChartAreas[0].Position.X = 10; 
    this.chart1.ChartAreas[0].Position.Y = 10; 
    this.chart1.ChartAreas[0].Position.Width = 80; 
    this.chart1.ChartAreas[0].Position.Height = 80; 

    //Configure X Axis 
    this.chart1.ChartAreas[0].AxisX.Crossing = 0; 
    this.chart1.ChartAreas[0].AxisX.Interval = 1; 
    this.chart1.ChartAreas[0].AxisX.LabelStyle.Enabled = false; 
    this.chart1.ChartAreas[0].AxisX.LineWidth = 2; 
    this.chart1.ChartAreas[0].AxisX.ArrowStyle = 
     System.Windows.Forms.DataVisualization.Charting.AxisArrowStyle.Lines; 

    //Configure Y Axis 
    this.chart1.ChartAreas[0].AxisY.Crossing = 0; 
    this.chart1.ChartAreas[0].AxisY.Interval = 5; 
    this.chart1.ChartAreas[0].AxisY.LineWidth = 2; 
    this.chart1.ChartAreas[0].AxisY.LabelStyle.Enabled = false; 
    this.chart1.ChartAreas[0].AxisY.ArrowStyle = 
     System.Windows.Forms.DataVisualization.Charting.AxisArrowStyle.Lines; 

    //Set Chart Type 
    this.chart1.Series[0].ChartType = 
     System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline; 

    //Set Data 
    var p = new List<PointF>(); 
    for (int i = -5; i <= 5; i++) 
    { 
     p.Add(new PointF(i, i * Math.Abs(i))); 
    } 
    this.chart1.DataSource = p; 
    this.chart1.Series[0].XValueMember = "X"; 
    this.chart1.Series[0].YValueMembers = "Y"; 
    this.chart1.Series[0].IsVisibleInLegend = false; 
}