Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Graustufe aus Farbwert (https://www.delphipraxis.net/72134-graustufe-aus-farbwert.html)

cherry 26. Jun 2006 09:31


Graustufe aus Farbwert
 
Vieles steht darüber im Forum geschrieben, aber nichts konnte mir weiterhelfen.
ganz einfache Frage, erwarte ganz unkomplizierte Lösung;

Ich habe einen farbwert, und will den dafür passenden Graustufen (oder Schwarz-Weiss)
Farbwert.


Ich hab zum Beispiel folgende Funktion dafür geschrieben, leider ist
sie mir etwas ZU Blödsinnig, und gibt zu wenig verschiedene Farbwerte zurück!
Also er funktioniert nicht ganz korrekt, meines erachtens.

Delphi-Quellcode:
function TEButton.GetMonoColorValue(Color: TColor): TColor;
begin
 if (GetRValue(Color)>GetGValue(Color)) and (GetRValue(Color)>GetBValue(Color)) then
  Color := RGB(GetRValue(Color),GetRValue(Color),GetRValue(Color))
 else if (GetGValue(Color)>GetRValue(Color)) and (GetGValue(Color)>GetBValue(Color)) then
  Color := RGB(GetGValue(Color),GetGValue(Color),GetGValue(Color))
 else if (GetBValue(Color)>GetRValue(Color)) and (GetBValue(Color)>GetGValue(Color)) then
  Color := RGB(GetBValue(Color),GetBValue(Color),GetBValue(Color));
 result := Color;
end;
Und bitte schreibt nicht... DP suche.. wenn Ihr was WIRKLICH brauchbares in der Suche gefunden habt,
dann könnt ihr ja den direkten Link mitgeben, das wäre auch schon toll...

Oder gibt es die möglichkeit ein Canvas auf Graustufen einzustellen. z.B. Canvas.MonoColors := true oder son scheiss...

xaromz 26. Jun 2006 09:35

Re: Graustufe aus Farbwert
 
Hallo,

normalerweise werden Farben so in Graustufen umgewandelt:
Delphi-Quellcode:
Gray := Round(Blue * 0.114 + Green * 0.578 + Red * 0.299);
Gruß
xaromz

Mavarik 26. Jun 2006 09:38

Re: Graustufe aus Farbwert
 
hmm

Image.Picture.Bitmap.Monocrome := true;

Sowas?

Frank

cherry 26. Jun 2006 09:44

Re: Graustufe aus Farbwert
 
Zitat:

Zitat von xaromz
normalerweise werden Farben so in Graustufen umgewandelt:
Delphi-Quellcode:
Gray := Round(Blue * 0.114 + Green * 0.578 + Red * 0.299);

Funktioniert eben nicht. Zb clYellow wird dann irgendwie ein Rot-ton...
Tja... andere Ideen

Zitat:

Zitat von Mavarik
Delphi-Quellcode:
Image.Picture.Bitmap.Monocrome := true;

Ne, ich hab ja ne Canvas, kein Image!

xaromz 26. Jun 2006 09:47

Re: Graustufe aus Farbwert
 
Hallo,
Zitat:

Zitat von cherry
Zitat:

Zitat von xaromz
normalerweise werden Farben so in Graustufen umgewandelt:
Delphi-Quellcode:
Gray := Round(Blue * 0.114 + Green * 0.578 + Red * 0.299);

Funktioniert eben nicht. Zb clYellow wird dann irgendwie ein Rot-ton...
Tja... andere Ideen

Selbstverständlich funktioniert das. Du bekommst den Grauwert ja als 1 Byte und nicht als TColor; Du musst also den Wert einer Farbe zuweisen:
Delphi-Quellcode:
Farbe := rgb(Gray, Gray, Gray);
Gruß
xaromz

cherry 26. Jun 2006 09:52

Re: Graustufe aus Farbwert
 
.:OOOPPPSSS:.

Sorry, mein Fehler!
So funktioniert das natürlich... THX

himitsu 26. Jun 2006 10:04

Re: Graustufe aus Farbwert
 
oder ohne RGB-Funktion.

Delphi-Quellcode:
Color := Round(Blue * 0.114 + Green * 0.578 + Red * 0.299) * $010101;
PS: was für Multiplicatoren (die 0.xxx innerhalb ROUND) du verwendest ist eher Geschmackssache, da es sich um rein subjetive Werte handelt. (ich verwende z.B. auch etwas Andere) ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 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