AGB  ·  Datenschutz  ·  Impressum  







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

TColor - Zusammenfügen der Farben

Ein Thema von Muellermilchtrinker · begonnen am 15. Mai 2011 · letzter Beitrag vom 16. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#1

TColor - Zusammenfügen der Farben

  Alt 15. Mai 2011, 19:13
Delphi-Version: 2009
Hallo DP,

ich stehe gerade vor folgendem Problem: Ich habe 4 Schieberegler (R,G,B und Alpha). Diese haben den Wertebereich von 0...255. Ich möchte nun mit denen Daten eine Farbe definieren. Mit rgb() kann ich ja meine RGB Werte in ein TColorwert umwandeln.
Ich möchte jedoch noch den Alphawert mit einbeziehen und dann diese Farbe auf einem Panel anzeigen und dann mit einer 8 stelligen Hexformatierung weiter machen.

Gibt es schon fertige Funktionen, die ich übersehen habe oder muss ich mir welche selber schreiben?
Danke schonmal.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TColor - Zusammenfügen der Farben

  Alt 15. Mai 2011, 19:23
RGBAToColor für den TColor-Wert und IntToHex für die Hexdarstellung
Markus Kinzler
  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
 
#3

AW: TColor - Zusammenfügen der Farben

  Alt 16. Mai 2011, 08:19
RGBAToColor?

Also mein Delphi (2009) kennt das nicht. Muss man da eine bestimmte Unit einbinden?..
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
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#4

AW: TColor - Zusammenfügen der Farben

  Alt 16. Mai 2011, 08:50
Alphawert mit einbeziehen und dann diese Farbe auf einem Panel
da geht es dann los mit den Schwierigkeiten.

Delphi-VCL kennt ja kein TRGBA-Type (oder TARGB), TColor enthält kein Alphawert. Entweder auf GDIplus ausweichen oder selber ein TRGBA definieren und die Farbvorschau selber zeichnen durch Verechnen mit Hintergrundfarbe.

Paint.Net zeigt Farben mit gesetztem Alphawert auch ganz interessant an (Schachbrett).
  Mit Zitat antworten Zitat
Benutzerbild von Cirec
Cirec

Registriert seit: 23. Sep 2010
Ort: Frankreich
7 Beiträge
 
Delphi 2009 Enterprise
 
#5

AW: TColor - Zusammenfügen der Farben

  Alt 16. Mai 2011, 11:55
Hallo,

... Mit rgb() kann ich ja meine RGB Werte in ein TColorwert umwandeln.
Ich möchte jedoch noch den Alphawert mit einbeziehen ...
das geht einfach so:
Delphi-Quellcode:
function RGBAToColor(r, g, b, a: Byte): TColor;
begin
  Result := (r or (g shl 8) or (b shl 16) or (a shl 24));
end;
mfg
Cirec.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#6

AW: TColor - Zusammenfügen der Farben

  Alt 16. Mai 2011, 12:42
TColor enthält doch kein Alphawert, dachte der 4. Bytewert ist reserviert für Palettenauswahl?
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#7

AW: TColor - Zusammenfügen der Farben

  Alt 16. Mai 2011, 16:28
Ok, also mit der Funktion RGBAToColor() habe ich ab einem Alphawert von 125 ein Schwarz auf dem Panel. Weiß jemand wie ich das beheben kann?
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  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
 
#8

AW: TColor - Zusammenfügen der Farben

  Alt 16. Mai 2011, 16:33
Weil die RGBAToColor()-Funktion Schwachsinn ist...

Die funktioniert (wie schon von einigen weiter oben beschrieben) nicht, weil TColor keinen Alpha-Kanal besitzt/unterstützt. In dem 4. Byte wird irgendwas anderes (Palette?!) gespeichert. Und wenn das 4. Byte nicht = 0 ist, kam bei mir zu 99% einfach nur Schwarz raus
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
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#9

AW: TColor - Zusammenfügen der Farben

  Alt 16. Mai 2011, 16:41
Wie könnte ich das denn dann machen?
Also 4 Schieberegler (von 0..255) (r,g,b,a) damit dann eine Farbe einstellen und auf einem Vorschaubild anzeigen. Danach die Farbe als 8 stellige Hex ausgeben im Format: $AARRGGBB (da bei der Delphifunktion doch 2 Farben gedreht sind)
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: TColor - Zusammenfügen der Farben

  Alt 16. Mai 2011, 17:01
Wie könnte ich das denn dann machen?
Also 4 Schieberegler (von 0..255) (r,g,b,a) damit dann eine Farbe einstellen und auf einem Vorschaubild anzeigen. Danach die Farbe als 8 stellige Hex ausgeben im Format: $AARRGGBB (da bei der Delphifunktion doch 2 Farben gedreht sind)
Da ist nichts gedreht oder verdreht, sondern genau wie im schönen Dezimalsystem.
Einer, Zehner, Hunderter, Tausender (THZE) oder mal analog dazu
R, G, B, A (AGBR) und da jeder Wert (dezimal) von 0-255 oder (hex) von $00-$FF schreibt man auch gerne als Maske für die resultierende Hex-Darstellung ($AABBGGRR)

Bei einer Umrechnung nach TColor kann aber nur der RGB-Anteil verarbeitet werden, weil TColor eben nix mit dem Alpha-Kanal zu schaffen hat.

Für die tatsächlich resultierende Farbe die auf dem Schirm dann erscheinen muss zu errechnen, benötigt man eben noch die aktuelle Hintergrundfarbe.

Das führt uns somit zu folgendem Funktionsrumpf:
function GetColor( ARGB : TARGB; Color : TColor ): TColor;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:59 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