Autor Beitrag
el_presidente
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Do 08.03.07 19:12 
Guten Abend zusammen =)
Ich bin mir nicht sicher ob dashier das richtige Forum ist wenn nicht tut es mir leid

Also ich habe folgendes Problem: Aufgabe ist es ein bei Mausklick ein Pascalsches Dreieck Graphisch darstellen zu lassen (also nicht die Zahlen, sondern so (soll nich ganz genau so aussehen nur damit ihr wisst wie ich es ungefähr meine ). Dabei soll immer geprüft werden ob die beiden Pixel die über dem zu prüfenden sind gleich sind. Wenn ja dann soll der geprüfte Pixel grün gefärbt werden, wenn nein dann rot. Der erste und letzte Pixel in jeder Zeile soll immer rot gezeichnet werden. Naja das klappt soweit auch ganz gut. Nur habe ich das Problem das wenn die X-Koordinate der Maus größer als die Y-Koordinate ist nichts gezeichnet wird (was auch logisch ist wenn man sich die Schleife anguckt) und ich nicht genau weiß wie ich das umgehen soll. Das zweite Problem ist, dass er das zwar alles richtig zeichnet, aber irgendwie zeichnet er den ganzen Kram zwei mal und füllt zwischen beiden Exemplaren alles grün aus. Etwas schwer zu erklären, aber ich habe HIER mal das Projekt hochgeladen, dann könnt ihr euch das vllt mal bitte angucken.

Hier mal der Delphicode für mein Vorhaben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer); 
var 
   Zeile,Zahl: Integer; 
begin 
  for Zeile:=Y to Y+100 do 
   begin 
    for Zahl:=X to Zeile do 
    begin 
     if Zahl=X then Canvas.Pixels[Zahl,Zeile]:=clred 
     else if Zahl=Zeile then Canvas.Pixels[Zahl,Zeile]:=clred 
     else if Canvas.Pixels[Zahl-1,Zeile-1]=Canvas.Pixels[Zahl,Zeile-1then 
      Canvas.Pixels[Zahl,Zeile]:=clgreen 
     else if Canvas.Pixels[Zahl-1,Zeile-1]<>Canvas.Pixels[Zahl,Zeile-1then 
      Canvas.Pixels[Zahl,Zeile]:=clred; 
    end
   end
end;