![]() |
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 |
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. ![]() |
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. ![]() Wollte eben nur wissen, ob es da etwas gibt von Delphi selber. Viele Grüße |
AW: RAL Farbe zu RBG zu TColor
Es gibt wohl
![]() Oder man geht zu ![]() 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 ![]() |
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. ![]() Viele Grüße |
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. |
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 |
AW: RAL Farbe zu RBG zu TColor
Zitat:
Zitat:
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. |
AW: RAL Farbe zu RBG zu TColor
Wenn du auch noch die anderen RAL "Farbkarten" brauchst findest du sie hier:
![]() ![]() ![]() |
AW: RAL Farbe zu RBG zu TColor
Zitat:
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 13:49 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