AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Farbhelligkeit verändern...
Thema durchsuchen
Ansicht
Themen-Optionen

Farbhelligkeit verändern...

Ein Thema von stahli · begonnen am 20. Mär 2007 · letzter Beitrag vom 20. Mär 2007
 
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Farbhelligkeit verändern...

  Alt 20. Mär 2007, 23:58
Danke Euch!

Also ich habe gut 2 Tage alles mögliche zu Farben gelesen... Ist schon interessant.
Für alle, denen das etwas hilft, hier ein kleines Testprojekt mit meinen 2 Funktionen.
Damit sind Helligkeitsänderungen kein Problem (mehr).

Delphi-Quellcode:
uses
  GraphUtil; // !!

procedure TForm1.Button1Click(Sender: TObject);
begin
  ColorDialog1.Execute();
  Panel2.Color:=ColorDialog1.Color;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);

  // festen Helligkeitswert zuweisen (0=schwarz .. 240=weiß)
  function ColorLightness(clrRGB:TColor;Lightness:Integer):TColor;
  var H,L,S:Word;
  begin
    if (Lightness<0) then Lightness:=0;
    if (Lightness>240) then Lightness:=240;
    ColorRGBToHLS(ColorToRGB(clrRGB),H,L,S);
    Result:=TColor(ColorHLSToRGB(H,Lightness,S));
  end;

  // Helligkeitsdifferenz zuweisen (-240..240)
  // Wird die Helligkeit >240 oder <0 wird die Richtung umgedreht
  // bzw entsprechend begrenzt
  function ColorLightnessMove(clrRGB:TColor;Lightness:Integer):TColor;
  var H,L,S:Word;
      I:Integer;
  begin
    if (Lightness<-240) then Lightness:=-240;
    if (Lightness>240) then Lightness:=240;
    ColorRGBToHLS(ColorToRGB(clrRGB),H,L,S);
    I:=(L+Lightness);
    if (I>240) then begin
      if (L<=120) then I:=240
      else begin
        I:=(L-(I-L));
        if (I<0) then I:=0;
      end;
    end;
    if (I<0) then begin
      if (L>120) then I:=0
      else begin
        I:=(L+(L-I));
        if (I>240) then I:=240;
      end;
    end;
    Result:=TColor(ColorHLSToRGB(H,I,S));
  end;

begin
  Panel2.Caption:=IntToStr(TrackBar1.Position);
  Panel1.Color:=GetHighLightColor(Panel2.Color,TrackBar1.Position);
  Panel3.Color:=GetShadowColor(Panel2.Color,TrackBar1.Position);
  Panel4.Color:=ColorLightness(Panel2.Color,TrackBar1.Position);
  Panel5.Color:=ColorLightnessMove(Panel2.Color,TrackBar1.Position);
end;
Stahli

EDIT: Alle Maximalwerte 255 mussten natürlich in 240 geändert werden, da der Helligkeitsbereich 0..240 ist.
  Mit Zitat antworten Zitat
 


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 22:58 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-2025 by Thomas Breitkreuz