C# Graphik darstellen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von légionnaire, 5. Januar 2014 .

Schlagworte:
  1. 5. Januar 2014
    Zuletzt bearbeitet: 5. Januar 2014
    hi Jungs

    ich hab folgende Aufgabe in der Uni und zwar muss ich ein Programm schreiben dass mir die Momentenlinie eines Trägers infolge einer Trapezlast darstellt! wenn das jemand genauer verstehen will dann kann ich ja später mal was kleines in paint zeichnen!

    das problem bei meinem code liegt denke ich gerade an der Deklaration meiner variablen in Verbindung mit "Math.Pow"
    die Formel hinter M ist so wie ich sie eingegeben richtig und ich brauch sie leider genau so sonst hätte ich das eta^3 schon durch eta*eta*eta ersetzt aber 0^3 ist was anderes als 0*0*0 und das ist leider wichtig bei mir!

    hier mal mein quellcode:

    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Drawing.Drawing2D;
    
    namespace WindowsFormsApplication1
    {
     public partial class Form1 : Form
     {
     public Form1()
     {
     InitializeComponent();
     }
    
     private void button1_Click(object sender, EventArgs e)
     {
     FileInfo Sicherung = new FileInfo(@"C:\Users\" + textBox4.Text + ".txt");
     StreamReader lesen = Sicherung.OpenText();
    
     textBox1.Text = lesen.ReadLine().ToString();
     textBox2.Text = lesen.ReadLine().ToString();
     textBox3.Text = lesen.ReadLine().ToString();
     lesen.Close();
     }
    
     private void button2_Click(object sender, EventArgs e)
     {
     Graphics grfx = this.CreateGraphics();
    
     float l = float.Parse(textBox1.Text);
     float q = float.Parse(textBox2.Text);
     float qli = float.Parse(textBox3.Text);
    
     Pen stift = new Pen(Color.Black);
     grfx.DrawLine(stift, 50, 400, l * 40 + 50, 400);
     stift.Color = Color.Red;
     grfx.DrawString("M", Font, Brushes.Red, 50, 400);
    
     float Av = 0.0F;
     float Bv = 0.0F;
     Av = ((2 * qli + q) / 6) * l;
     Bv = ((qli + 2 * q) / 6) * l;
    
     float li = 0.0F;
     float lre = 0.0F;
     double eta = 0.0;
     double etaS = 0.0;
     float M = 0.0F;
     float liVorher = 0.0F;
     float MVorher = 0.0F;
    
     for (int i = 0; i <= 100.0F; i++)
     {
     li = l * (i / 100.0F);
     lre = l - li;
     eta = li / l;
     etaS = lre / l;
     //qre = qli - (qli - q) * (i / 10.0F);
     // M = Av * li + ((qre * li * li) / 2.0F) - (((qli - qre) * li * li) / 3.0F);
     M = ((((etaS - Math.Pow(etaS, 3)) * qli) + (eta - Math.Pow(eta, 3)) * q) * l * l) / 6.0F;
     grfx.DrawLine(stift, liVorher * 40 + 50, MVorher + 400, li * 40 + 50, M + 400);
     MVorher = M;
     liVorher = li;
     }
    
     grfx.SmoothingMode = SmoothingMode.HighQuality;
    
     }
     }
    }
    wenn ich eta und etaS als float definiere dann bekomme ich folgende Fehlermeldung zurück: "der Typ "double" kann nicht implizit in "float" konvertiert werden. Es ist bereits eine Explizite Konvertierung vorhanden. ( Möglicherweise fehlt eine Umwandlung)."


    wär wirklich mega geil wenn mir da jemand helfen könnte, es fehlt nicht sehr weit denke ich!

    vielen dank im voraus!


    grüße!


    Edit: ach ja das was ich auskommentiert hab relativ weit unten war ein anderer Lösungsansatz von nem komillitonen den ich aber nicht nachvollziehen kann!
     
  2. 5. Januar 2014
    AW: C# Graphik darstellen

    1. Benne deine Objekte. TextBox1 hilft niemandem.
    2. Math.Pow-Methode (System)
    Math.Pow erwartet Double als Parameter und gibt double zurück. Entweder du Castest/Konvertiest deine Variablen oder du deklarierst sie gleich als double.

    Mein Ratschlag:
    Lern die Grundlagen. So wird das nichts.
     
    1 Person gefällt das.
  3. 5. Januar 2014
    AW: C# Graphik darstellen


    Danke für den Tipp, ich hab in 4 Wochen Prüfung und das ist die Vorleistung die ich brauch um die Prüfung schreiben zu dürfen! diese teilaufgabe ist nur ein teil den erst hab ich bereits!

    die Objekte sind ja hier gar nicht von Relevanz, es werden in jede Textbox nur zahlen eingegeben für länge (l) und Belastung ( "qli" für den Wert der Belastung am linken Trägerrand und "q" für die Belastung am rechten Trägerrand, das ist so gegeben!)!

    mein problem ist nur dass ich nicht weiss wann und wo ich in diesem Bereich meine variablen deklarieren kann sodass kein Fehler raus kommt! dass Math.Pow Double als Parameter erwartet und auch ausgibt ist mir klar und das problem ist dass die anderen eingaben als float definiert sind und scheinbar diese Kombination nicht funktioniert!

    wie kann ich das problem lösen!? wann muss ich was umkonvertieren ohne eine extra schleife einzubauen denn eta und etaS sind ja von meiner "for"-Schleife abhängig!?


    wäre super wenn da noch jemand n tipp für mich hätte!

    danke und grüße!


    kann ich für die Funktion "Graphen Zeichen" die variablen auch als double deklarieren oder muss das float sein, bei mir im Skript steht das nämlich immer mit float drin!?
     
  4. 5. Januar 2014
    AW: C# Graphik darstellen

    Wenn du weißt, dass Math.Pow Double erwartet, solltest du auch in der Lage sein herauszufinden welche Parameter Graph.DrawLine(...) akzeptiert (Graphics.DrawLine-Methode (System.Drawing)). Die Stichworte zum Wandeln der Variablen habe ich bereits genannt:
    [G]C# Variable Casting[/G]
    [G]C# Variable Converting[/G]
    Rechnen würde ich immer mit Double einfach der Genauigkeit halber. Das solltest du dir auf jeden Fall zu gemüte führen denn damit hast du anscheinend noch massive Probleme:
    Typen (C#-Programmierhandbuch)
     
  5. 5. Januar 2014
    Zuletzt bearbeitet: 5. Januar 2014
    AW: C# Graphik darstellen


    danke für die links aber scheinbar bin ich nicht in der Lage herauszufinden was drwaline erwartet!

    es tut mir leid ich weiss nicht wo ich was ändern muss, die Sache ist die wir lernen Grundlagen und ich habe im moment einfach ein problem hie die Lösung zu finden! wir haben nicht gelernt welche Funktion welche werte erwartet es steht einfach so im Skript und wir sollen das verstehen!

    glaub mir ich hab versucht da rumzubasteln ich hab auch überlegt aber ich finde nichts das mir als einfach und passend erscheint!
    ich hab einfach in einer float Funktion Math.Pow mit double werten, ich weiss mittlerweile dass da irgendetwas nicht passt aber ich weiss nicht wie ich es einfach ändern kann!


    grüße!
     
  6. 5. Januar 2014
    AW: C# Graphik darstellen

    Srsyl ?(
    Du verwendest hier die letzte Methode. System.Single kann man in diesem Fall mit float gleichsetzten.

    PS: Wenn du schon Probleme mit dem lesen der MSDN Doku hast, solltest du evtl. die Prüfung schieben und dich auf andere Fächer konzentrieren. Nimm dir nächstes Semester mehr als 4 Wochen Zeit und dann wird das auch. Habe einige Kommilitonen die das gleiche Problem hatten.

    //edit: Dein letzter Edit bestätigt mein PS nochmal. Glaub mir besser ne ordentliche Note ein Semester Später als evtl. ne 4.0 im Zeugnis (ist bei uns die schlechteste Note).
     
  7. 5. Januar 2014
    Zuletzt bearbeitet: 5. Januar 2014
    AW: C# Graphik darstellen

    danke für deine Hilfe, ich muss die Prüfung schreiben und fertig! hilft alles nichts!

    falls sich noch jemand findet der mir helfen kann dann würde ich mich freuen!!



    DAMN ich habs!

    danke dir für deine Hilfe!
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.