![]() |
TColor - Helligkeit und Sättigung (Get/Set)
Hallöle,
ich suche eine function zum setzen und lesen der Helligkeit und Sättigung eines TColor wertes, hat da vllt jemand was zu? Ich stelle mir das so vor:
Delphi-Quellcode:
Hoffe ihr könnt mir da etwas weiterhelfen. Hab auch schon gesucht aber die ergebnis waren nicht so das was ich suchte ;)
function GetLightness(AColor:TColor):Byte;
function GetSatiation(AColor:TColor):Byte; procedure SetLightness(var AColor:TColor; AValue:Byte); procedure SetSatiation(var AColor:TColor; AValue:Byte); |
Re: TColor - Helligkeit und Sättigung (Get/Set)
Hi Daniel,
vielleicht hilft dir ![]() Greetz alcaeus |
Re: TColor - Helligkeit und Sättigung (Get/Set)
|
Re: TColor - Helligkeit und Sättigung (Get/Set)
@alcaeus
hmm ja den hatt ich auch schon gesehen, konnt ich nur nicht so viel mit anfangen, blicke da nicht so wirklich durch die berechnug durch, ist etwas sehr wirr. @Gruber_Hans_12345 ne aber war ein guter tipp, danke! ich hab das jetzt zwar durchgeschaut aber ist auch nicht so wirklich was brauchbares bei... |
Re: TColor - Helligkeit und Sättigung (Get/Set)
Zitat:
Delphi-Quellcode:
:shock: Was ist daran bitte so kompliziert? Na klar, umgekehrt wirds etwas schwerer, aber wenigstens die Get-Routinen sollten möglich sein. Du musst nur noch die RGB-Werte aus dem TColor auslesen, und das sollte mit dieser Funktion kein Problem sein:
Maximum := Max(Red, Max(Green, Blue));
Minimum := Min(Red, Min(Green, Blue)); Brightness := Maximum; Saturation := MulDiv(Maximum - Minimum, 255, Maximum)
Delphi-Quellcode:
PS: Ich habe sie nicht getestet ;)
procedure GetRGB(Color: TColor; var r, g, b: Byte);
var rgb: DWord; begin rgb := ColorToRGB(Color); r := Byte(rgb); g := Byte(rgb shr 8); b := Byte(rgb shr 16); end; Greetz alcaeus |
Re: TColor - Helligkeit und Sättigung (Get/Set)
@alcaeus
nee ich mag kein vorgekauten code der so wirr ist (deswegen konnt ich mit dem post nix anfangen), dann bau ich es mir selber ;) Hehe jetzt hab ich meine get functions auch fertig ;) die funzen auch, ist zwar eine abweichung von +/- 1..2 aber damit kann ich leben *g* jetzt muss ich noch die set proceduren baun, mal schaun, hat da wer noch gute infos?
Delphi-Quellcode:
PS: Ihr könntet die funktionen ja auch mal testen.
function GetLightness(AColor:TColor):Byte;
var R,G,B:Byte; MaxValue,MinValue:Double; Lightness:Double; begin R:=GetRValue(ColorToRGB(AColor)); G:=GetGValue(ColorToRGB(AColor)); B:=GetBValue(ColorToRGB(AColor)); MaxValue:=Max(Max(R,G),B); MinValue:=Min(Min(R,G),B); Lightness:=(((MaxValue + MinValue) * 240) + 255 ) / 510; Result:=Round(Lightness); end; function GetSaturation(AColor:TColor):Byte; var R,G,B:Byte; MaxValue,MinValue:Double; Lightness,Saturation:Double; begin R:=GetRValue(ColorToRGB(AColor)); G:=GetGValue(ColorToRGB(AColor)); B:=GetBValue(ColorToRGB(AColor)); MaxValue:=Max(Max(R,G),B); MinValue:=Min(Min(R,G),B); Lightness:=(((MaxValue + MinValue) * 240) + 255 ) / 510; if Lightness <= 120 then begin Saturation:=(((MaxValue - MinValue) * 240) + ((MaxValue + MinValue) / 2)) / (MaxValue + MinValue); end else begin Saturation:=(((MaxValue - MinValue) * 240) + ((510 - MaxValue - MinValue) / 2)) / (510 - MaxValue - MinValue); end; Result:=Round(Saturation); end; |
Re: TColor - Helligkeit und Sättigung (Get/Set)
nichts gefunden .... hm
ist das was du suchst nicht dsa selbe wie ein HSV Diagramm ? das hams (samt Komponenten) da : ![]() |
Re: TColor - Helligkeit und Sättigung (Get/Set)
ne ich wollte keine monster komponente haben ich wollte nur diese 4 funktionen und die auch noch wenn möglich recht kompakt halten.
|
Re: TColor - Helligkeit und Sättigung (Get/Set)
und direkt auf der Seite die zwei Funktionen HSVtoRGB und RGBtoHSV :gruebel:
|
Re: TColor - Helligkeit und Sättigung (Get/Set)
ja schon aber wenn ich schon lese "uses ... IEEE754, // NaN, IsNaN" das ist mir alles zu komplex und umfangreich ich möchte nur das nötigste haben.
das soll auch schnell und portabel nutzbar sein, komponenten müssen installiert werden, dateien muss man mitliefer... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 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 by Thomas Breitkreuz