![]() |
Animierter Farbverlauf
Hi,
ich möchte in meinem Programm als Hintergrund einen animierten Farbverlauf haben. Für den Farbverlauf verwende ich JvGradient welches die Eigenschaft StartColor hat wo man die einstellen kann. Ich möchte jetzt haben, dass das Ding in weichen Übergängen seine Farbe ändert. Natrülich könnte man es mit Random machen also eine Zufallsfarbe erstellen aber die erstellt ja auch Farben, die ich nicht schön finde wie grau. Also ich hätte gerne alle "schönen" Farben wie Blau, Gelb, Grün, Rot z.B. Diese sollen weich ineinander übergehen. Wie macht man das? Ich habe schon eine ganze Menge ausprobiert aber es kamen halt auch immer hässliche Farben raus. Hoffe Ihr wisste weiter. MFG Lars Wiltfang |
Re: Animierter Farbverlauf
Ich habe zwar nicht ganz verstanden, was Du eigentlich willst, aber eine schöne Gradient-Kompo findest Du hier:
![]() |
Re: Animierter Farbverlauf
Ich glaube der Lars will
![]() ![]() Sherlock |
Re: Animierter Farbverlauf
Ich glaube, außer Lars weiß niemand, was er haben will :mrgreen:
|
Re: Animierter Farbverlauf
Ich möchte einfach ineinander übergehende Farben haben.
|
Re: Animierter Farbverlauf
das wäre ein Farbverlauf. Aber was meinst du mit animiert?
|
Re: Animierter Farbverlauf
Unter einem animierten Farbverlauf stelle ich mir so etwas vor wie die Demo aus meinem obigen Link. Aber vielleicht meint Larsi etwas ganz anderes, nämlich einen Übergang von einer Füllfarbe in eine andere.
|
Re: Animierter Farbverlauf
Genau.
|
Re: Animierter Farbverlauf
Wenn Du Dir einmal den Code für einen Farbverlauf anschaust, wird dort von Startfarbe bis Endfarbe berechnet und zeilenweise (oder spaltenweise) gezeichnet. Das musst Du doch nur übernehmen und die komplette Zeichenfläche mit der errechneten aktuellen Farbe füllen (mit einer kleinen zeitlichen Verzögerung, damit man es auch sieht).
|
Re: Animierter Farbverlauf
Zitat:
Zitat:
Also willst Du einfach nur einen normalen Farbverlauf. Das können 90% aller modernen Komponenten (behaupte ich einfach mal). Das Finden "schöner" Farben, bzw. Farbkombinationen ist eine hohe Kunst :) Aber dafür gibt es Helfer: ![]() Sherlock |
Re: Animierter Farbverlauf
Liste der Anhänge anzeigen (Anzahl: 1)
Nochmal, ich denke er möchte so etwas wie im Anhang (schnell dahergetippt und keineswegs ausgereift).
|
Re: Animierter Farbverlauf
ich dachte eher er will ein Bild von einem Verlauf (von Farbe1 zu Farbe2) und dann soll sich langsam Farbe1 und/oder Farbe2 zu einer anderen Farbe hinn ändern
|
Re: Animierter Farbverlauf
@Deddyh: Kann ich den Code davon haben?
|
Re: Animierter Farbverlauf
Den kompletten nicht, da er einfach nur Sch...e ist, aber die Basis (die originale unmodifizierte Gradient-Prozedur) kann ich gerne mal posten:
Delphi-Quellcode:
type TDirection = (dVert,dHorz);
procedure DrawGradientFillRect(Canvas: TCanvas; Rect: TRect; StartColor, EndColor: TColor; Direction: TDirection); var Steps: Integer; StartR, StartG, StartB, EndR, EndG, EndB: Byte; CrrR, CrrG, CrrB: Double; IncR, IncG, incB: Double; i: integer; begin case Direction of dVert: Steps := Rect.Bottom - Rect.Top; dHorz: Steps := Rect.Right - Rect.Left; else Steps := 0; end; if Steps = 0 then Exit; StartR := GetRValue(StartColor); EndR := GetRValue(EndColor); StartG := GetGValue(StartColor); EndG := GetGValue(EndColor); StartB := GetBValue(StartColor); EndB := GetBValue(EndColor); IncR := (EndR - StartR) / steps; IncG := (EndG - StartG) / steps; IncB := (EndB - StartB) / steps; CrrR := StartR; CrrG := StartG; CrrB := StartB; for i := 0 to Steps do begin Canvas.Pen.Color := RGB(Round(CrrR), Round(CrrG), Round(CrrB)); case Direction of dVert: begin MoveToEx(Canvas.Handle,Rect.Left,i,nil); LineTo(Canvas.Handle,Rect.Right + Rect.Left, i); end; dHorz: begin MoveToEx(Canvas.Handle,i,Rect.Top,nil); LineTo(Canvas.Handle,i,Rect.Top + Rect.Bottom); end; end; CrrR := CrrR + IncR; CrrG := CrrG + IncG; CrrB := CrrB + IncB; end; end; |
Re: Animierter Farbverlauf
Die hilft mir aber nicht weiter. Ich benutze die TJvGradient Komponente von den Jedis, die funkioniert auch super. Mir geht es um den Teil des Codes der die Farbe verändert.
|
Re: Animierter Farbverlauf
Guck Dir den geposteten Code nochmal in Ruhe an, da werden auch Farben verändert.
|
Re: Animierter Farbverlauf
Ich brauch aber eine Funktion, die sich um das ändern der Farbe wie in deinem Beispiel ändert. Deine Funktion erstellt ja einen Farbverlauf. Den brauch ich ja nicht, das macht die JvGradient Komponente. Da muss ich der StartColor nur einen TColor Wert übergeben mehr nicht.
|
Re: Animierter Farbverlauf
Herrgott, Larsi, ich habe doch
![]() |
Re: Animierter Farbverlauf
Dann geht nur mit einem vordefinierten Array wie willst sonst
bestimmen welche Farben angezeigt werden sollen und welche nicht ? Du erstellst ein Array mit Farben und übergibst immer Stepweise die nächste Farbe aus diesen. Anfangsfarbe wäre dann die welche du deiner komponente übergibst. Beispiel von SoundMachine
Delphi-Quellcode:
gruss Emil
procedure ColorInit;
begin gColor[1] := RGB(32,32,32); gColor[2] := RGB(0,44,233); gColor[3] := RGB(0,67,210); gColor[4] := RGB(0,89,187); gColor[5] := RGB(0,112,164); gColor[6] := RGB(0,135,142); gColor[7] := RGB(0,159,117); gColor[8] := RGB(0,183,88); gColor[9] := RGB(0,207,58); gColor[10] := RGB(0,231,29); gColor[11] := RGB(26,234,26); gColor[12] := RGB(52,237,23); gColor[13] := RGB(79,240,20); gColor[14] := RGB(105,243,17); gColor[15] := RGB(126,245,14); gColor[16] := RGB(147,248,11); gColor[17] := RGB(168,250,8); gColor[18] := RGB(189,253,5); gColor[19] := RGB(210,255,2); gColor[20] := RGB(233,255,0); gColor[21] := RGB(255,255,0); gColor[22] := RGB(255,251,0); gColor[23] := RGB(255,235,0); gColor[24] := RGB(255,215,0); gColor[25] := RGB(255,196,0); gColor[26] := RGB(255,176,0); gColor[27] := RGB(255,156,0); gColor[28] := RGB(253,137,0); gColor[29] := RGB(255,117,0); gColor[30] := RGB(255,97,0); gColor[31] := RGB(255,78,0); gColor[32] := RGB(255,58,0); gColor[33] := RGB(255,0,0); end; |
Re: Animierter Farbverlauf
Wie muss ich die Prozedur aufrufen?
|
Re: Animierter Farbverlauf
Delphi-Quellcode:
:stupid:
ColorInit;
|
Re: Animierter Farbverlauf
Delphi-Quellcode:
// :cry: shit
ColorInit;
|
Re: Animierter Farbverlauf
Und wie übergebe ich den Farbwert? Wie könnte ich bspw. ein Panel so färben?
|
Re: Animierter Farbverlauf
Du verwendest gColor[x]
|
Re: Animierter Farbverlauf
Und wie deklariere ich die Werte? Global all die Variablen oder geht das auch anders wenn ja wie?
|
Re: Animierter Farbverlauf
Joo, sollte man wohl anders machen. Werte lokal in der Methode festlegen, daraus eine Funktion machen. Als Parameter den Index übergeben und als Ergebnis den Farbwert zurückliefern.
|
Re: Animierter Farbverlauf
Einfach mal die Masse zwischen den Ohren einschalten. Du hast nun 2 mögliche Lösungsansätze, die musst Du Dir nur einmal in Ruhe anschauen und nachvollziehen, der Rest geht dann fast von alleine.
|
Re: Animierter Farbverlauf
Hab was gefunden:
Delphi-Quellcode:
Wie weise ich das jetzt dem Panel zu?
var gcolor: array [0..33] of TColor;
|
Re: Animierter Farbverlauf
Wie weist man denn einem Panel eine Color zu? *Maaann Maaann*
|
Re: Animierter Farbverlauf
Habs hingekriegt :)
|
Re: Animierter Farbverlauf
:hello:
|
Re: Animierter Farbverlauf
Zitat:
aber sonst top das du es geschaft hast. :-D gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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