Ich habe Folgendes Problem:
Ich möchte aus 3 byte Variablen (a, b und c) eine Farbe erstellen, die sich dynamisch mit den Variablen mit ändert.
Wie kann ich die 3 Byte Zahlen in einen Rgb-Code umwandeln?
Ich danke für Hilfe.
PS: Ich bin ziemlicher Anfänger mit Lazarus (na gut, 1,5 Jahre) und bitte das zu berücksichtigen.
Farbe aus Byte Variablen
Re: Farbe aus Byte Variablen
z.B. so:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
r,g,b:byte;
begin
r:=$0;
g:=$0;
b:=$FF;
Canvas.Pen.Color:=b shl 16 + g shl 8 + r;
Canvas.Line(0, 0 ,ClientWidth, ClientHeight);
end;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Farbe aus Byte Variablen
In der Unit graphics, die praktisch in jedem Lazarus-Programm eingebunden wird, findest du die Funktion RgbToColor, oder du kannst auch die Funktion rgb aus LclIntf nehmen. In beiden gibst du die Rot, Grün, Blau-Bytes in dieser Reihenfolge an (bis max 255 natürlich), also RgbToColor(255, 0, 0) ist z.B. ein leuchtendes Rot.
Damit sparst du dir die Shift-Operationen aus Michl's Beitrag.
Damit sparst du dir die Shift-Operationen aus Michl's Beitrag.
Code: Alles auswählen
uses
LclIntf; // für "rgb()", oder "uses graphics" für RgbToColor
procedure TForm1.Button1Click(Sender: TObject);
var
r,g,b:byte;
begin
r:=$0;
g:=$0;
b:=$FF;
Canvas.Pen.Color := rgb(r, g, b); // oder RgbToColor(r, g, b);
Canvas.Line(0, 0 ,ClientWidth, ClientHeight);
end;
Re: Farbe aus Byte Variablen
Herzlichen Dank, das ist genau das was ich gesucht habe, hat perfekt funktioniert!
Sich endlich einmal im Forum anzumelden statt ständig nach passenden Antworten
stundenlang zu suchen hat sich auf jeden Fall schonmal rentiert.
Sich endlich einmal im Forum anzumelden statt ständig nach passenden Antworten
stundenlang zu suchen hat sich auf jeden Fall schonmal rentiert.