Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi farbe invertieren??? (https://www.delphipraxis.net/34447-farbe-invertieren.html)

LoL 23. Nov 2004 13:35


farbe invertieren???
 
hi zusammen!

gibt es eine einfache möglichkeit eine TColor farbe zu invertieren? sozusagen die komplementfrabe dazu?
mir fällt dazu nur (bitweises?) negieren ein.

Dax 23. Nov 2004 13:39

Re: farbe invertieren???
 
Negieren stimmt schon, allerdings nur auf einem Umweg, da TColor 32Bit lang ist, die eigentliche Farbe jedoch nur 24Bit.
Delphi-Quellcode:
function InvertTColor(Color: TColor): TColor;
begin
  Result := ((not Color) and $00FFFFFF) or (Color and $FF000000); // Damit nur die Farbe invertiert wird
end;

LoL 23. Nov 2004 13:48

Re: farbe invertieren???
 
cool danke

Dakuba 23. Nov 2004 14:20

Re: farbe invertieren???
 
ja danke auch von mir für den tip kann das n admin vielleicht in die code-library schreiben...wär nützlich

Matze 23. Nov 2004 14:30

Re: farbe invertieren???
 
Zitat:

Zitat von Dakuba
ja danke auch von mir für den tip kann das n admin vielleicht in die code-library schreiben...wär nützlich

erledigt, danke ;)

http://www.delphipraxis.net/internal...=271892#271892

Muetze1 23. Nov 2004 22:15

Re: farbe invertieren???
 
Moin!

OK, wenn ihr das macht, dann muss ich protestieren und auf einen schwerwiegenden Fehler hinweisen:
Wenn der Farbwert der übergeben wird von einem palettenbasierenden Context kommt, dann sind die unteren 24 Bit nicht die RGB Farbwerte sondern der Index in der Farbpalette und daher für dann der Code nicht funktionieren. Daher wäre ein vorheriger Aufruf der ColorToRGB() Funktion ratsam, damit man garantiert auch die RGB Anteile in den 24 Bit hat. Auch sorgt dieser Aufruf dafür, dass man der Funktion auch konstanten wie clWindowText oder clBorder übergeben kann...

MfG
Muetze1

Dax 24. Nov 2004 06:24

Re: farbe invertieren???
 
Dann eben so:
Delphi-Quellcode:
function InvertTColor(Color: TColor): TColor;
begin
  Result := (not ColorToRGB(Color)) and $00FFFFFF;
end;
Steht übrigens auch in der CodeLib ;)


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