Einzelnen Beitrag anzeigen

He4db4nger

Registriert seit: 9. Jan 2006
Ort: Mainz
10 Beiträge
 
#1

Canvas/TBitmap + Geometrische Figuren

  Alt 9. Jan 2006, 17:29
hi,
also erstmal meine Situation:
Ich "durfte" 2 Jahre Java lernen unter absolut unfähigen Lehrkräften. Dies war 2x in der 11. Klassen. Mittlerweile habe ich jedoch die Schule gewechselt und auch dort wieder Informatik belegt - nur wird dort jetzt Delphi unterrichtet. Der Lehrer, wieder mit sehr wenig Ahnung fand es auch nach mehrmaligen Nachfragen nicht wichtig, den Neuankömmlingen (es waren insg. 4 von 11) mal wenigstens etwas über die Basics und so zu vermitteln. Jetzt werden einige sagen: wenn man das selbst aneignet, kann man es am besten. Viel anderes blieb uns auch nicht übrig, aber wirklich beeindruckend ist das nun wirklich nicht. Da wir auch noch andere Fächer haben, hatten wir nun grade mal die Zeit, so ein paar Grundlagen (ein Taschenrechner wars am Ende.. in 8 Wochen) anzueignen und das wars. Da dem Lehrer allerdings dadurch die Zeit weggerannt ist und er kaum da war, haben wir nun eine Hausarbeit bekommen, die jeder selbstständig lösen muss. (Jeder Schüler muss eine andere Version abgeben) Das Problem ist nur: Wir könnens nicht!

Die Aufgabe besteht darin, ein Programm zu kreieren, dass bei Angabe von Maßeinheiten, Radius, Seitenlängen etc. die entsprechende Figur ausgibt/zeichnet. Dies soll in Anlehnung an das gute alte Paint geschehen.

Jetzt sind wir natürlich ordentlich vor den Kopf gestoßen, da keiner so Recht weiß, wo er ansetzen soll. Erschwerend kommt hinzu, dass dies in OOP (objektorientierter Programmierweise) stattfinden soll, was bisher überhaupt noch keiner verstanden, selbst die, die in 11 auch schon Delphi hatten. Die große Hilfe des Lehrers war: Verwendet mehrere Units.

Toll! Das hat uns echt geholfen. Deprimierend wurde es für uns, als es hieß: Wenn die obigen Anforderungen erfüllt sind, gibt es die Note ausreichend - ganz klar zu wenig! Nichtsdestotrotz muss ich nun irgendwie dieses Programm hinzaubern. Ein fertiges aus dem Netz zu ziehen scheidet aus, da es nur viel zu komplizierte Programme gibt, die mit 10 Units aufwarten, bisschen zu hoch gegriffen.
Nach Codeschnipseln zu suchen ist für mich sehr schwer, da ich gar nicht genau weiß, was ich suchen muss. Das einzige was ich Delphi kann ist diese "Form" zu erstellen.

Als Zusatzpunkte kann man sich übrigens Punkte verdienen, umso mehr "Schnickschnack" man einbaut. Z.B. die Farbe wechseln der gezeichneten Formen, Hintergrundmusik, Ladebalken, Icons etc.

Ich bin für jeden Tipp dankbar! Seien es Codeschnipsel, Ansätze, Hilfestellungen etc. Vielen Dank schonmal im Vorraus!

Ich will damit nicht die Hausaufgaben erbetteln oder sonst irgendwas tun. Ich bin einfach nur in einer blöden Situation und erhoffe mir hier Hilfe. Da ich zu meinem "Schnipsel" mehrere Fragen habe, werde ich diesen Thread hier benutzen für die ganzen Probleme und nicht immer ein extra Thread auf machen.

Hier seht ihr einen Screenshot von dem Programm.
Hier könnt ihr das Programm incl. Source runterladen!


Problem 1 wäre:
Ich habe eine PaintBox eingebaut, dessen Inhalt ausgedruckt und exportiert werden soll. Aber ausser der SaveFileDialog und Printdialog Box komm ich nicht weiter. Habe was gelesen von TImage und TBitmap, komm damit aber irgendwie nicht zurecht.

Problem 2 wäre:
Auf dem Screenshot sieht man ja die Eingabefelder. Abhängig von der Auswahl der oberen Checkbox verschwinden bestimmte Edit-Felder. (Das klappt sogar) Jetzt wollte ich anhand dieser Eingaben in der PaintBox unten diese Sachen zeichnen lassen, doch dass tut er nicht. Wenn man jedoch oben von der CheckBox auswählt, zeichnet er mir die Linien/Karos. Derzeit steht das so im Quelltext:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var rad,hoehex,hoehey:integer;
begin
  with PaintBox1.Canvas do begin
  hoehex:=round(form1.Paintbox1.width/2);
  hoehey:=round(form1.Paintbox1.height/2);
  rad:=round(strtoint(Radius.Text));
  Form1.Paintbox1.Canvas.Pen.Color:=clgreen;
  Form1.Paintbox1.Canvas.Pen.Width:=10;
  Form1.Paintbox1.Canvas.Ellipse(hoehex-rad,hoehey-rad,hoehex+rad,hoehey+rad);
  end;
 Radius.Text:=(FloattoStr(StrtoFloat(Umfang.Text) / 2));
end;
Die Zeile Radius.Text.. funktioniert auch irgendwie nicht. Egal,was ich in diesem Editfeld eingebe, erscheint ein EConvertError (Bsp. 2, 2.0, 2,0). Mit InttoStr funzt es ebenfalls nicht.

So und jetzt bin ich erstmal ruhig, is schon viel zu viel Text ^^ Bin wirklich für alles dankbar
  Mit Zitat antworten Zitat