Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ColorBox - Color zu Hexcolor machen (https://www.delphipraxis.net/25774-colorbox-color-zu-hexcolor-machen.html)

Master_BB 12. Jul 2004 11:40


ColorBox - Color zu Hexcolor machen
 
Heya,
ich wollte mal gerne wissen wie man eine in der ColorBox ausgewählte Frabe
zu deren Hexwert umrechnet bzw umformt.

Greetz
Master_BB

Stevie 12. Jul 2004 11:48

Re: ColorBox - Color zu Hexcolor machen
 
Delphi-Quellcode:
IntToHex(ColorBox1.Selected, 8);

Master_BB 12. Jul 2004 12:30

Re: ColorBox - Color zu Hexcolor machen
 
ah ja thx funktioniert,
jedoch hab ich das problem das manche farben falsch sind.

ich habe die digits auf 6 runter gestellt

Delphi-Quellcode:
IntToHex(ColorBar1.Selected,6);
weil im HTML Code die Farben nur 6 Stellen hatten.
und bei manchen Farben ist auf der HTML Seite die Farbe anders als die in der ColorBar ausgewählte.
Wie kommt das?

Sharky 12. Jul 2004 12:32

Re: ColorBox - Color zu Hexcolor machen
 
Hai Master_BB,

wird bei HTML nicht eine andere Reihenfolge verwendet? BTW: Schaue Dir auch einmal ColorToRGB an.

alcaeus 12. Jul 2004 12:44

Re: ColorBox - Color zu Hexcolor machen
 
Sharky hat Recht. TColor speichert Daten nicht im RGB-Format, sondern komplett anders. Du musst wie folgt vorgehen:
Delphi-Quellcode:
var
  r, g, b: Byte;
  aColor: TColor;
  RGB: String[6];
begin
  ColorToRGB(aColor, r, g, b);
  RGB := IntToHex(r, 2)+IntToHex(g, 2)+IntToHex(b, 2);
end;
Greetz
alcaeus

scp 12. Jul 2004 12:48

Re: ColorBox - Color zu Hexcolor machen
 
Zitat:

Zitat von alcaeus
Sharky hat Recht. TColor speichert Daten nicht im RGB-Format, sondern komplett anders.

"Komplett anders" würde ich nicht sagen, einfach nur verkehrt herum: BGR statt RGB.

Stevie 12. Jul 2004 12:58

Re: ColorBox - Color zu Hexcolor machen
 
Zitat:

Zitat von alcaeus
Sharky hat Recht. TColor speichert Daten nicht im RGB-Format, sondern komplett anders. Du musst wie folgt vorgehen:
Delphi-Quellcode:
var
  r, g, b: Byte;
  aColor: TColor;
  RGB: String[6];
begin
  ColorToRGB(aColor, r, g, b);
  RGB := IntToHex(r, 2)+IntToHex(g, 2)+IntToHex(b, 2);
end;
Greetz
alcaeus

:gruebel: Klappt das nicht gleich so?
Delphi-Quellcode:
IntToHex(ColorToRGB(ColorBox1.Selected), 6));

alcaeus 12. Jul 2004 13:03

Re: ColorBox - Color zu Hexcolor machen
 
:oops: :wall: :oops:

Ich muss eine falsche Deklaration im Kopf gehabt haben.
Der Weg von Stevie ist natürlich der richtige. Sorry...

Greetz
alcaeus

Sharky 12. Jul 2004 13:12

Re: ColorBox - Color zu Hexcolor machen
 
Zitat:

Zitat von Stevie
...:gruebel: Klappt das nicht gleich so?
Delphi-Quellcode:
IntToHex(ColorToRGB(ColorBox1.Selected), 6));

Dürfte eigentlich nicht gehen.
Zitat:

Zitat von Die F1-Taste
Mit ColorToRGB können Sie den für Windows-API-Aufrufe benötigten RGB-Wert einer Farbe ermitteln. Die in den höchstwertigen Bits gespeicherte Information, welche Palette für nicht immer verfügbare Farben verwendet werden soll, wird von ColorToRGB entfernt.

Damit sind die Anteile noch immer im "BGR-Format"

scp 12. Jul 2004 13:24

Re: ColorBox - Color zu Hexcolor machen
 
Delphi-Quellcode:
var
  r, g, b: Byte;
  aColor: TColor;
  RGB: String[6];
begin
  R := GetRValue( AColor );
  G := GetGValue( AColor );
  B := GetBValue( AColor );
  RGB := IntToHex(r, 2)+IntToHex(g, 2)+IntToHex(b, 2);
end;

Stevie 12. Jul 2004 13:37

Re: ColorBox - Color zu Hexcolor machen
 
Zitat:

Zitat von Sharky
Damit sind die Anteile noch immer im "BGR-Format"

:oops: Stimmt, das liegt ja an der Lesereihenfolge... 0x0000FF = 255 => Rot, aber in der Reihenfolge RGB ausgedrückt: FF0000, aber dann als Hexwert eigentlich nicht mehr richtig! :warn:

Master_BB 12. Jul 2004 13:43

Re: ColorBox - Color zu Hexcolor machen
 
hm sorry bisher kappiere ich noch nicht was RGB usw ist.
und eure schnipsel laufe bisher noch nicht so ganz

Delphi-Quellcode:
  aColor := ColorBox4.Color;
  R := GetRValue( AColor );
  G := GetGValue( AColor );
  B := GetBValue( AColor );
  RGB := IntToHex(r, 2)+IntToHex(g, 2)+IntToHex(b, 2);
so hab ich das bisher und RGB gebe ich als Farbe an
font color="#'+rgb+'" usw

Sharky 12. Jul 2004 13:50

Re: ColorBox - Color zu Hexcolor machen
 
Zitat:

Zitat von Master_BB
hm sorry bisher kappiere ich noch nicht was RGB usw ist.

Eine "HTML-Farbe" setzt sich zusammen aus:
Rot
Grün
Blau

Wenn Du nun eine Farbe im RGB-Format angiebst ist das z.B. (Hexschreibweis) $FF00FF. Dies entspricht einer Mischung aus 100% Rot und 100% Blau = clFuchsia.

Delphi bzw. Windows setzen die Farbanteile aber in der Reihenfolge:
Grün
Blau
Rot
zusammen. Und dann ist: $FF00FF = 100% Grün plus 100% Rot.

scp 12. Jul 2004 16:31

Re: ColorBox - Color zu Hexcolor machen
 
Zitat:

Zitat von Sharky
Delphi bzw. Windows setzen die Farbanteile aber in der Reihenfolge:
Grün
Blau
Rot
zusammen. Und dann ist: $FF00FF = 100% Grün plus 100% Rot.

Sollte es nicht eher so aussehen?

Delphi bzw. Windows setzen die Farbanteile aber in der Reihenfolge:
Blau
Grün
Rot
zusammen. Und dann ist: $FF00FF = 100% Grün plus 100% Rot.[/quote]

Master_BB 31. Jul 2004 10:11

Re: ColorBox - Color zu Hexcolor machen
 
so ich hab jetzt ein schönes ergebnis was perfekt funktioniert.

Delphi-Quellcode:
function TFHTMLExport.ColorToHTML(AColor : TColor) : string;
var
  ATemp : LongInt;
begin
  Result := '';
  ATemp := ColorToRGB(AColor);
  Result := Format('#%.2x%.2x%.2x', [GetRValue(ATemp),
                                     GetGValue(ATemp),
                                     GetBValue(ATemp)]);
end;
lang hats gedauert
aber hier die funktion fals soetwas nocheinmal jemand brauchen sollte...

Greetz


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 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