Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Animierter Farbverlauf (https://www.delphipraxis.net/126070-animierter-farbverlauf.html)

DeddyH 17. Dez 2008 14:30

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).

SirThornberry 17. Dez 2008 14:36

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

Larsi 17. Dez 2008 17:20

Re: Animierter Farbverlauf
 
@Deddyh: Kann ich den Code davon haben?

DeddyH 17. Dez 2008 17:25

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;

Larsi 17. Dez 2008 17:32

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.

DeddyH 17. Dez 2008 17:38

Re: Animierter Farbverlauf
 
Guck Dir den geposteten Code nochmal in Ruhe an, da werden auch Farben verändert.

Larsi 17. Dez 2008 17:45

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.

DeddyH 17. Dez 2008 17:51

Re: Animierter Farbverlauf
 
Herrgott, Larsi, ich habe doch hier bereits beschrieben, was zu tun ist, das hab ich in dem Beispiel nur umgesetzt. Wie willst Du etwas lernen, wenn man Dir alles vorkauen soll?

EWeiss 17. Dez 2008 17:56

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:
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;
gruss Emil

Larsi 18. Dez 2008 12:14

Re: Animierter Farbverlauf
 
Wie muss ich die Prozedur aufrufen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:12 Uhr.
Seite 2 von 4     12 34      

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