![]() |
Helligkeit in % aus einem RGB-Farbwert berechnen?!?
Hi Leute,
bei meinem Programm kann man die Schrift- u. Hintergrundfarbe einstellen. Wie kann ich nun berechnen, welche Helligkeit die Schriftfarbe hat? thx Daniel |
Ich versteh nicht genau was du mit Helligkeit meinst...
Wenn du die Helligkeit einer Farbe im HSV-Systems meinst, dann kuck mal bei Google nach 'Umrechnung HSV RGB' oder so |
es gibt doch diesen wert von 0-240, der die helligkeit einer farbe angibt. den mein ich.
|
genau, den meine ich auch :)
Wie du vielleicht weißt, gibt es nicht nur das Farbsystem RGB, das man z.b. in Delphi benutzt, sondern auch das von mir oben schon erwähnte HSV System. Eine RGB Farbe setzt sich aus 3 Werten zusammen die den Rot-, Grün- und Blauanteil beschreiben. Beim HSV-Modell gibts zwar auch drei Werte, die bedeuten aber was anderes: H: Farbwinkel (Hue) -> 0-360 S: Sättigung (Saturation) -> 0-1 V: Helligkeit (Value)-> 0-240 Du musst also deine RGB-Farbe in eine HSV-Farbe umrechnen um an die Helligkeit zu kommen. für mehr Infos: ![]() ![]() was die Umrechnung angeht, da hab ich auf die schnelle nur das hier gefunden, k.a. ob dir das hilft: ![]() |
danke. hab scho was gefunden ;)
Code:
procedure tform1.RGBtoHSV(Red, Green, Blue: Byte; var Hue: THue; var Saturation, Value: Byte);
var Maximum, Minimum: Byte; Rc, Gc, Bc: Single; H: Single; begin Maximum := Max(Red, Max(Green, Blue)); Minimum := Min(Red, Min(Green, Blue)); Value := Maximum; if Maximum <> 0 then Saturation := MulDiv(Maximum - Minimum, 255, Maximum) else Saturation := 0; if Saturation = 0 then Hue := 0 // arbitrary value else begin Assert(Maximum <> Minimum); Rc := (Maximum - Red) / (Maximum - Minimum); Gc := (Maximum - Green) / (Maximum - Minimum); Bc := (Maximum - Blue) / (Maximum - Minimum); if Red = Maximum then H := Bc - Gc else if Green = Maximum then H := 2 + Rc - Bc else begin Assert(Blue = Maximum); H := 4 + Gc - Rc; end; H := H * 60; if H < 0 then H := H + 360; Hue := Round(H); end; end; |
dann müsst des doch so gehn oder?
Code:
Brightness := Max(Red, Max(Green, Blue));
|
Zitat:
|
Delphi-Quellcode:
Wer den einzelnen Farben etwas mehr Farbbalancen zuweisen möchte, dem seien andere Koeffizienten geraten. Ich hab die Werte aus einer c't oder PC Magazin, glaub ich!
function getBrightness(R,G,B:BYTE):BYTE;
begin Result:=TRUNC(R*0.3 + G*0.59 + B*0.11); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 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