Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi RAL Farbe zu RBG zu TColor (https://www.delphipraxis.net/187480-ral-farbe-zu-rbg-zu-tcolor.html)

Alex_ITA01 2. Dez 2015 14:21

RAL Farbe zu RBG zu TColor
 
Hallo,
ich habe bereits Funktionen gefunden, die mir eine RBG Farbe in TColor (Integer) umrechnen.
Es gibt auch diverse Seiten im Netz, wo in einer Tabelle erklärt ist, welche RAL Farbe welchen RBG Werten entspricht.
Meine Frage ist eigentlich nur, gibt es auch in Delphi eine Standardfunktion RAL zu RBG oder müsste ich die neu schreiben?

Viele Grüße

SMO 2. Dez 2015 14:46

AW: RAL Farbe zu RBG zu TColor
 
Meinst du wirklich RBG oder darf's auch RGB/BGR sein?
TColor ist bereits RGB (hexadezimal: $00bbggrr), kann aber zusätzlich "Systemfarben" von Windows enthalten, z.B. clBtnFace usw. (hexadezimal: $FF0000xx, xx=ID).
Deshalb gibt's die funktion Vcl.Graphics.ColorToRGB, die ein Systemfarben-TColor in ein RGB-TColor konvertiert (und ein RGB-TColor unverändert lässt).

Ich bezweifle, dass es in den Delphi-Standardbibliotheken eine Funktion für RAL gibt.
Außerdem möchte ich anmerken, dass RGB-Werte nicht "absolut" sind - sie brauchen einen Farbraum, auf den sie sich beziehen, z.B. sRGB. Eine Formel zur Umrechnung von RAL<->sRGB wird leicht andere Koeffizienten haben als eine Formel für RAL<->AdobeRGB ...

Alex_ITA01 2. Dez 2015 14:53

AW: RAL Farbe zu RBG zu TColor
 
Danke für die Info.
Hier ist z.B. eine entsprechende Umrechung von RAL nach RBG aufgeschlüsselt.

http://www.tcdo99.de/tt600r/technik/.../ralfarben.htm

Wollte eben nur wissen, ob es da etwas gibt von Delphi selber.

Viele Grüße

SMO 2. Dez 2015 15:27

AW: RAL Farbe zu RBG zu TColor
 
Es gibt wohl noch mehr RAL-Werte. Zitat: "Verbindliche sRGB-Werte [...] entnehmen Sie bitte unserer Software RAL DIGITAL".
Oder man geht zu Wikipedia und nutzt die CIE L*a*b* Werte dort.

Farbräume sind ein bisschen wie Codepages für AnsiStrings. In einfachen Anwendungsfällen kann man sie ignorieren, aber wenn man Daten wirklich korrekt verarbeiten möchte, dann muss man sie berücksichtigen. Ein AnsiChar mit dem Wert 65 ($41) z.B. entspricht eben nicht immer dem Zeichen 'A', ebenso wie der RGB-Wert $00FF00 (0, 255, 0) nicht immer der Farbe grün entspricht. In der Analogie wäre der L*a*b*-Farbraum dann Unicode. :wink:

Alex_ITA01 2. Dez 2015 15:38

AW: RAL Farbe zu RBG zu TColor
 
Danke schön für deine Infos.
Das muss für mein Anwendungsfall nicht 100%ig sein, sprich der Standard Farbraum reicht mir da.
Ich baue mir jetzt einfach eine Übersetzungstabelle gemäß dieser Seite und das reicht mir auch.

http://www.tcdo99.de/tt600r/technik/.../ralfarben.htm

Viele Grüße

TiGü 2. Dez 2015 15:51

AW: RAL Farbe zu RBG zu TColor
 
Das macht dann ölf dreiundfüffzig:

Delphi-Quellcode:
unit RALtoRGB;

interface

uses
  System.SysUtils,
  System.Generics.Collections,
  Vcl.Graphics,
  Winapi.Windows;

type
  TRALColor = 1000 .. 9050;

  TColorConverter = class
  strict private
    class var
      FTable: TDictionary<TRALColor, TColor>;
  strict private
    class constructor Create;
    class destructor Destroy;
    class procedure InitTable;
  public
    class function TryRALtoRGB(const RAL: TRALColor; out RGB: TColor): Boolean;
  end;

const
  RALColors: TArray<TRALColor> = [
    1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1023, 1024, 1026, 1027, 1028, 1032, 1033, 1034,
    2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012,
    3000, 3001, 3002, 3003, 3004, 3005, 3007, 3009, 3011, 3012, 3013, 3014, 3015, 3016, 2017, 3018, 3020, 3022, 3024, 3026, 3027, 3031,
    4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008, 4009, 4010,
    5000, 5001, 5002, 5003, 5004, 5005, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024,
    6000, 6001, 6002, 6003, 6004, 6005, 6006, 6007, 6008, 6009, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 6017, 6018, 6019, 6020, 6021, 6022, 6024, 6025, 6026, 6027, 6028, 6029, 6032, 6033, 6034,
    7000, 7001, 7002, 7003, 7004, 7005, 7006, 7008, 7009, 7010, 7011, 7012, 7013, 7015, 7016, 7021, 7022, 7023, 7024, 7026, 7030, 7031, 7032, 7033, 7034, 7035, 7036, 7037, 7038, 7039, 7040, 7042, 7043, 7044, 7045, 7046, 7047,
    8000, 8001, 8002, 8003, 8004, 8007, 8008, 8011, 8012, 8014, 8015, 8016, 8017, 8019, 8022, 8023, 8024, 8025, 8028, 9001, 9002, 9003, 9004, 9005, 9006, 9007, 9010, 9011, 9016, 9017, 9018
    ];

implementation

class constructor TColorConverter.Create;
begin
  FTable := TDictionary<TRALColor, TColor>.Create;
  InitTable;
end;

class destructor TColorConverter.Destroy;
begin
  FTable.Free;
end;

class procedure TColorConverter.InitTable;
var
  RGBColors: TArray<TColor>;
  I: Integer;
begin
  RGBColors := [
    RGB(214, 199, 148),
    RGB(217, 186, 140),
    RGB(214, 176, 117),
    RGB(252, 163, 041),
    RGB(227, 150, 036),
    RGB(201, 135, 033),
    RGB(224, 130, 031),
    RGB(227, 122, 031),
    RGB(173, 122, 079),
    RGB(227, 184, 056),
    RGB(255, 245, 227),
    RGB(240, 214, 171),
    RGB(252, 235, 204),
    RGB(255, 245, 066),
    RGB(255, 171, 089),
    RGB(255, 214, 077),
    RGB(163, 140, 122),
    RGB(156, 143, 097),
    RGB(252, 189, 031),
    RGB(252, 184, 033),
    RGB(181, 140, 079),
    RGB(255, 255, 010),
    RGB(153, 117, 033),
    RGB(255, 140, 026),
    RGB(227, 163, 041),
    RGB(255, 148, 054),
    RGB(247, 153, 092),
    RGB(224, 094, 031),
    RGB(186, 046, 033),
    RGB(204, 036, 028),
    RGB(255, 099, 054),
    RGB(242, 059, 028),
    RGB(252, 028, 020),
    RGB(255, 117, 033),
    RGB(250, 079, 041),
    RGB(235, 059, 028),
    RGB(212, 069, 041),
    RGB(237, 092, 041),
    RGB(222, 082, 071),
    RGB(171, 031, 028),
    RGB(163, 023, 026),
    RGB(163, 026, 026),
    RGB(138, 018, 020),
    RGB(105, 015, 020),
    RGB(079, 018, 026),
    RGB(046, 018, 026),
    RGB(094, 033, 033),
    RGB(120, 020, 023),
    RGB(204, 130, 115),
    RGB(150, 031, 028),
    RGB(217, 102, 117),
    RGB(232, 156, 181),
    RGB(166, 036, 038),
    RGB(209, 054, 084),
    RGB(207, 041, 066),
    RGB(199, 023, 018),
    RGB(217, 089, 079),
    RGB(252, 010, 028),
    RGB(252, 020, 020),
    RGB(181, 018, 051),
    RGB(166, 028, 046),
    RGB(130, 064, 128),
    RGB(143, 038, 064),
    RGB(201, 056, 140),
    RGB(092, 008, 043),
    RGB(099, 061, 156),
    RGB(145, 015, 102),
    RGB(056, 010, 046),
    RGB(125, 031, 122),
    RGB(158, 115, 148),
    RGB(191, 023, 115),
    RGB(023, 051, 107),
    RGB(010, 051, 084),
    RGB(000, 015, 117),
    RGB(000, 023, 069),
    RGB(003, 013, 031),
    RGB(000, 046, 122),
    RGB(038, 079, 135),
    RGB(026, 041, 056),
    RGB(023, 069, 112),
    RGB(000, 043, 112),
    RGB(003, 020, 046),
    RGB(041, 115, 184),
    RGB(000, 018, 069),
    RGB(077, 105, 153),
    RGB(023, 097, 171),
    RGB(000, 059, 128),
    RGB(056, 148, 130),
    RGB(010, 066, 120),
    RGB(005, 051, 051),
    RGB(026, 122, 099),
    RGB(000, 008, 079),
    RGB(046, 082, 143),
    RGB(087, 140, 181),
    RGB(051, 120, 084),
    RGB(038, 102, 041),
    RGB(038, 087, 033),
    RGB(061, 069, 046),
    RGB(013, 059, 046),
    RGB(010, 056, 031),
    RGB(041, 043, 036),
    RGB(028, 038, 023),
    RGB(033, 033, 026),
    RGB(023, 041, 028),
    RGB(054, 105, 038),
    RGB(094, 125, 079),
    RGB(031, 046, 043),
    RGB(117, 115, 079),
    RGB(051, 048, 038),
    RGB(041, 043, 038),
    RGB(015, 112, 051),
    RGB(064, 130, 054),
    RGB(079, 168, 051),
    RGB(191, 227, 186),
    RGB(038, 056, 041),
    RGB(133, 166, 122),
    RGB(043, 038, 028),
    RGB(036, 145, 064),
    RGB(074, 110, 051),
    RGB(010, 092, 051),
    RGB(125, 204, 189),
    RGB(038, 074, 051),
    RGB(018, 120, 038),
    RGB(041, 138, 064),
    RGB(066, 140, 120),
    RGB(125, 189, 181),
    RGB(115, 133, 145),
    RGB(135, 148, 166),
    RGB(122, 117, 097),
    RGB(112, 112, 097),
    RGB(156, 156, 166),
    RGB(097, 105, 105),
    RGB(107, 097, 087),
    RGB(105, 084, 056),
    RGB(077, 082, 074),
    RGB(074, 079, 074),
    RGB(064, 074, 084),
    RGB(074, 084, 089),
    RGB(071, 066, 056),
    RGB(061, 066, 082),
    RGB(038, 046, 056),
    RGB(026, 033, 041),
    RGB(061, 061, 059),
    RGB(122, 125, 117),
    RGB(048, 056, 069),
    RGB(038, 051, 056),
    RGB(145, 143, 135),
    RGB(077, 092, 107),
    RGB(189, 186, 171),
    RGB(122, 130, 117),
    RGB(143, 135, 112),
    RGB(212, 217, 219),
    RGB(158, 150, 156),
    RGB(122, 125, 128),
    RGB(186, 189, 186),
    RGB(097, 094, 089),
    RGB(158, 163, 176),
    RGB(143, 150, 153),
    RGB(064, 069, 069),
    RGB(194, 191, 184),
    RGB(143, 148, 158),
    RGB(120, 130, 140),
    RGB(217, 214, 219),
    RGB(125, 092, 056),
    RGB(145, 082, 046),
    RGB(110, 059, 048),
    RGB(115, 059, 036),
    RGB(133, 056, 043),
    RGB(094, 051, 031),
    RGB(099, 061, 036),
    RGB(071, 038, 028),
    RGB(084, 031, 031),
    RGB(056, 038, 028),
    RGB(077, 031, 028),
    RGB(061, 031, 028),
    RGB(046, 028, 028),
    RGB(043, 038, 041),
    RGB(013, 008, 013),
    RGB(156, 069, 041),
    RGB(110, 064, 048),
    RGB(102, 074, 061),
    RGB(064, 046, 033),
    RGB(255, 252, 240),
    RGB(240, 237, 230),
    RGB(255, 255, 255),
    RGB(028, 028, 033),
    RGB(003, 005, 010),
    RGB(166, 171, 181),
    RGB(125, 122, 120),
    RGB(250, 255, 255),
    RGB(013, 018, 026),
    RGB(252, 255, 255),
    RGB(020, 023, 028),
    RGB(219, 227, 222)
    ];

  for I := low(RALColors) to high(RALColors) do
  begin
    FTable.Add(RALColors[I], RGBColors[I]);
  end;
end;

class function TColorConverter.TryRALtoRGB(const RAL: TRALColor; out RGB: TColor): Boolean;
begin
  Result := FTable.TryGetValue(RAL, RGB);
end;

end.

p80286 2. Dez 2015 17:41

AW: RAL Farbe zu RBG zu TColor
 
[OT]
mal blöd gefragt, wenn ich jetzt eine RAL Farb Nummer habe, dann kann ich mit Hilfe dieser Tabelle(n) diese Farbe auf den Bildschirm bringen, oder noch spezieller, ich kann zwei RAL-Farben miteinander vergleichen?
ich ab eine Farbsehschwäche, da sieht man einige Dinge anders
[/OT]

Gruß
K-H

SMO 2. Dez 2015 18:50

AW: RAL Farbe zu RBG zu TColor
 
Zitat:

Zitat von TiGü (Beitrag 1323248)
Das macht dann ölf dreiundfüffzig:

Danke für den Code!


Zitat:

Zitat von p80286 (Beitrag 1323253)
[OT]
mal blöd gefragt, wenn ich jetzt eine RAL Farb Nummer habe, dann kann ich mit Hilfe dieser Tabelle(n) diese Farbe auf den Bildschirm bringen, oder noch spezieller, ich kann zwei RAL-Farben miteinander vergleichen?
ich ab eine Farbsehschwäche, da sieht man einige Dinge anders
[/OT]

Ja, du kannst damit RAL-Farben auf den Bildschirm bringen, und du kannst so auch zwei RAL-Farben miteinander vergleichen.
Aber: Die angezeigten Farben können mehr oder minder stark von den "echten" Farben abweichen, die ein physisches Objekt mit dem entsprechenden RAL-Code haben würde.
Um diese Abweichung zu minimieren, müsste der Bildschirm vorher kalibriert/profiliert worden sein und man muss farbmanagementfähige Software zum Betrachten benutzen.

noisy_master 3. Dez 2015 08:50

AW: RAL Farbe zu RBG zu TColor
 
Wenn du auch noch die anderen RAL "Farbkarten" brauchst findest du sie hier:

http://colorscheme.ru/ral-colors/ral-classic.html
http://colorscheme.ru/ral-colors/ral-design.html
http://colorscheme.ru/ral-colors/ral-effect.html

himitsu 3. Dez 2015 10:04

AW: RAL Farbe zu RBG zu TColor
 
Zitat:

Zitat von p80286 (Beitrag 1323253)
mal blöd gefragt, ...

Du kannst die RGB-Werte vergleichen, bzw. dir ansehen wieviel von jedem Farbanteil drin ist.

Ein kallibrierter Monitor und dann könnte man eventuell die Sehschwäche noch mit einrechnen lassen ....


Vorteil hier: Es gibt Musterbögen mit diesen Farben, da ist der Monitor nicht mehr das Problem.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 Uhr.
Seite 1 von 2  1 2      

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