WinFuture-Forum.de: Graph Zeichnen In C# - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Graph Zeichnen In C#


#1 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 14. Juli 2008 - 09:46

Hallo zusammen

ich zeichne hiermit
		private void button1_Click(object sender, EventArgs e)
		{
		   
			Point p0, p1;
			Pen myPen = new Pen(Color.Black, 1);
			p0 = new Point();
			p1 = new Point();
			p0.X = 10;
			p0.Y = 130;
			p1.X = 270;
			p1.Y = 130;

			Graphics g = this.CreateGraphics();
			g.DrawLine(myPen, p0, p1);

			Point p2, p3;
			Pen myPen1 = new Pen(Color.Black, 1);
			p2 = new Point();
			p3 = new Point();
			p2.X = 130;
			p2.Y = 10;
			p3.X = 130;
			p3.Y = 270;

			Graphics h = this.CreateGraphics();
			g.DrawLine(myPen, p2, p3);
		}


ein koordinatensystem

nun möchte ich in diese Koordinatensystem über ein textfeld einen grapf eingeben z.B. f(x)=2x und diesen dann in dem koordinatensystem anzeigen

ich habe allerdings keine idee wie das geht

kann mir jemand helfen?

Danke shcon mal im voraus

Dieser Beitrag wurde von Dyon bearbeitet: 14. Juli 2008 - 16:16

0

Anzeige



#2 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 14. Juli 2008 - 10:33

Oder hat vielleicht jemand eine Idee wie ich ohne Texteingabe einen graph zeichnen kann, den ich direkt im quellcode eingebe?

MFG
0

#3 Mitglied ist offline   sibbl 

  • Gruppe: aktive Mitglieder
  • Beiträge: 377
  • Beigetreten: 30. Dezember 06
  • Reputation: 3
  • Wohnort:localhost

geschrieben 14. Juli 2008 - 11:15

du musst den rest mit punkten malen. ne schöne for-schleife, die anstelle des x in der funktion für jeden pixel einen wert angibt. diesen term dann ausrechnen und als punkt zeichnen.

oder du nimmst vorgegebene klassen ... google hilft

Dieser Beitrag wurde von sibbl bearbeitet: 14. Juli 2008 - 11:17

0

#4 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 14. Juli 2008 - 11:45

Nach was müsste ich da in Google genau suchen?

Ich habe erst mit c# angefangen^^
0

#5 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 14. Juli 2008 - 16:09

Beitrag anzeigenZitat (Dyon: 14.07.2008, 12:45)

Nach was müsste ich da in Google genau suchen?

Ich habe erst mit c# angefangen^^


z.B. c# math graph oder c# plot graph oder auch c# plot graph x y.

Gruß,
Stefan
0

#6 Mitglied ist offline   [Elite-|-Killer] 

  • Gruppe: aktive Mitglieder
  • Beiträge: 761
  • Beigetreten: 02. Oktober 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Passau

geschrieben 14. Juli 2008 - 18:51

Beitrag anzeigenZitat (Dyon: 14.07.2008, 12:45)

Nach was müsste ich da in Google genau suchen?

Ich habe erst mit c# angefangen^^


Dann fang am besten auch gleich damit an das Zeug ordentlich zu benennen  <_<
0

#7 Mitglied ist offline   Caprio2L 

  • Gruppe: aktive Mitglieder
  • Beiträge: 116
  • Beigetreten: 08. Januar 07
  • Reputation: 0

geschrieben 14. Juli 2008 - 19:17

Eine sehr mächtige und kostenlose Klasse ist ZEDGRAPH.
Du findest es hier.
0

#8 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 15. Juli 2008 - 08:17

Danke für die Antworten

aber eig sollen es gar nicht so aufwendige Graphen sein sondern einfach geraden also sowas f(x)=2x und nich sowas f(x)=x^2 :blush:

und denn noch ne andere frage
wenn ich es so lös dass man bei f(x)=ax des a in eine Textbox eingeben kann und es mir dann mithilfe der variablen den graphen zeichnen lasse? also wie geht das?

Und dann müsste ich ja die Variable als double oder sowas definieren, dass man auch 0,5 oder sowas eingeben kann.

Danke

Dieser Beitrag wurde von Dyon bearbeitet: 15. Juli 2008 - 08:52

0

#9 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 15. Juli 2008 - 10:14

Also des mit dem Graph zeichnen hab ich jetzt einfach so gelöst, dass die einen drei Punkte fest sind und der x- wert von dem einen Punkt immer nur verschoben wird bei z.b. für f(x)=2x habe ich anstatt 200 0,5*200.
Kapiert man das so?

und nun möchte ich eben anstatt dem 0,5 eine Variable benutzen die man in eine TextBox eingibt und die dann über einen Button click eingesetzt wird und mir meine neue gerade zeichnet

Vielen Dank schonmal:-)
0

#10 Mitglied ist offline   sibbl 

  • Gruppe: aktive Mitglieder
  • Beiträge: 377
  • Beigetreten: 30. Dezember 06
  • Reputation: 3
  • Wohnort:localhost

geschrieben 15. Juli 2008 - 10:20

wenn du nur y=a*x rechnen willst, kannste den graphen doch wie bei deiner koordinatenachse zeichnen. brauchst halt blos die entsprechenden algorithmen. is bei dem beispiel aber sehr einfach. kannst sogar nach oben/unten verschieben, - auch nit schwer :blush:

Dieser Beitrag wurde von sibbl bearbeitet: 15. Juli 2008 - 10:20

0

#11 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 15. Juli 2008 - 12:24

So habe ich es ja auch im Endeffekt gelöst
nun will ich es so machen, dass die zahl für a (f(x)=ax) in ein Textfeld geschrieben werden kann, die dann als variable übergeben wird, dass ich die punkte der Geraden dann nur noch mit Variablen zeichnen lassen kann:-)

MFG

Edit:
Die die auch im Skript/Web-Programmierung Forum tätig sind werden sich sicherlich fragen warum ich eine neue Programmiersprache lerne, wenn ich noch nicht mal php gescheid kann.
Das liegt daran, dass ich grad ein Praktikum mache;-)

Dieser Beitrag wurde von Dyon bearbeitet: 15. Juli 2008 - 12:26

0

#12 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 15. Juli 2008 - 15:57

Ohne C# richtig zu können, müsste es doch so in der Art gehen:

float a = float.Parse(this.textBox1.Text);

Pen myPen = new Pen(Color.Black, 1);
Graphics g = this.CreateGraphics();

PointF point1 = new PointF(10.0F, 130.0F - 120.0F * a);
PointF point2 = new PointF(270.0F, 130.0F + 140.0F * a);

g.DrawLine(myPen, point1, point2);


Alles ungetestet und rein ausgedacht :blush:

Gruß,
Stefan
0

#13 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 16. Juli 2008 - 09:24

So das wäre soweit geschafft;-)

Kennt jemand eine Funktion oder sowas mit der ich die ganzen gezeichneten Linien wieder löschen kann?
Und hat noch einer eine Idee wie ich ein Koordinatensystem mit so kleinen Strichen bei den Werten zeichnen kann ohne jeden einzelnen Strich zu zeichnen?
Mit einem Array vielleicht?
ka

Und hat vielleicht einer noch eine Idee wie ich die Geraden dann beschriften kann, nach dem erstellen

und meine letzte Frage: Wie kann ich die Geraden mit dem Koordinatensystem in einem kleinen Bitmap speichern, nach einem Klick auf einen Button. Die Bitmap sollte da vllt. neu erstellt werden.:-
)

So jetzt lassen wir die unwichtigen Dinge erst mal beiseite
Hat jemand eine Idee wie ich eine Parabel der Form f(x)=a*x^2 durch 5 Punkte zeichnen kann, in denen ich dann nur noch das a einsetzen kann und es mir immer die richtige Parabel zeigt.
bei f(x)=1*x^2 sind die Punkte von links nach rechts (bei mir ist der Ursprung des Koordinatensystems bei 200|200):
0, -200
100, 100
200, 200
300, 100
400, -200

bei f(x)=2*x^2:
0, -600
100, 0
200, 200
300, 0
400, -600

Gibt es sowas überhaupt?:-)


MFG

Dieser Beitrag wurde von Dyon bearbeitet: 16. Juli 2008 - 15:14

0

#14 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 16. Juli 2008 - 16:24

Graphics besitzt zwar viele Methoden, darunter auch Textbeschriftungen usw, jedoch gibt es für Kurven nur Spline Interpolationen.
Um eine wirklich korrekte Parabel hinzubekommen, ist es wahrscheinlich am einfachsten, du baust dir eine Schleife, die die Punkte berechnet und dann mit kurzen Linien (hilfreich: DrawPath) oder nur Punkten aufzeichnet.

Gruß,
Stefan
0

#15 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 17. Juli 2008 - 08:03

Eine Schleife die mir die Punkte berechnet und aufzeichnet ist wirklich eine gute Idee

Könnte mir (da ich grad nicht weiß wie ich bei der Schleife anfangen soll, und was für eine dafür geschickt ist) mal ein Beispiel für so eine Parabelfunktion oder wie auch immer in c# geben?

Ich müsste ja für jeden einzelnen Punkt in die Form f(x)=ax^2 jeden einzelnen Pixel für x eingeben also zum beispiel ein Pixel nach rechts dann noch mal einer nach rechts und so weiter, und das selbe auch nach links, dann müsste ich zu jedem x wert noch 200 hinzufügen (da mein ursprung in 200|200 ist) denn krieg ich ja werte für y raus was müsste ich da addieren oder subtrahieren?

und wie rechne ich das ganze mit einer Schleife?

Wäre euch dankbar:-)

Dieser Beitrag wurde von Dyon bearbeitet: 17. Juli 2008 - 08:51

0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0