AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Helligkeit in % aus einem RGB-Farbwert berechnen?!?
Thema durchsuchen
Ansicht
Themen-Optionen

Helligkeit in % aus einem RGB-Farbwert berechnen?!?

Ein Thema von DanielF · begonnen am 13. Feb 2003 · letzter Beitrag vom 16. Feb 2003
Antwort Antwort
DanielF

Registriert seit: 18. Jan 2003
110 Beiträge
 
Delphi 7 Professional
 
#1

Helligkeit in % aus einem RGB-Farbwert berechnen?!?

  Alt 13. Feb 2003, 13:28
Hi Leute,
bei meinem Programm kann man die Schrift- u. Hintergrundfarbe einstellen.
Wie kann ich nun berechnen, welche Helligkeit die Schriftfarbe hat?
thx
Daniel
  Mit Zitat antworten Zitat
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#2
  Alt 13. Feb 2003, 14:13
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
  Mit Zitat antworten Zitat
DanielF

Registriert seit: 18. Jan 2003
110 Beiträge
 
Delphi 7 Professional
 
#3
  Alt 13. Feb 2003, 14:17
es gibt doch diesen wert von 0-240, der die helligkeit einer farbe angibt. den mein ich.
  Mit Zitat antworten Zitat
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#4
  Alt 13. Feb 2003, 14:27
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:
http://start.farben.rehbein.net/
http://www.beta45.de/farbcodes/theorie/farbmodelle.html

was die Umrechnung angeht, da hab ich auf die schnelle nur das hier gefunden, k.a. ob dir das hilft:

http://www-lehre.informatik.uni-osna...SV_Modell.html
  Mit Zitat antworten Zitat
DanielF

Registriert seit: 18. Jan 2003
110 Beiträge
 
Delphi 7 Professional
 
#5
  Alt 13. Feb 2003, 15:03
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;
  Mit Zitat antworten Zitat
DanielF

Registriert seit: 18. Jan 2003
110 Beiträge
 
Delphi 7 Professional
 
#6
  Alt 13. Feb 2003, 15:13
dann müsst des doch so gehn oder?

Code:
Brightness := Max(Red, Max(Green, Blue));
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#7
  Alt 13. Feb 2003, 17:41
Zitat von DanielJ:
Code:
  Maximum := Max(Red, Max(Green, Blue));
  // ...
  Value := Maximum;
Das dürfte deine Frage beantworten .
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Benutzerbild von Robert
Robert

Registriert seit: 4. Jan 2003
36 Beiträge
 
#8
  Alt 16. Feb 2003, 09:08
Delphi-Quellcode:
function getBrightness(R,G,B:BYTE):BYTE;
begin
  Result:=TRUNC(R*0.3 + G*0.59 + B*0.11);
end;
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!
Wer hat gesagt, dass Borland NUR ein Begriff für ein Ölfeld sei!?

Ban Visual BASIC 4ever
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:12 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