AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Progressbar

Ein Thema von ABCDE · begonnen am 11. Apr 2006 · letzter Beitrag vom 11. Apr 2006
Thema geschlossen
ABCDE
(Gast)

n/a Beiträge
 
#1

Progressbar

  Alt 11. Apr 2006, 19:12
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:
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;
Danke im Voraus!

Gruß ABCDE
 
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#2

Re: Progressbar

  Alt 11. Apr 2006, 19:33
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:
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;
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.

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.
 
ABCDE
(Gast)

n/a Beiträge
 
#3

Re: Progressbar

  Alt 11. Apr 2006, 19:53
Aber noch was bei diesem Abschnitt muss man PB.StepIt oder wie
du gesagt hast PB.Progress := PB.Progress + 1;
 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.). Und Die Progressbar macht einen Balken zu viel!

Aber sonst ist ist es super!

Hast mir sehr geholfen!

Vielen Dank dahead!


Gruss ABCDE!
 
ABCDE
(Gast)

n/a Beiträge
 
#4

Re: Progressbar

  Alt 11. Apr 2006, 20:14
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!
Miniaturansicht angehängter Grafiken
unbenannt_120.jpg  
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Progressbar

  Alt 11. Apr 2006, 23:57
Zitat von ABCDE:
Jetzt noch was das passt zwar nicht mehr zu VCL/Winforms/Controls
Und deswegen mach bitte einen neuen Thread mit einem entsprechenden Topic auf.

Ich mache hier dann mal zu, da die ursprüngliche Frage wohl geklärt ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Thema geschlossen


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 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