Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Grafik / Sound / Multimedia (https://www.delphipraxis.net/21-library-grafik-sound-multimedia/)
-   -   Delphi WebSafe Farben (https://www.delphipraxis.net/74800-websafe-farben.html)

blackdrake 8. Aug 2006 23:00


WebSafe Farben
 
Diese Funktion sucht die näheste Websafe-Farbe:

Delphi-Quellcode:
function WebSafeColor(inp: TColor): TColor;

        function WebSafeVal(int: integer): integer;
        begin
          result := 0;
          case int of
            0, 51, 102, 153, 204, 255: result := int;
          else
            begin
              if (int <= 26) then
                result := 0
              else
                if (int > 26) and (int <= 76) then
                  result := 51
                else
                  if (int > 76) and (int <= 127) then
                    result := 102
                  else
                    if (int > 127) and (int <= 178) then
                      result := 153
                    else
                      if (int > 178) and (int <= 229) then
                        result := 204
                      else if (int > 229) then
                        result := 255;
            end;
          end;
        end;

begin
  result := rgb(WebSafeVal(GetRValue(inp)), WebSafeVal(GetGValue(inp)), WebSafeVal(GetBValue(inp)));
end;
Weitere Informationen: http://de.wikipedia.org/wiki/Farbtabellen_im_Internet

himitsu 9. Aug 2006 11:40

Re: WebSafe Farben
 
Den RangeTest hätte man sich eh sparen können, da jasowieso nur ein Byte hingeschickt wird, also die grenzen sowieso nie über-/unterschritten werden,

aber die Typumwandlung (Byte<>Integer) spart man sich zweimal. :zwinker:


ich glaub mit Hexadezimalwerten würde das och nicht schlecht rüberkommen, dann erkennt man vielleicht sogar noch 'ne Gesetzmäßigkeit in den Werten?

Delphi-Quellcode:
function WebSafeVal(int: Byte): Byte;
begin
  case int of
    0..26: Result := 0;
    27..76: Result := 51;
    77..127: Result := 102;
    128..178: Result := 153;
    179..229: Result := 209;
    else Result := 255;
  end;
end;

Hawkeye219 9. Aug 2006 12:21

Re: WebSafe Farben
 
Zitat:

Zitat von himitsu
[...]dann erkennt man vielleicht sogar noch 'ne Gesetzmäßigkeit in den Werten?

Durch eine minimale Verschiebung der Grenze zwischen den beiden ersten Bereichen kann man sie erzwingen:

Delphi-Quellcode:
function WebSafeVal (aValue: Byte): Byte;
begin
  Result := 51 * ((aValue + 25) div 51);
end;
Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 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