Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Diagonale Linien zeichnen (https://www.delphipraxis.net/109230-diagonale-linien-zeichnen.html)

Christian18 26. Feb 2008 17:02


Diagonale Linien zeichnen
 
Hallo,

ich bin gerade dabei mir meinen Hintergrund von der Form ein bisschen zu verschönern. Dazu wollte ich einfach nur Diagonale Linien zeichnen. Die Farbe soll immer abwechseln. Dazu hatte ich mir übergegt, dass es ein bisschen schneller geht die Hintergrundfarbe zu setzen und dann nur jede zweite linie zu zeichnen. aber leider bekomme ich das nicht hin. Könnt ihr mir ein paar Tips geben?

So geht es leider nicht.

Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
  var x : Integer;
begin
  Form1.Color:=clWhite;
  for x:=0 to Form1.ClientWidth div 2 do
    begin
      Form1.Canvas.MoveTo(x * 2, 0);
      Form1.Canvas.LineTo(Form1.ClientWidth, Form1.ClientHeight - x * 2);
    end;
end;
Edit:

Mhhh... ich glaube ich habe den Fehler gefunden. Es wird ja nur der Winkel von 45 Grad eingehalten, wenn das Fenster ein Quadrat ist.

MFG Christian18

Crazy Ivan 26. Feb 2008 17:26

Re: Diagonale Linien zeichnen
 
Delphi-Quellcode:
procedure TForm4.FormCreate(Sender: TObject);
begin
  form1.color := // Deine Farbe 1
  form1.canvas.pen.color := // Deine Frabe 2
end;

// *********************************************

procedure TForm4.Button1Click(Sender: TObject);
var i,j:word;
begin
  with form4.canvas do
    begin
      i := 1;
      j := 1;
      repeat
        moveto(0,j*2);
        lineto(i*2,0);
        inc(i,2);
        inc(j,2);
      until
        (i > form4.Height) and (j > form4.Width);
    end;
end;

ist aber nur für ca. die hälfte des formulars, den rest musst du schon selber schreiben ;)

[edit] sollte jetzt ganz funktionieren, mein fehler sry ;)

Muetze1 27. Feb 2008 08:01

Re: Diagonale Linien zeichnen
 
@Christian & @Crazy Ivan: Werft bitte bei euren beiden Codes alle "Form1." raus. Diese sind schlechter Stil und beschert euch später Fehlverhalten wo man es nicht vermutet. Also gar nicht erst angewöhnen.

@Crazy Ivan: Dein Code greift einmal auf Form1 und andermal auf Form4 zu - was denn nun? Aber mit dem entfernen von Form1. und Form4. (da es eh Blödsinn ist), würde der Code klappen. Ist gleich ein gutes Beispiel wo solche unnötigen Angaben zu falschen Ergebnissen führt...

Christian18 3. Mär 2008 16:42

Re: Diagonale Linien zeichnen
 
Hallo,

warum wird oben nicht bis null gezeichnet? Ich habe die Methode nochmal ein bisschen abgewandelt:

Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
  var i : Word; // Schleifenvariable
begin
  Form1.Color:=clBlack;
  Form1.Canvas.Pen.Color:=clRed;
  i:=0;
  while (i < Form1.ClientHeight) or (i < Form1.ClientWidth) do
    begin
      Form1.Canvas.MoveTo(0, i * 2);
      Form1.Canvas.LineTo(i * 2, 0);
      Inc(i, 2);
    end;
end;

Christian18 3. Mär 2008 16:44

Re: Diagonale Linien zeichnen
 
Hallo,

warum wird oben nicht bis null gezeichnet? Ich habe die Methode nochmal ein bisschen abgewandelt:

Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
  var i : Word; // Schleifenvariable
begin
  Form1.Color:=clBlack;
  Form1.Canvas.Pen.Color:=clRed;
  i:=0;
  while (i < Form1.ClientHeight) or (i < Form1.ClientWidth) do
    begin
      Form1.Canvas.MoveTo(0, i * 2);
      Form1.Canvas.LineTo(i * 2, 0);
      Inc(i, 2);
    end;
end;

Christian18 14. Mär 2008 15:07

Re: Diagonale Linien zeichnen
 
Hallo,

hat keiner ne Idee woran das liegen kann?

MFG Christian18


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz