![]() |
Dezimaler Farbcode zu RGB?
Hallo,
ich entwickle gerade ein programm mit dem man für das Spiel Fallout 3 die farben der interface schriften etc anpassen kann. Die Werte für diese farben werden in einer ini datei des spiels gespeichert. Es sind dezimal zahlen, sie setzen sich so zusammen: Rot * Grün * Blau * Alpha 255 * 255 * 255 * 255 = 4228250625 (In dem fall wäre das weiß, absolut untransparent) Ich würde gerne wissen, wie man aus dem letzteren wert den farbwert ermitteln kann für rot, grün und blau. Danke schonmal :) |
Re: Dezimaler Farbcode zu RGB?
Wozu denn die Multiplikation? Nimm doch einfach eine 32-Bit Unsigned so wie andere auch.
|
Re: Dezimaler Farbcode zu RGB?
Also ich würde mal sagen, gar nicht. Nachher erkennst du nicht mehr, ob nun zum Beispiel Rot oder Blau 254 hatte. Denn Faktoren kann man ja bekanntlich vertauschen.
Gegenvorschlag: Alpha*10^0 + Blau*10^3 + Grün*10^6 + Rot * 10^9 also AAABBBGGGRRR Dann gibt es zwei Möglichkeiten das auszulesen: Umwandlung in String -> Entsprechende Zeichen rauspicken und Zusammensetzen (oder halt Copy) -> Zurück in Integer umwandeln. Oder, was wohl sauberer und schneller sein dürfte: Auslesen der Stellen mit
Delphi-Quellcode:
(Divisionsrest) und eventuell ein bisschen shiften.
mod
|
Re: Dezimaler Farbcode zu RGB?
Wow, wie schnell :)
Danke für die antworten, ich werde mich mal mit deinem vorschlag auseinandersetzen. Vielen Dank :) |
Re: Dezimaler Farbcode zu RGB?
Noch ein Hinweis: Brauchst du wirklich den Alpha-Kanal? Ansonsten würde auch reichen, dass normalerweise von Delphi verwendete BGR-Schema zu verwenden, also
Delphi-Quellcode:
Was im Prinzip auch mit TColor kompatibel ist, also so wie es ist zum Bleistift TForm.Color zugewiesen werden kann.
farbe := rgb(rot, gruen, blau); //oder
farbe := StrToInt('$' + IntToHex(blau, 2) + IntToHex(gruen, 2) + IntToHex(rot, 2)); |
Re: Dezimaler Farbcode zu RGB?
Das höherwertigste Byte kann man doch für den Alphakanal nutzen, ist doch eh 32-bittig.
|
Re: Dezimaler Farbcode zu RGB?
Öhm ich glaub ich hab eins nich genug betont:
Ich will nicht irgendeine farbe in einem dezimalwert ausdrücken, sondern ich muss eine bestimmte farbe so ausdrücken, dass das Spiel (Fallout 3) den von meinem programm errechneten wert korrekt interpretiert. daher muss bei der berechnung der alpha kanal dabei sein, welcher allerdings in meinem programm nicht verändert wird (also immer 256 ist), denn falls man den weglässt ist das ergebnis falsch. |
Re: Dezimaler Farbcode zu RGB?
Wenn Du uns mitteilst, in welchem Format das Spiel die Farbe erwartet, könnten wir Dir sicherlich besser helfen. Btw: Du meinst sicherlich 255 und nicht 256 ;)
|
Re: Dezimaler Farbcode zu RGB?
Zitat:
Dachte ich auch mal. Dem ist aber nicht so, soweit ich weiß. In dem 4. Byte werden ggf. zusätzliche Informationen gespeichert. Hat glaube ich irgendwas mit den Systemfarben zu tun. Bsp:
Delphi-Quellcode:
:arrow: Schwarz
Color := TColor($15FF00FF);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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