![]() |
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. |
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; |
Re: farbe invertieren???
cool danke
|
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
|
Re: farbe invertieren???
Zitat:
![]() |
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 |
Re: farbe invertieren???
Dann eben so:
Delphi-Quellcode:
Steht übrigens auch in der CodeLib ;)
function InvertTColor(Color: TColor): TColor;
begin Result := (not ColorToRGB(Color)) and $00FFFFFF; end; |
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