Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TGauge ForeColor (https://www.delphipraxis.net/93540-tgauge-forecolor.html)

Tommy1988 7. Jun 2007 10:48

Re: TGauge ForeColor
 
Ok, soweit bin ich:

Delphi-Quellcode:
  Gauge.Progress := Gauge.Progress + 1;

  DoubleBuffered := true;

case Gauge.Progress of
0..9 :   Gauge.ForeColor := $0000AA00;
10..19 : Gauge.ForeColor := $0000AA82;
20..29 : Gauge.ForeColor := $0000AAC3;

30..39 : Gauge.ForeColor := $0000AAED;
40..49 : Gauge.ForeColor := $0000AAFF;
50..59 : Gauge.ForeColor := $00009AFF;

60..69 : Gauge.ForeColor := $000081FF;
70..79 : Gauge.ForeColor := $00006BFF;
80..89 : Gauge.ForeColor := $000058FF;
90..100: Gauge.ForeColor := $000000FF;
end;
Nur der "Farbverlauf" sieht serh schlecht aus..
Er ist nicht flüssig. Kann man sowas unkomplizierter lösen?

DGL-luke 7. Jun 2007 10:54

Re: TGauge ForeColor
 
Hallo,

hier habe ich Beispielcode gepostet, um die einzelnen Schritte eines linearen Farbverlaufs zu berechnen.

Hoffe das hilft dir weiter.

Du musst dann nur bei jeder Änderung der Gauge die Funktion entsprechend aufrufen, dir die Farbe holen, und auf den ForeColor (Die Gauge hat sicher ein entsprechendes Event?) zuweisen.

Tommy1988 7. Jun 2007 10:57

Re: TGauge ForeColor
 
Ich habe mir das jezt mal angesehen, leider verstehe ich den Code nicht wirklich.

Matze 7. Jun 2007 11:02

Re: TGauge ForeColor
 
Guck dir doch einfach mal den Funktionskopf an, mit etwas Überlegung siehst du gleich, was diese dann macht, ohne den Code gesehen zu haben.

Delphi-Quellcode:
function LinearGradientStep(ColStart, ColEnd: TColor; Length, Step: Integer): TColor;
ColStart: Anfangsfarbe
ColEnd: Endfarbe
Length: Länge des farbverlaufs (Länge deiner Gauge)
Step: Schrittweite

Result: TColor


Du erhälst somit einen Farbwert im Abhängigkeit der angegebenen Parameter. Das Vorgehen hat dir Luke bereits genannt.

Tommy1988 7. Jun 2007 11:11

Re: TGauge ForeColor
 
muss ich
ColStart, ColEnd, Length und Step

deklarieren?

also so:
Delphi-Quellcode:
ColStart := clLime;
ColEnd := clRed;
Lenght := '100';
Step := '1';
?

Zitat:

Das Vorgehen hat dir Luke bereits genannt.
Wenn ich es verstanden hätte würd ich nicht mehr fragen

Matze 7. Jun 2007 11:12

Re: TGauge ForeColor
 
Nein lediglich beim Funktionsaufruf übergeben. Du solltest dir einmal die Delphi-Grundlagen ansehen.

Tommy1988 7. Jun 2007 11:16

Re: TGauge ForeColor
 
Die gucke ich mir immerwieder mal an. Aber wenn ich es auf anhieb nicht verstehe kann ich nix machen..

Eine kleine Hilfe, z.B. CodeSchnipsel, würde mir helfen.

Matze 7. Jun 2007 11:25

Re: TGauge ForeColor
 
Zitat:

Zitat von Tommy1988
Eine kleine Hilfe, z.B. CodeSchnipsel, würde mir helfen.

Hehe, das glaube ich dir gern. :zwinker: Doch solltest du selbst mal etwas überlegen und versuchen, das umzusetzen.

Ich würde es in der Art lösen (setzt voraus, dass Width > MaxValue ist):

Delphi-Quellcode:
var
  i: Integer;
begin
  for i := 1 to Gauge.MaxValue do
  begin
    Gauge.Progress := i;
    Gauge.ForeColor := LinearGradientStep(clGreen, clBlue, Gauge.Width, i * round(Gauge.Width / Gauge.MaxValue));
    Delay(40);
  end;
end;
Frag mich bitte nicht, wieso am Ende so ein Farbsprung stattfindet. :gruebel:

Tommy1988 7. Jun 2007 11:27

Re: TGauge ForeColor
 
Achso, die Funktion kann biszu 4 Werte aufnehmen?
Mh.. soetwas habe ich gestern noch in einem Buch durchgelesen, da ging es halt aber um Canvas

Matze 7. Jun 2007 11:29

Re: TGauge ForeColor
 
Natürlich kann sie das.

Schaue dir das hier mal an bzw. arbeite den Crashkurs durch, sonst bringt dir das alles nichts.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:24 Uhr.
Seite 2 von 3     12 3      

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