![]() |
Problem mit 'Struktur-Prozedur'
Hallo!
Ich habe ein kleines Problem beim Benutzen der folgenden Prozedur. Sie soll theoretisch das Formular strukturieren. Das klappt auch ganz gut, nur wird es in horionzontaler Richtung bis zur Formularmitte ausgeführt, ab dann gibt es nur Streifen nach rechts. Am besten selbst mal ausprobieren ;-) Form1.Width in Form1.Width*2 zu Ändern liefert zwar das korrekte Resultat, aber das muss sich doch auch anders beheben lassen... :gruebel:
Delphi-Quellcode:
MfG Julian Jetter
procedure TForm1.Button1Click(Sender: TObject);
var color: array[0..2] of dword; row,col: integer; begin color[0] := $00CCCCCC; color[1] := $00999999; color[2] := $00666666; Randomize; Canvas.MoveTo(0,0); for col:=0 to Form1.Height do begin for row:=0 to Form1.Width do begin Canvas.Pen.Color := color[random(2)]; Canvas.LineTo(row,col); end; end; end; |
Re: Problem mit 'Struktur-Prozedur'
Moin Julian,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Erklären kann ich mir den Effekt im Moment nicht. Es muss übrigens Random(3) heissen, damit alle drei Tabelleneinträge benutzt werden. |
Re: Problem mit 'Struktur-Prozedur'
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var color: array[0..2] of dword; row,col: integer; begin color[0] := $00CCCCCC; color[1] := $00999999; color[2] := $00666666; Randomize; Canvas.MoveTo(0,0); col:=0; for col:=0 to Form1.Height do begin for row:=0 to Form1.Width do begin {Canvas.Pen.Color := color[random(2)]; Canvas.LineTo(row,col);} Canvas.Pixels[row,col] := color[random(3)]; end; end; end; |
Re: Problem mit 'Struktur-Prozedur'
Ein Hallöle von
![]() Es ist schon klar, dass das halbe Bild mit Linien überseht ist. Du zeichnest doch mit Linien (LineTo). Da beim Sprung zur nächsten Zeile ja von einem Ende des Bildes (Canvas rechts) zum anderen Ende (Canvas links) eine Linie über das Bild gezeichnet wird, welche ja eine Zeile runterspringt, also zur Hälfte auf der 1. Zeile und zur anderen Hälfte auf der 2. Zeile verläuft. ![]() (1. Zeile zeichnen / Sprung zur nächsten Zeile / 2. Zeile zeichnen) Demnach hat scp schon eine gute Lösung gegeben. Allerdings ist das noch zuviel:
Delphi-Quellcode:
Der Form halber sollte Color auch noch als TColor deklariert werden.
Canvas.MoveTo(0,0);
col:=0;
Delphi-Quellcode:
Und dann noch Color als Konstante:
Procedure TForm1.Button1Click(Sender: TObject);
Var Color: Array[0..2] of TColor; Row, Col: Integer; Begin Color[0] := $00CCCCCC; Color[1] := $00999999; Color[2] := $00666666; Randomize; For Col := 0 to Form1.Height - 1 do For Row := 0 to Form1.Width - 1 do Canvas.Pixels[Row, Col] := Color[Random(3)]; End;
Delphi-Quellcode:
http://www.delphipraxis.net/images/common/divider.jpg
Procedure TForm1.Button1Click(Sender: TObject);
Const Color: Array[0..2] of TColor = ($00CCCCCC, $00999999, $00666666); Var Row, Col: Integer; Begin Randomize; For Col := 0 to Form1.Height - 1 do For Row := 0 to Form1.Width - 1 do Canvas.Pixels[Row, Col] := Color[Random(3)]; End; ![]() ![]() ![]() |
Re: Problem mit 'Struktur-Prozedur'
Nun funktioniert's. Vielen Dank! :-)
TColor als Konstante geht aber nicht => Die Farben sollten später aus einer Datei kommen. MfG Julian Jetter BTW: Aufgrund der Bilder von Hitmitsu leuchtet mir der Fehler auch ein, der das eigentliche Problem war! :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 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