Einzelnen Beitrag anzeigen

el_presidente

Registriert seit: 7. Mär 2007
2 Beiträge
 
#1

Pascalsches Dreieck darstellen

  Alt 7. Mär 2007, 20:05
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:
Delphi-Quellcode:
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-1] then
      Canvas.Pixels[Zahl,Zeile]:=clgreen
     else if Canvas.Pixels[Zahl-1,Zeile-1]<>Canvas.Pixels[Zahl,Zeile-1] then
      Canvas.Pixels[Zahl,Zeile]:=clred;
    end;
   end;
end;
Schon mal vielen Dank =))
  Mit Zitat antworten Zitat