AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dezimaler Farbcode zu RGB?

Offene Frage von "SonicTTH"
Ein Thema von SonicTTH · begonnen am 25. Apr 2009 · letzter Beitrag vom 25. Apr 2009
Antwort Antwort
SonicTTH

Registriert seit: 12. Dez 2008
Ort: Rostock
54 Beiträge
 
#1

Dezimaler Farbcode zu RGB?

  Alt 25. Apr 2009, 12:03
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Dezimaler Farbcode zu RGB?

  Alt 25. Apr 2009, 12:10
Wozu denn die Multiplikation? Nimm doch einfach eine 32-Bit Unsigned so wie andere auch.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Jakob Ullmann
Jakob Ullmann

Registriert seit: 17. Feb 2007
218 Beiträge
 
Lazarus
 
#3

Re: Dezimaler Farbcode zu RGB?

  Alt 25. Apr 2009, 12:16
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 mod (Divisionsrest) und eventuell ein bisschen shiften.
Jakob
  Mit Zitat antworten Zitat
SonicTTH

Registriert seit: 12. Dez 2008
Ort: Rostock
54 Beiträge
 
#4

Re: Dezimaler Farbcode zu RGB?

  Alt 25. Apr 2009, 12:21
Wow, wie schnell

Danke für die antworten, ich werde mich mal mit deinem vorschlag auseinandersetzen.

Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von Jakob Ullmann
Jakob Ullmann

Registriert seit: 17. Feb 2007
218 Beiträge
 
Lazarus
 
#5

Re: Dezimaler Farbcode zu RGB?

  Alt 25. Apr 2009, 12:26
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:
farbe := rgb(rot, gruen, blau); //oder
farbe := StrToInt('$' + IntToHex(blau, 2) + IntToHex(gruen, 2) + IntToHex(rot, 2));
Was im Prinzip auch mit TColor kompatibel ist, also so wie es ist zum Bleistift TForm.Color zugewiesen werden kann.
Jakob
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Dezimaler Farbcode zu RGB?

  Alt 25. Apr 2009, 12:30
Das höherwertigste Byte kann man doch für den Alphakanal nutzen, ist doch eh 32-bittig.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
SonicTTH

Registriert seit: 12. Dez 2008
Ort: Rostock
54 Beiträge
 
#7

Re: Dezimaler Farbcode zu RGB?

  Alt 25. Apr 2009, 15:36
Ö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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Dezimaler Farbcode zu RGB?

  Alt 25. Apr 2009, 15:42
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
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Dezimaler Farbcode zu RGB?

  Alt 25. Apr 2009, 15:46
Zitat von DeddyH:
Das höherwertigste Byte kann man doch für den Alphakanal nutzen, ist doch eh 32-bittig.
Hi,

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:

Color := TColor($15FF00FF); Schwarz
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 Uhr.
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