![]() |
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:
ihr könnt es ja mal in euer OnPaint ereignis in eurer form einfügen dann seht ihr was ich meine
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; |
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.
|
Re: Punkte auf Form wie bei Delphi zur Designzeit
ahhh, stimmt, danke :D
|
Re: Punkte auf Form wie bei Delphi zur Designzeit
Delphi-Quellcode:
So müsste es gehen.
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; Edit: Oje, bin ich langsam... :roll: |
Re: Punkte auf Form wie bei Delphi zur Designzeit
hehe, danke nochmal :)
|
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; |
Re: Punkte auf Form wie bei Delphi zur Designzeit
was ist denn step10?
|
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; |
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 |
Re: Punkte auf Form wie bei Delphi zur Designzeit
Zitat:
|
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: |
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
|
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; |
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. ;) |
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:
so wäre es besser:
for y := 0 to Height do
for x := 0 to Width do begin Canvas.Pixels[x * 10, y * 10] := clBlack; end;
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; |
Re: Punkte auf Form wie bei Delphi zur Designzeit
shotgun! :mrgreen:
|
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 |
Re: Punkte auf Form wie bei Delphi zur Designzeit
Rechnungen???
Das war 1 Minute tippen... :mrgreen: |
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 |
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. ;) |
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