![]() |
Label Font Color Farbwechsel
Hallo,
vielleicht kann mir ja einer von euch nen Denkanstoss oder ne passende Komponente geben mit der ich folgendes machen kann: Ich möchte gerne zwei Farbwerte angeben können z.B. Blau und Gelb. Dann noch eine Zeit wie lange der Farbwechsel dauern soll. Dann soll einfach die Farbe des Labels von der Farbe a zur Farbe b übergehen... also nicht einfach die Farbe zuweisen sondern das es schön weich übergeht. Viele Grüße Benny |
Re: Label Font Color Farbwechsel
Hi,
vielleicht gibt dir der Code von shima einen Denkanstoß: ![]() MfG Marc P.S.: Du musst wahrscheinlich den Code etwas anpassen. :wink: |
Re: Label Font Color Farbwechsel
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe genau dasselbe Problem:
Label.Font.Color soll einen dynamischen, Stetigen (Regenbogenfarbenen) Farbübergang erhalten. Leider bin ich ein ziemlicher Anfänger und so kann ich mit dem hier angebotenen Lösungsvorschlag nichts anfangen... :( . Bitte helft mir. Ach so: für alle, die sich nict vorstellen können, welch einen Farbübergang ich meine, ich habe ein Beispielvideo als Attachment hinzugefügt. |
Re: Label Font Color Farbwechsel
Hallo C.Rae, herzlich willkommen.
Die oben erwähnten Funktionen machen genau das, was du gerne hättest. Ich habe dir mal eben mithilfe dieser einen Code zusammengestrickt:
Delphi-Quellcode:
Falls es ein wenig flackern sollte, dann setze
procedure Delay(Milliseconds: Integer);
var Tick: DWord; Event: THandle; begin Event := CreateEvent(nil, False, False, nil); try Tick := GetTickCount + DWord(Milliseconds); while (Milliseconds > 0) and (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do begin Application.ProcessMessages; if Application.Terminated then Exit; Milliseconds := Tick - GetTickcount; end; finally CloseHandle(Event); end; end; // Farbe zwischen 2 vorgegebenen Farbwerten berechnen function ColorBetween(C1, C2 : TColor; blend:Real):TColor; var r, g, b : Byte; y1, y2 : Byte; begin C1 := ColorToRGB(C1); C2 := ColorToRGB(C2); y1 := GetRValue(C1); y2 := GetRValue(C2); r := Round(y1 + (y2-y1)*blend); y1 := GetGValue(C1); y2 := GetGValue(C2); g := Round(y1 + (y2-y1)*blend); y1 := GetBValue(C1); y2 := GetBValue(C2); b := Round(y1 + (y2-y1)*blend); Result := RGB(r, g, b); end; // Farbe zwischen beliebig vielen vorgegebenen Farbwerten berechnen function ColorsBetween(colors:array of TColor; blend:Real):TColor; var a : Integer; faktor : Real; begin if Length(colors) < 2 then raise Exception.Create('ColorsBetween() at least 2 Colors required'); if blend <= 0.0 then Result := colors[0] else if blend >= 1.0 then Result := colors[High(colors)] else begin a := Trunc(High(colors) * blend); faktor := 1.0 / High(colors); Result := ColorBetween(colors[a], colors[a+1], (blend-(a * faktor)) / faktor); end; end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin for i := 1 to 100 do begin Label1.Font.Color := ColorsBetween([clBlue, clYellow, clGreen], i / 100); Delay(40); end; end; ![]()
Delphi-Quellcode:
// OnCreate
Form1.DoubleBuffered := true; |
Re: Label Font Color Farbwechsel
Wow. Vielen Dank.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 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