Delphi Schiebregler (Sierpinski Dreieck)
Delphi Schieberegler
Hallo, kann mir jemand bei der Frage helfen, wie ich ein Schieberegler in Delphi programmieren kann? Anwendungsbeispiel Sierpinski Dreieck Dort würde ich gerne das Schieberegler für n:=zahl.value nutzen. Vielen Dank schon ein Mal für euere tatkräfitge Unterstützung ;) Best regards, Julezyyy |
Re: Delphi Schiebregler (Sierpinski Dreieck)
Hi,
ich versteh die Frage nicht ganz. Wo ist der Zusammenhang zwischen der Programmierung eines Schiebereglers und eines Sierpinski Dreiecks? Gruß oki |
Re: Delphi Schiebregler (Sierpinski Dreieck)
Würde es nicht einfach eine Trackbar tun?
|
Re: Delphi Schiebregler (Sierpinski Dreieck)
Der Zusammenhang besteht darin, dass ich durch den Schieberegler die Anzhal der Zufallszahlen erhöhe, bzw. ernidriege, und somit ein mehr bzw. weniger klar erkenntliches Dreieck erhalte.
Was genau ist eine Trackbar? Beschäftige mich seit 2 Wochen mit Delphi 7. Also bitte nicht alles so ernst nehmen ;) Best regards, Julezyyy |
Re: Delphi Schiebregler (Sierpinski Dreieck)
Schau mal auf dem Reiter Win32 der Komponentenpalette, dort gibt es eine Schieber-Komponente namens TrackBar.
|
Re: Delphi Schiebregler (Sierpinski Dreieck)
Ok, habe ich. Und mit welchem Code 'füttere' ich nun diese TrackBar, damit ich mein gewünschtes Ergebnis erhalte.
Hier mein bisheriger Code:
Delphi-Quellcode:
Best regards,
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) GroupBox1: TGroupBox; Bild: TImage; Abbrechen: TButton; Start: TButton; procedure AbbrechenClick(Sender: TObject); procedure StartClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.AbbrechenClick(Sender: TObject); begin close; end; procedure TForm1.StartClick(Sender: TObject); var a1,a2,a3,a4,a5,a6,b1,b2,b3,b4,b5,b6,xstart,ystart,n,zufall,x,y,anzahl : integer; begin with Bild do // GRUND-DREICECK ZEICHNEN begin randomize; a1:=220; b1:=500; a2:=720; b2:=500; a3:=920; b3:=250; a4:=720; b4:=20; a5:=220; b5:=20; a6:=20; b6:=250; //Dreickes-Koordinaten canvas.MoveTo(a1,b1); // "Stift" aufsetzen canvas.LineTo(a2,b2); //Zeichen zu ... canvas.LineTo(a3,b3); canvas.LineTo(a4,b5); canvas.LineTo(a5,b5); canvas.LineTo(a6,b6); canvas.LineTo(a1,b1); // Dreieck gezeichnet (done) // STARTPUNKT SETZEN xstart:=170; ystart:=400; canvas.Pixels[xstart,ystart]:=clblack; n:=0; // "Regentropfen" anzahl:=1000000; repeat inc(n); zufall:=random(6); if zufall=0 then begin x:=(xstart+a1) div 2; y:=(ystart+b1) div 2; canvas.Pixels[x,y]:=clred; xstart:=x ; ystart:= y ; end; if zufall=1 then begin x:=(xstart+a2) div 2; y:=(ystart+b2) div 2 ; canvas.Pixels[x,y]:=clgreen; xstart:=x ; ystart:= y ; end; if zufall=2 then begin x:=(xstart+a3) div 2 ; y:=(ystart+b3) div 2 ; canvas.Pixels[x,y]:=clblue; xstart:=x ; ystart:=y ; end; if zufall=3 then begin x:=(xstart+a4) div 2 ; y:=(ystart+b4) div 2 ; canvas.Pixels[x,y]:=clyellow; xstart:=x ; ystart:=y ; end; if zufall=4 then begin x:=(xstart+a5) div 2 ; y:=(ystart+b5) div 2 ; canvas.Pixels[x,y]:=clpurple; xstart:=x ; ystart:=y ; end; if zufall=5 then begin x:=(xstart+a6) div 2 ; y:=(ystart+b6) div 2 ; canvas.Pixels[x,y]:=clsilver; xstart:=x ; ystart:=y ; end; until n=anzahl; end; // end of with end; end. Julezyyy |
Re: Delphi Schiebregler (Sierpinski Dreieck)
Hi,
du wirst dir sicher eine Procedure zum berechnen und zeichnen der Dreiecke geschrieben haben. Dort gibst du als Parameter die Anzahl an. Immer wenn deine Trackbar verändert wird rufst du im Change-Ereignis der Trackbar deine Procedure neu auf und übergibst den aktuellen Wert der Trackbar als Parameter. Und fertig! Gruß oki |
Re: Delphi Schiebregler (Sierpinski Dreieck)
Und statt der ganzen If-Abfragen solltest Du case verwenden, das ist schneller und übersichtlicher.
|
Re: Delphi Schiebregler (Sierpinski Dreieck)
Zitat:
Zitat:
Best regards, Julezyyy |
Re: Delphi Schiebregler (Sierpinski Dreieck)
Z.B. so etwas:
Delphi-Quellcode:
unit Nix;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls; type TForm1 = class(TForm) TrackBar1: TTrackBar; procedure TrackBar1Change(Sender: TObject); private { Private-Deklarationen } //private Methode, die bei Änderung der Trackbar aufgerufen wird procedure DoOnChange(Value: integer); public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.DoOnChange(Value: integer); begin //übergebene Zahl auswerten und Farbe entsprechend setzen case Value of 0,1: Color := clRed; 2,3: Color := clGreen; 4,5: Color := clBlue; 6,7: Color := clYellow; 8,9: Color := clFuchsia; else Color := clBtnFace; end; end; procedure TForm1.TrackBar1Change(Sender: TObject); begin //private Methode aufrufen, dabei Position übergeben DoOnChange(TrackBar1.Position); end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 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