![]() |
Progressbar
Hi
Ich habe da ein Problem ich habe eine Funktion gemacht, die ein Bild vergrößert! Ich möchte nun eine Progressbar anzeigen lassen wie weit er ist,hab schon ein bisschen probiert aber hat nicht geklappt! Hier der Code:
Delphi-Quellcode:
Danke im Voraus!
procedure TForm1.Button1Click(Sender: TObject);
var c,d:integer; PixelColor:TColor; begin OpenDialog1.Execute; Image1.Picture.LoadFromFile(OpenDialog1.FileName); for c:=0 to Image1.Picture.Height do begin for d:=0 to Image1.Picture.Width do begin PixelColor:=Image1.Canvas.Pixels[c,d]; Image2.Canvas.Pen.Color:=clblack; Image2.Canvas.Brush.Color:=PixelColor; Image2.Canvas.Rectangle(c*10,d*10,c*c*10,d*d*10); end; end; end; Gruß ABCDE |
Re: Progressbar
Was hast du mit der Progressbar bei obigem Code probiert? Ich sehe davon nix?
Naja, also ich würde evtl. eine der Zähler (c, d) verwenden. Beispiel:
Delphi-Quellcode:
Du kannst natürlich auch den Max Wert noch durch 100 o. ä. teilen und via "if i mod 100 = 0 then" den Progress erhöhen. Dann wird das Teil nicht so oft neu gezeichnet.
procedure TForm1.Button1Click(Sender: TObject);
var c, d: Integer; PixelColor: TColor; begin if not OpenDialog.Execute then // Edit: Egal ob der User den Abbrechen-Knopf drückt oder nicht, du hast das Bild IMMER geöffnet. Exit; if not FileExists(OpenDialog1.Filename) then // Edit: Falls das Bild mtwl. nicht mehr da ist (relativ unwahrscheinlich, aber schaden tut es auch nicht sonderlich). Exit; Image1.Picture.LoadFromFile(OpenDialog1.FileName); PB.Max := Image1.Picture.Height * Image1.Picture.Width; PB.Step := 1; // oder war es StepBy? for c := 0 to Image1.Picture.Height do begin for d:=0 to Image1.Picture.Width do begin PixelColor := Image1.Canvas.Pixels[c, d]; Image2.Canvas.Pen.Color := clblack; Image2.Canvas.Brush.Color := PixelColor; Image2.Canvas.Rectangle(c * 10, d * 10, c * c * 10, d * d * 10); PB.Step; // oder einfacher: PB.Progress := PB.Progress + 1; bzw. Inc(PB.Progress); Edit: Dann kannst du natürlich das Step/StepBy weglassen (s. o.). end; end; end; Es steht dir sozusagen mehr oder weniger frei, wann du den Fortschritt erhöhst (könnte halt sein, dass das Bild nur 10 Pixel hoch und 4000 Pixel breit ist, dann wäre es etwas blöd den Fortschritt nur bei der C Schleife zu erhöhen). Edit: Step/StepBy Hinweis + Code etwas formatiert. |
Re: Progressbar
Aber noch was bei diesem Abschnitt muss man PB.StepIt oder wie
du gesagt hast PB.Progress := PB.Progress + 1;
Delphi-Quellcode:
Und Die Progressbar macht einen Balken zu viel!
PB.Step; // oder einfacher: PB.Progress := PB.Progress + 1; bzw. Inc(PB.Progress); Edit: Dann kannst du natürlich das Step/StepBy weglassen (s. o.).
Aber sonst ist ist es super! Hast mir sehr geholfen! Vielen Dank dahead! :thumb: :thumb: :thumb: :thumb: Gruss ABCDE! |
Re: Progressbar
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt noch was das passt zwar nicht mehr zu VCL/Winforms/Controls
aber zu meinem Projekt deswegen tue ich diese Frage auch hierhin! Mir ist die Methode die ich benutze zu langsam und außerdem kommt dieser Fehler! Wisst ihr weiter? Gruss ABCDE! |
Re: Progressbar
Zitat:
Ich mache hier dann mal zu, da die ursprüngliche Frage wohl geklärt ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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