Nach Listenauswahl neue Funktion zeichnen

Tschakle

Grünschnabel
Hey.

Ich habe folgendes Problem:

Ich habe 2 Listen mit Funktionen für die x-Werte der Funktion (liste1) und für die y-Werte der Funktion (liste2).

Diese Funktionen ändern sich dann jeweils nach eingabe verschiedener Parameter.

Also das alles habe ich shcon geschafft, aber bloß mit jeweils einer Funktion für x und y.....sprich einer aus jeder liste.

jetzt muss ich aber die funktionen wechseln können, also das nach wahl einer neuen funktion aus der Liste auch eine neue Funktion gezeichnet wird.

da dachte ich halt an "SelectedIndexChanged" der Liste und dann die gewählte Funktion in der Paint-Methode ersetzen zu lassen, um sie dann neu zu zeichnen, aber des klappt irgendwie net so, da ich ja die punkte der funktion durch eine for-schleife in einem array speichern muss...

Hier mal der Code wie ich es soweit schaffte:

Code:
 public double x = 0;
        public Point[] rel = new Point[PointNum];
        public double step = 2 * Math.PI / (PointNum - 1);
        public double t = 0;
        public double A = 1;
        public double B = 1;
        public double C = 0;
        public double D = 0;
        const int PointNum = 50;
       
        private void track_A_Scroll(object sender, EventArgs e)
        {

            A = track_A.Value;
            txtParaA.Text = (track_A.Value).ToString();
            txtZeitA.Text = A.ToString();
            Refresh();
        }

        private void track_B_Scroll(object sender, EventArgs e)
        {
            B = track_B.Value;
            txtParaB.Text = (track_B.Value).ToString();
            Refresh();
        }

        private void track_C_Scroll(object sender, EventArgs e)
        {
            txtParaC.Text = (track_C.Value).ToString();
            Refresh();
        }

        private void track_D_Scroll(object sender, EventArgs e)
        {
            txtParaD.Text = (track_D.Value).ToString();
            Refresh();
        }

       
       

        private void picFunktion_Paint(object sender, PaintEventArgs e)
        {
            {
                double wid = picFunktion.ClientSize.Width / 2,
                          hei = picFunktion.ClientSize.Height / 2;

                t = 0;
                for (int i = 0; i < PointNum; i++, t += step)
                {
                    x = Math.Sin(A * t);
                    rel[i] = new Point((int)(wid + wid * x), (int)(hei + hei * Math.Cos(B*t)));
                }

                e.Graphics.DrawCurve(Pens.Black, rel);
            }
        }

        private void listBox_x_SelectedIndexChanged(object sender, EventArgs e)
        {
            
            if (listBox_x.SelectedIndex == 2)
            {
                //leer
          }
            else
            {
                //leer
            }

            Refresh(); 
        }

Ich will halt x dann immer einer anderen Funktion zuweisen lassen und dann immer noch die Parameter ändern können.

Hat wer ne Idee oder hab ich auch einen denkfehler?

Danke

Lg Thomas
 
Zurück