Autor Beitrag
alexschultze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 317



BeitragVerfasst: Sa 17.05.03 00:24 
hi,

ich würde es gern realisieren das ein schwarzes Label nach dem Entern der Maus langsam ins rote verfärbt, aber nicht sofort.

Hierfür bräuchte ich einen Farbverlauf, habe aber nix gefunden wie das geht und mit $0000FF hexadezimalzahlen kann man schlecht rechnen...

alex

_________________
Von allen Dingen die ich verloren habe trauere ich meinem Verstand am meisten nach.
Mike_C
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: Sa 17.05.03 14:26 
Hi Alex

Die Farben, die Delphi verwendet sind natürlich RGB Werte. Du kannst in Delphi eine Farbe auch "erzeugen", in dem du die RGB-Werte einzeln angibst; dazu gibt's die Funktion RGB;

ausblenden Quelltext
1:
2:
//Beispiel
Label1.Color := RGB(255,0,0); //<-- mach das Label rot


Wenn du einen Farbverlauf willst, würde ich das etwa so machen (reicht Pseudo-Code?!)

ausblenden Quelltext
1:
2:
3:
4:
For i := 0 to SchrittCount-1 do begin
  SetNextColorShade;
  Application.ProcessMessages; {wichtig, sonst siehst du nix}
end;


Am besten du schriebst dir wirklich eine Procedure SetNextColorShade, in der du einen bestimmten Wert (z.B. 16) zum "Rot-Wert" addiert und diesen dann mit RGB der Farbe vom Label zuweist.

Klar? oder noch Fragen?

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?
alexschultze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 317



BeitragVerfasst: Sa 17.05.03 14:52 
ich hab es mit RGB(rot,grün,blau) gemacht und einfach die aktuellen Were ausgelesen mit:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function GetBlue(Color: TColor):Byte;
begin
  Result:=(Integer(Color) shl 8) shr 24;
end;

function GetGreen(Color: TColor):Byte;
begin
  Result:=(Integer(Color) shl 16) shr 24;
end;

function GetRed(Color: TColor):Byte;
begin
  Result:=(Integer(Color) shl 24) shr 24;
end;

<Thread Closed ;)>

_________________
Von allen Dingen die ich verloren habe trauere ich meinem Verstand am meisten nach.
Mike_C
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: Sa 17.05.03 16:16 
ich weiß grade nicht, was du mir damit sagen willst. ich verstehe auch nicht wirklich, warum du die aktuellen werte auslesen willst.

du willst doch einen Farbverlauf von Schwar nach Rot oder? Dann sind doch die Anfangswerte:
R=0; B=0; G=0;
oder? Um den Farbverlauf zu machen, änderst du nur den R-Wert. zum Beispiel so:


ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
//Beispiel: Form färbt sich langsam rot, wenn man auf den Knopf drückt
procedure TForm1.Button1Click(Sender: TObject);
var i,j,x,r: integer;
begin
  x := 0;
  for i := 0 to (255 div 16)-1 do begin
     inc (x, 16);
     r := -255 + x;
     Form1.Color := RGB(255+r,0,0);
     for j := 0 to 100000 do Application.ProcessMessages; //<--- Delay, damit man was sieht!!! Je höher man die obere Grenze setzt, desto langsamer ist das fading
  end;
end;

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?
alexschultze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 317



BeitragVerfasst: Sa 17.05.03 16:57 
wäre auch möglich. ich habe das aber in einem Timer oben drinne dadurch erreiche ich langsames Fading bei dem ich problemlos arbeiten kann.
:)

_________________
Von allen Dingen die ich verloren habe trauere ich meinem Verstand am meisten nach.
Mike_C
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: Sa 17.05.03 17:06 
bei einem Teimer kannes aber leicht passieren, dass du die "Übergänge" nur sprunghaft bekommst (durch das Intervall). kannst du mal posten, wie du das gemacht hast? mich wprd's interessieren

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?