myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE
   » Gadget für Windows
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin
» Accessoires

Ressourcen
» .NET-Glossar
» guide to C#
» openbook: Visual C#
» openbook: OO
» .NET BlogBook
» MSDN Webcasts
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Bankverbindung
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grafik und Sound » ZedGraph zeichnet erst nach klick // zeichnet ohne wirkliche Skalierung
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

ZedGraph zeichnet erst nach klick // zeichnet ohne wirkliche Skalierung

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
stav0815
myCSharp.de-Mitglied

Dabei seit: 29.04.2008
Beiträge: 12


stav0815 ist offline

ZedGraph zeichnet erst nach klick // zeichnet ohne wirkliche Skalierung

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich habe mich heute mit ZedGraph eingelesen und es auch geschafft, anhand der Beispiele aus zwei Arrays einen Graphen zeichnen zu lassen. Allerdings funzt dies ned so richtig wie ich will und die Skalierung (die ja eigentlich automatisch geschehen sollte) passiert nicht.

C#-Code:
        private void qwaehlen_Click(object sender, EventArgs e)
        {
            source.pfad();
            pfadbox.Text = source.getpath();
            path = source.getpath();
            if (path != null)
            {
                StreamReader ausles = new StreamReader(path);
                {
                    string zeile;
                    //inhaltbox.Text = ausles.ReadToEnd();
                    while (zaehler <= 1000)
                    {
                        zaehler++;
                        // ergänzung
                        zeile = ausles.ReadLine();
                        //MessageBox.Show(zeile);
                        if (zeile == null)
                        {
                            break;
                        }
                        else
                        {
                            char[] sep = { ' ', '\t' };
                            string[] x = zeile.Split(sep, 5);
                            inhaltbox.Text += zeile + "\r\n";
                            //try/catch, daist in dem fall nicht notwendig in diversen Zeilen keine Zahlen stehn
                            try
                            {
                                xachse[zaehler] = Convert.ToInt32(Convert.ToDouble(x[0]) * 100);
                                yachse[zaehler] = Convert.ToInt32(x[2]);
                            }
                            catch
                            {
                            }
                            // ergänzung
                        }
                    }
                }
            }
        }

Dies ist der Code, in dem ich meine Arrays mit Daten fütter die aus ner Textdatei kommen. Das funzt auch soweit.

C#-Code:
        private void zeichnen_Click(object sender, EventArgs e)
        {
            CreateGraph(zg1);
            SetSize();
        }
        private void CreateGraph(ZedGraphControl zg1)
        {
            // get a reference to the GraphPane
            GraphPane myPane = zg1.GraphPane;

            // Set the Titles
            myPane.Title.Text = "Diagramm";
            myPane.XAxis.Title.Text = "Zeit in ms";
            myPane.YAxis.Title.Text = "Temperatur in °C";
            myPane.XAxis.MajorGrid.IsVisible = true;
            myPane.YAxis.MajorGrid.IsVisible = true;

            // Make up some data arrays based on the Sine function
            PointPairList list1 = new PointPairList();
            for (int i = 2; i < 100; i++)
            {
                if (yachse[1] < 0)
                {
                    list1.Add(xachse[i], yachse[i]);
                }
            }
                LineItem myCurve = myPane.AddCurve("Temperatur",
                      list1, Color.Red, SymbolType.None);

                // Tell ZedGraph to refigure the
                // axes since the data have changed
                zg1.AxisChange();


        }
        private void Form1_Resize(object sender, EventArgs e)
        {
            SetSize();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            SetSize();
        }

und das is der Code für das zeichnen des Diagramms. Das funzt fast ned...
29.04.2008 12:26 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
robbyrc robbyrc ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.02.2006
Beiträge: 302
Entwicklungsumgebung: Visual Studio 2008 Prof.
Herkunft: Passau


robbyrc ist offline MSN-Passport-Profil von robbyrc anzeigen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

also was mir jetzt mal auffällt ist, dass du die Funktion CreateGraph in einer Funktion aufrufst, die ja einen Klick erfordert:

C#-Code:
        private void zeichnen_Click(object sender, EventArgs e)
        {
            CreateGraph(zg1);
            SetSize();
        }

Da ist es dann auch logisch, dass du erst klicken musst, damit der Graph kommt.
Soll der Graph sofort gezeichnet werden, würde ich den Aufruf an CreateGraph() halt einfach ans ende der Funktion hängen, wo du die Datei auswählst.

Was macht die Funktion SetSize? So wie du das aufgebaut hast, müsste er schon automatisch skalieren.

MFg,
Daniel
29.04.2008 12:53 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
stav0815
myCSharp.de-Mitglied

Dabei seit: 29.04.2008
Beiträge: 12

Themenstarter Thema begonnen von stav0815

stav0815 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

ja, er soll erst auf click des buttons zeichnen. aber das macht er irgendwie ja ned richtig. erst wenn ich im diagramm nen fenster auswähl.

das setsize() brauch ich dann ned, oder wie?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von stav0815 am 29.04.2008 13:28.

29.04.2008 13:24 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
robbyrc robbyrc ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.02.2006
Beiträge: 302
Entwicklungsumgebung: Visual Studio 2008 Prof.
Herkunft: Passau


robbyrc ist offline MSN-Passport-Profil von robbyrc anzeigen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Also ich hab das SetSize noch nie benutzt, ist auch in diesem Fall nicht notwendig.

Das mit dem Klick müsste dann schon passen.

Was heißt denn "er zeichnet nicht richtig" genau? Augenzwinkern
29.04.2008 13:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
stav0815
myCSharp.de-Mitglied

Dabei seit: 29.04.2008
Beiträge: 12

Themenstarter Thema begonnen von stav0815

stav0815 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Er zeichnet nicht richtig bedeutet, dass er nicht zeichnet, bis ich nen Fenster im Diagramm zieh oO
29.04.2008 13:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
robbyrc robbyrc ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.02.2006
Beiträge: 302
Entwicklungsumgebung: Visual Studio 2008 Prof.
Herkunft: Passau


robbyrc ist offline MSN-Passport-Profil von robbyrc anzeigen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Also in meinem Projekt sieht das z.B. so aus:

C#-Code:
        public void setValues(List<Messspur> spuren)
        {
            int xz = 0;

            lst = spuren;

            foreach (Messspur spur in spuren)
            {
                double[] X = new double[spur.m_Values.Count];
                double[] Y = new double[spur.m_Values.Count];

                for (int i = 0; i < spur.m_Values.Count; i++)
                {
                    X[i] = (double)((Messwerte)spur.m_Values[i]).x_pos;
                    Y[i] = ((Messwerte)spur.m_Values[i]).o_diameter;
                }

                zedGraphControl1.GraphPane.Title.Text = "Auswertung - " + spur.m_zskType + " / " + spur.m_zskSpur;
                zedGraphControl1.GraphPane.XAxis.Title.Text = "Position";
                zedGraphControl1.GraphPane.YAxis.Title.Text = "Durchmesser";

                // Skalierung
                zedGraphControl1.GraphPane.XAxis.Scale.Min = spur.xMin;
                zedGraphControl1.GraphPane.XAxis.Scale.Max = spur.xMax;

                zedGraphControl1.GraphPane.AddCurve("Messspur 1", X, Y, colors[xz], ZedGraph.SymbolType.None);
                xz++;
            }



            zedGraphControl1.AxisChange();
        }

und wird sofort gezeichnet.
Sieht aber bei dir auch vergleichbar aus Augenzwinkern
29.04.2008 13:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
stav0815
myCSharp.de-Mitglied

Dabei seit: 29.04.2008
Beiträge: 12

Themenstarter Thema begonnen von stav0815

stav0815 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

ich hab keine derartige skalierung, werd das aber definitiv mal ausprobieren großes Grinsen
29.04.2008 13:39 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
robbyrc robbyrc ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.02.2006
Beiträge: 302
Entwicklungsumgebung: Visual Studio 2008 Prof.
Herkunft: Passau


robbyrc ist offline MSN-Passport-Profil von robbyrc anzeigen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Bei mir ist auch als Minimum nur der Minimalwert der Messwerte, als Maximalwert halt der Maximalwert der Messwerte.

Soviel ich mich erinnern kann ging es aber auch ohne das manuelle setzen der Skalierung.
29.04.2008 13:47 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
stav0815
myCSharp.de-Mitglied

Dabei seit: 29.04.2008
Beiträge: 12

Themenstarter Thema begonnen von stav0815

stav0815 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

mein problem ist halt, dass er das ding wirklich erst zeichnet nachdem ich in das Ding reinklicke und ein Fenster ziehe... ansonsten wär mir die Auto-Skalierung schon recht
29.04.2008 13:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
robbyrc robbyrc ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.02.2006
Beiträge: 302
Entwicklungsumgebung: Visual Studio 2008 Prof.
Herkunft: Passau


robbyrc ist offline MSN-Passport-Profil von robbyrc anzeigen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hast dus nachm zeichnen schon mal mit Update() oder Refresh() des Fensters oder des ZedGraph Controls probiert?
29.04.2008 13:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
stav0815
myCSharp.de-Mitglied

Dabei seit: 29.04.2008
Beiträge: 12

Themenstarter Thema begonnen von stav0815

stav0815 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

ne, muss ich aber mal versuchen...
29.04.2008 15:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 6 Jahre.
Der letzte Beitrag ist älter als 6 Jahre.
Antwort erstellen


© Copyright 2003-2014 myCSharp.de-Team. Alle Rechte vorbehalten. 03.09.2014 08:58