Vollständige Version anzeigen : C# Graphik darstellen


légionnaire
05.01.2014, 10:16

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 :D und das ist leider wichtig bei mir!

hier mal mein quellcode:

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!

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
MasterJulian
05.01.2014, 11:30

1. Benne deine Objekte. TextBox1 hilft niemandem.
2. Math;Pow-Methode (System) (;msdn;microsoft~com/de-de/library/system;math;pow(v=vs;110);aspx)
Parameters
x
Type: System;Double
A double-precision floating-point number to be raised to a power.

y
Type: System;Double
A double-precision floating-point number that specifies a power.

Return Value
Type: System;Double
The number x raised to the power y;

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.


légionnaire
05.01.2014, 15:26

1. Benne deine Objekte. TextBox1 hilft niemandem.
2. Math;Pow-Methode (System) (;msdn;microsoft~com/de-de/library/system;math;pow(v=vs;110);aspx)

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;



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!?


MasterJulian
05.01.2014, 15:53

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) (;msdn;microsoft~com/de-de/library/system;drawing;graphics;drawline;aspx)). Die Stichworte zum Wandeln der Variablen habe ich bereits genannt:[..;]Entweder du Castest/Konvertiest deine Variablen oder du deklarierst sie gleich als double;[..;]
C# Variable Casting
C# Variable Converting
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) (;msdn;microsoft~com/de-de/library/ms173104;aspx)


légionnaire
05.01.2014, 16:01

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) (;msdn;microsoft~com/de-de/library/system;drawing;graphics;drawline;aspx)). Die Stichworte zum Wandeln der Variablen habe ich bereits genannt:
C# Variable Casting
C# Variable Converting
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) (;msdn;microsoft~com/de-de/library/ms173104;aspx)



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!


MasterJulian
05.01.2014, 16:08

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

grüße!
Srsyl ?(
DrawLine(Pen, Point, Point) - Draws a line connecting two Point structures.
DrawLine(Pen, PointF, PointF) - Draws a line connecting two PointF structures.
DrawLine(Pen, Int32, Int32, Int32, Int32) - Draws a line connecting the two points specified by the coordinate pairs.
DrawLine(Pen, Single, Single, Single, Single) - Draws a line connecting the two points specified by the coordinate pairs;

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).


légionnaire
05.01.2014, 16:12

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!


Ähnliche Themen zu C# Graphik darstellen
  • Team Fortess 2 - Graphik.....?
    Hi... ..;ich hab mir gerade die neue Gamestar reingezogen, als ich zufällig auf den Team Fortress 2 trailer gestoßen bin. Hab ihn mir also reingezogen und war etwas schockiert.... ..;was ist das für eine scheiss Graphik? Alles auf Comic getrimmt. Nichts mit HL2 highend Graphik, wie sie e [...]

  • Graphik / Gameplay ?
    Moin Leudz in den heutigen tagen von spielen wie crysis oder Oblivion fragt man sich oft ob nich das gameplay und der ideenreichtum zu kurz kommt. Manche spiele werden schon so sehr auf Graphik getrimmt das die Spieldauer ziemlich kurz wird. Was meint ihr dazu seit ihr eher für Graphik ode [...]

  • Graphik-Taschenrechner
    hallo, ich brauch hilfe beim kauf eines graphik-taschenrechners, vllt kann mri ja jemand helfen? ;) preislich würd ich sagen 100€ plus/minus 20€, von den funktionen her sollte er alles haben was mir in meinem IBA studium nützlich sien könnte :) [...]

  • Diablo II Graphik add-on?
    Hy, wollte mich erkundigen obs ein graphik add-on für diablo II gibt, sodass man es in ner höheren auflösung oder sogar breitbild 16:10 spielen kann (1680x1050 wäre optimal) Bei anderen älteren spielen gibt es sowas, bei diablo 2 lord of destruktion auch? [...]



raid-rush.ws | Imprint & Contact pr