Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Gitternetz auf Canvas der Form wird nicht ganz gezeichnet (https://www.delphipraxis.net/9914-gitternetz-auf-canvas-der-form-wird-nicht-ganz-gezeichnet.html)

flomei 7. Okt 2003 18:09


Gitternetz auf Canvas der Form wird nicht ganz gezeichnet
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo! :hi:
So zum üben wollte ich mir mal die Form mit nem Gitternetz vollmalen lassen. Klappt auch fast aber irgendwann hört er einfach auf.
Hier mal der Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var
    x,y: Integer;
      begin
        x:=0;
        y:=0;
          while x < Form1.ClientWidth
          do begin
            Form1.Canvas.MoveTo(x,0);
            Form1.Canvas.LineTo(x,Form1.ClientWidth);
            Application.ProcessMessages;
            x := x+10;
          end;
          while y < Form1.ClientHeight
          do begin
            Form1.Canvas.MoveTo(0,y);
            Form1.Canvas.LineTo(Form1.ClientHeight,y);
            Application.ProcessMessages;
            y := y+10;
          end;
      end;
Habe schon ClientWidth und ClientHeight getauscht und auch durch Form1.Height und Width ersetzt aber immer blieb der gleiche Effekt.

Im Anhang nen Screenshot...

Danke im Vorraus!

MfG Florian :hi:

Dagon 7. Okt 2003 18:21

Re: Gitternetz auf Canvas der Form wird nicht ganz gezeichne
 
Ich habe den Fehler gefunden! 8)

In der zweiten while-Scheife musst du die Zeile
Delphi-Quellcode:
Form1.Canvas.LineTo(Form1.ClientHeight,y);
durch
Delphi-Quellcode:
Canvas.LineTo(ClientWidth, y);
ersetzen.

Gollum 7. Okt 2003 18:22

Re: Gitternetz auf Canvas der Form wird nicht ganz gezeichne
 
Hallo,

das Problem liegt in Deinen Schleifen:

Für die x-Schleife musst Du bei MoveTo, ClientHeight und für die y-Schleife ClientWidth nehmen.

Besser aber wäre, da Du eh auf einen Canvas zeichnest, die Eigenschaft ClipRect zu nehmen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var x,y: Integer;
begin
  x:=0;
  y:=0;
  with Form1.Canvas do
  begin
    while (x<ClipRect.Right) do
    begin
      MoveTo(x,0);
      LineTo(x, ClipRect.Bottom);
      Inc(x, 10);
    end; // while
    while (y<ClipRect.Bottom) do
    begin
      MoveTo(0,y);
      LineTo(ClipRect.Right, y);
      Inc(y, 10);
    end; // while
  end; // with
end;

flomei 7. Okt 2003 18:26

Re: Gitternetz auf Canvas der Form wird nicht ganz gezeichne
 
Super! :thuimb: Funktioniert!!! :D :thuimb:

DANKE!

MfG Florian :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 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