Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Punkte auf Form wie bei Delphi zur Designzeit (https://www.delphipraxis.net/18622-punkte-auf-form-wie-bei-delphi-zur-designzeit.html)

Pseudemys Nelsoni 22. Mär 2004 12:58


Punkte auf Form wie bei Delphi zur Designzeit
 
hallo,

ihr wisst ja sicher wie eure Form in Delphi aussieht, also überall sind punkte (raster halt).
Ich habe versucht das in meinem Programm nachzumachen, es wird aber nur die erste Line gepunktet und nicht weiter, kann mir jemand sagen wieso?

Ich habe es so versucht:

Delphi-Quellcode:
procedure TForm4.FormPaint(Sender: TObject);
var
  x, y: integer;
begin
  x := 0;
  y := 0;
  Form4.Canvas.Pixels[x, y] := clBlack;
  while y < Form4.Height do
  begin
    while x < Form4.Width do
    begin
      Application.ProcessMessages;
      Form4.Canvas.Pixels[x, y] := clBlack;
      inc(x, 10);
    end;
    inc(y, 10);
  end;
end;
ihr könnt es ja mal in euer OnPaint ereignis in eurer form einfügen dann seht ihr was ich meine

Smokey 22. Mär 2004 13:03

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
Weil dein x nach der ersten Reihe >= Form.width ist und auch in der zweiten reihe so bleibt.

Pseudemys Nelsoni 22. Mär 2004 13:06

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
ahhh, stimmt, danke :D

Matze 22. Mär 2004 13:08

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
Delphi-Quellcode:
procedure TForm4.FormPaint(Sender: TObject);
var
  x, y: integer;
begin
  x := 0;
  y := 0;
  Form4.Canvas.Pixels[x, y] := clBlack;
  while y < Form4.Height do
  begin
    while x < Form4.Width do
    begin
      Application.ProcessMessages;
      Form4.Canvas.Pixels[x, y] := clBlack;
      inc(x, 10);
    end;
    x := 0; //<== hie das einfügen
    inc(y, 10);
  end;
end;
So müsste es gehen.

Edit: Oje, bin ich langsam... :roll:

Pseudemys Nelsoni 22. Mär 2004 13:45

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
hehe, danke nochmal :)

shmia 22. Mär 2004 13:52

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
Warum einfach, wenn's auch umständlich geht ?

Delphi-Quellcode:
// umständlich
  x := 0;
  y := 0;
  Form4.Canvas.Pixels[x, y] := clBlack;
  while y < Form4.Height do

// einfach mit 2 verschachtelten For-Schleifen
  for y := 0 to Form4.Height [b]step 10 [/b]do
     for x := 0 to Form4.Width [b]step 10 [/b]do
     begin
        Form4.Canvas.Pixels[x, y] := clBlack;
     end;

Pseudemys Nelsoni 22. Mär 2004 13:53

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
was ist denn step10?

Matze 22. Mär 2004 13:55

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
Bei mir geht das mit dem Step leider nicht. :?

So geht's aber auch ;)
Delphi-Quellcode:
for y := 0 to Height do
  for x := 0 to Width do
  begin
    Canvas.Pixels[x * 10, y * 10] := clBlack;
  end;

Pseudemys Nelsoni 22. Mär 2004 13:57

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
hallo matze :),

das geht bei mir zwar, aber veränder mal die grösse, irgendwie ist das langsamer als der andere code.


EDIT: mit nem Application.ProcessmEssages dazwischen wirds sogar noch langsamer

shmia 22. Mär 2004 14:01

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
Zitat:

Zitat von Pseudemys Nelsoni
was ist denn step10?

Ein Feature das es in Delphi nicht gibt. :wall:

Matze 22. Mär 2004 14:03

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
Ja, stimmt, beim ersten Code wird x immer um 10 erhöht.
Beim letzteren Code wird x immer um eins erhöht und dann der 10. berechnet. :wall:

Pseudemys Nelsoni 22. Mär 2004 14:06

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
aber wieso ist der code langsamer? ich versteh das nicht ganz, ist doch nur ne kleine rechnung dadrin

Robert_G 22. Mär 2004 14:14

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
Mensch mädels, ist das denn soooo schwer? :wink:
Delphi-Quellcode:
Var
  X, Y                                 : Integer;
Begin
  For Y := 0 To (Height div 10) Do
    For X := 0 To (Width div 10) Do
      Canvas.Pixels[X * 10, Y * 10] := clBlack;

Matze 22. Mär 2004 14:16

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
An Roberts Beispiel müsste das mit der Geschwindigkeit deutlich werden.

Es wird nur bis Height div 10 hochgezählt und nicht komplett bis Height. ;)

himitsu 22. Mär 2004 14:18

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
Ist do klar, weil da 99-mal soviele Punkte wie nötig gezeichnet werden.
wenn den Fenster eine Größe von z.B. 100 x 200 Pixeln hat, denn wird der letzte Punkt (unten rechts) an der Position 1000 x 2000 (100*10 x 200x10) gezeichnet :zwinker:
Delphi-Quellcode:
for y := 0 to Height do
  for x := 0 to Width do
  begin
    Canvas.Pixels[x * 10, y * 10] := clBlack;
  end;
so wäre es besser:
Code:
for y := 0 to Height [color=red]div 10[/color] do
  for x := 0 to Width [color=red]div 10[/color] do
  begin
    Canvas.Pixels[x * 10, y * 10] := clBlack;
  end;

Robert_G 22. Mär 2004 14:19

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
shotgun! :mrgreen:

Pseudemys Nelsoni 22. Mär 2004 14:19

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
stimmt, der code von robert is einwandfrei, danke :)

ich muss ersmal genau checken wie der code funzt, solche rechnungen machen mich fertig.

@matthias: glückwunsch zum 2000 Beitrag :P

Robert_G 22. Mär 2004 14:20

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
Rechnungen???
Das war 1 Minute tippen... :mrgreen:

Pseudemys Nelsoni 22. Mär 2004 14:21

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
@himitsu: danke für die erklärung :)
@robert: das mit dem tippen glaub ich dir :mrgreen: aber erstmal auf die idee kommen das ganze so zu machen, auf sowas komme ich nie

Matze 22. Mär 2004 14:35

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
[OT] Cool, thx, das war mein 2000. Beitrag, hab's gar nicht gemerkt. :hello: [/OT]

PS: Nicht Mathias, sondern Matthias. ;)

Pseudemys Nelsoni 22. Mär 2004 14:51

Re: Punkte auf Form wie bei Delphi zur Designzeit
 
Schreibe es normal auch mit doppelt t, sorry :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 Uhr.

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