AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TColor - Helligkeit und Sättigung (Get/Set)
Thema durchsuchen
Ansicht
Themen-Optionen

TColor - Helligkeit und Sättigung (Get/Set)

Ein Thema von static_cast · begonnen am 15. Okt 2004 · letzter Beitrag vom 15. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#1

TColor - Helligkeit und Sättigung (Get/Set)

  Alt 15. Okt 2004, 11:22
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:
function GetLightness(AColor:TColor):Byte;
function GetSatiation(AColor:TColor):Byte;
procedure SetLightness(var AColor:TColor; AValue:Byte);
procedure SetSatiation(var AColor:TColor; AValue:Byte);
Hoffe ihr könnt mir da etwas weiterhelfen. Hab auch schon gesucht aber die ergebnis waren nicht so das was ich suchte
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: TColor - Helligkeit und Sättigung (Get/Set)

  Alt 15. Okt 2004, 11:28
Hi Daniel,

vielleicht hilft dir dieser Tipp weiter. Wenigstens die Get-Funktionen kannst du ohne Probleme realisieren, mit den Set-Prozeduren siehts ein bisschen schwerer aus.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#3

Re: TColor - Helligkeit und Sättigung (Get/Set)

  Alt 15. Okt 2004, 11:31
hast du schon auf efg Labs nachgesehen ?
dort haben die sicher was
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#4

Re: TColor - Helligkeit und Sättigung (Get/Set)

  Alt 15. Okt 2004, 12:23
@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...
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: TColor - Helligkeit und Sättigung (Get/Set)

  Alt 15. Okt 2004, 12:50
Zitat von static_cast:
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.
Delphi-Quellcode:
Maximum := Max(Red, Max(Green, Blue));
Minimum := Min(Red, Min(Green, Blue));
Brightness := Maximum;
Saturation := MulDiv(Maximum - Minimum, 255, Maximum)
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:
Delphi-Quellcode:
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;
PS: Ich habe sie nicht getestet

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#6

Re: TColor - Helligkeit und Sättigung (Get/Set)

  Alt 15. Okt 2004, 13:03
@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:
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;
PS: Ihr könntet die funktionen ja auch mal testen.
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#7

Re: TColor - Helligkeit und Sättigung (Get/Set)

  Alt 15. Okt 2004, 13:33
nichts gefunden .... hm

ist das was du suchst nicht dsa selbe wie ein HSV Diagramm ?

das hams (samt Komponenten) da : http://www.efg2.com/Lab/Graphics/Colors/HSV.htm
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#8

Re: TColor - Helligkeit und Sättigung (Get/Set)

  Alt 15. Okt 2004, 17:17
ne ich wollte keine monster komponente haben ich wollte nur diese 4 funktionen und die auch noch wenn möglich recht kompakt halten.
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#9

Re: TColor - Helligkeit und Sättigung (Get/Set)

  Alt 15. Okt 2004, 17:24
und direkt auf der Seite die zwei Funktionen HSVtoRGB und RGBtoHSV
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#10

Re: TColor - Helligkeit und Sättigung (Get/Set)

  Alt 15. Okt 2004, 17:32
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...
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  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 03:27 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