komplementäre Farbe finden
Hallo,
ich setze in einem Grid ein paar Farben (Brush.Color). Damit der Text lesbar ist, will ich den Text in der komplementäre Farbe schreiben. unter http://dotnetpulse.blogspot.com/2007...ite-color.html habe ich das hier gefunden. public static Color CalculateOppositeColor(Color clr) { return Color.FromArgb(255 - clr.R, 255 - clr.G, 255 - clr.B); } In Delphi umgesetzt:
Delphi-Quellcode:
Bei gelbem Hintergrund (clYellow) gibt das jetzt weiss.
function RGB2TColor(const R, G, B: Byte): Integer;
begin // convert hexa-decimal values to RGB Result := R + G shl 8 + B shl 16; end; procedure TColor2RGB(const Color: TColor; var R, G, B: Byte); begin // convert hexa-decimal values to RGB R := Color and $FF; G := (Color shr 8) and $FF; B := (Color shr 16) and $FF; end; function GetOppositeColor(theColor: TColor): TColor; var R, G, B: Byte; begin TColor2RGB(theColor, R, G, B); R:= 255-R; G:= 255-G; B:= 255-B; Result:= RGB2TColor(R,G,B); end; { TResourcePlanClass_Int__ProjectViewEx.GetOppositeColor } Das ist aber nicht dass, was ich erwartet hatte. Wo steckt der Fehler ? Danke Heiko |
Re: komplementäre Farbe finden
Erst einmal hätte ich zu bemängeln, dass du als Programmiersprache C# angegeben hast, ändere das doch bitte ganz kurz ;)
Die Funktionen zur Umrechnung von TColor zu RGB kannst du dir sparen. Es gibt bereits Funktionen, die dies tun:
Delphi-Quellcode:
Du könntest doch auch einfach die Farben xor'en, der Kontrast müsste ausreichend gut sein.
Farbe := RGB(Red, Green, Blue);
// und R := GetRValue(Farbe); G := GetGValue(Farbe); B := GetBValue(Farbe); // somit würde das Invertieren so aussehen: InvertierteFarbe := RGB(255 - GetRValue(Farbe), 255 - GetGValue(Farbe), 255 - GetBValue(Farbe); |
Re: komplementäre Farbe finden
Zitat:
|
Re: komplementäre Farbe finden
Liste der Anhänge anzeigen (Anzahl: 1)
Mist, dabei war ich mir so sicher :wink: Bin auf das Problem noch nicht gestoßen, danke für die Info :)
//Edit: Gerade mal ausprobiert - auch mit der Methode, wie der TS sie vorschlug, gibt es dabei Probleme. Aber allgemein stellt sich für mich die Frage: Wie bildet man die komplementäre Farbe eines Grautons (z.b. 7F7F7F / 127,127,127)?
Delphi-Quellcode:
procedure tform1.newcolors;
begin panel1.color := rgb(trackbar1.position, trackbar2.position, trackbar3.position); panel2.color := panel1.color xor clwhite; panel3.color := rgb(255 - getrvalue(panel1.color), 255 - getgvalue(panel1.color), 255 - getbValue(panel1.color)); panel1.font.color := panel2.color; end; |
Re: komplementäre Farbe finden
Zitat:
Die Frage nach dem Kontrast gestellt, wäre was anderes. Was hat den stärksten Kontrast zu grau? Weiß und Schwarz. Das ganze Problem stellt sich nur bei der reinen Komplementärfarbe. Wenn du aber den grösstmöglichen Kontrast willst, dann ist das Komplement nicht hilfreich. Da müssen die Farbräume herangezogen werden. |
Re: komplementäre Farbe finden
Hallo,
ich will nur, dass man die Schrift lesen kann *bescheiden ist* Heiko |
Re: komplementäre Farbe finden
|
Re: komplementäre Farbe finden
Hallo,
also das mit schwarz / weiss (shmia) klappt zumindestens. Ich werde erst mal dabei bleiben. Danke Heiko |
Re: komplementäre Farbe finden
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 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