Parabel Zeichnen klappt ned ganz!
-
hi
hallo erstmal bin neu hier!
hoffe bin hier richtig
ich muss für die schule ein kleines projekt machen.
ich wollte eine parabel zeichnen, was auch schon klappt.
nur kann ich x und y irgendwie nicht ändern, sprich er zeichnet immer die gleiche.
kann mir da einer helfen?
danke schonmal
#include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int y_ks; int x,y; int x_merker, y_merker; y_ks=Edit2->Text.ToInt(); x=Edit1->Text.ToInt(); PaintBox1->Canvas->Pen->Color=clGreen; x_merker=200; y_merker=-(x-200)*(x-200)+y_ks; for(x; x<=399; x=x+1) { PaintBox1->Canvas->MoveTo(x_merker, y_merker); y=-(x-200)*(x-200)+y_ks; PaintBox1->Canvas->LineTo(x,y); x_merker=x; y_merker=y; } }
-
Das gehört eigentlich ins C++Builder-Forum.
Außerdem zeichnet er nicht immer dasselbe... wenn du y_ks vergrößerst, wird auch die Parabel "größer". Und wenn du x auf 10000 setzt, wird wohl gar nichts mehr gezeichnet.
Du musst dein Problem also schon etwas genauer erläutern.
-
ja kann dann mal nen mod verschieben?
ja er zeichnet ja eben immer die gleiche parabel. egal was ich eingebe!
auch wenn ich es vorher immer wieder weiß überzeichne kommt immer das gleiche bei rum.
-
Wenn du in Edit2 20 eingibst, bekommst du eine Mini-Parabel, bei 200 wird es dann schon deutlicher sichtbar.
Wenn du in Edit1 200 eingibst, wird nur die eine Hälfte der Parabel gezeichnet.
Ist doch alles in Ordnung?
-
mhh bei mir funktioniert das irgendiwe nicht!
ich bekomme immer die gleiche parabel.
naja muss ich wohl noch ein wenig rumprobieren.
cu
-
Du solltest in der Schleife auch erst mal x initialisieren (oder soll in Edit1 wirklich der Startpunkt der Schleife angegeben sein? Dann solltest du auch den Endpunkt variabel gestalten.)
for(x=0; x<=399; x=x+1)
Das beste ist jedoch, du skalierst die x/y - Werte auf die Größe des Canvas (PaintBox).
Und du brauchst nicht immer wieder MoveTo innerhalb der Schleife aufrufen, LineTo zeichnet immer vom letzten Punkt weiter.
Wenn du dir mal ein komplettes Graphen-Programm anschauen willst, dann lad mir mal unter meiner Homepage www.bitel.net/dghm1164/downloads.html die Datei "Mathematik.zip" runter und starte das Programm "Graph".
Dort kannst du dann schon mal sehen, was du evtl. an deinem Programm noch verbessern könntest.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL (C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
ja vielen dank allen!
es liegt an meinem bekloppten borland c++! er aktualiesiert irgendiwe nicht, sprich ich kann sachen ändern aber es tut sich dann beim complimieren nichts.
ich muss erst auf projekt erzeugen gehn!
naja nochmal neu installen.
cu
-
hi
ich habe nochmal ne frage!
hab schon gesucht aber irgendwie nichts passendes gefunden.wie kann ich den inhalt der paintbox->canvas speichern?
habs schon mit dem picturesavedialoge probiert aber das klappt ned.muss ich das noch umwandeln oder so?
will es später natürlich auch wieder laden können.danke schonmal
cu
-
Hallo
Du must den Inhalt von Canvas mittels Canvas::CopyRect in ein neues internes TBitmap kopieren und desen Methode SaveToFile benutzen.
Der Dialog ist nur dafür da um den den Dateinamen der zukünftigen BMP-Datei festzulegen.bis bald
akari