AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

komplementäre Farbe finden

Ein Thema von hoika · begonnen am 17. Apr 2008 · letzter Beitrag vom 18. Apr 2008
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#1

komplementäre Farbe finden

  Alt 17. Apr 2008, 16:30
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:
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 }
Bei gelbem Hintergrund (clYellow) gibt das jetzt weiss.
Das ist aber nicht dass, was ich erwartet hatte.

Wo steckt der Fehler ?


Danke
Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#2

Re: komplementäre Farbe finden

  Alt 17. Apr 2008, 17:13
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:
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);
Du könntest doch auch einfach die Farben xor'en, der Kontrast müsste ausreichend gut sein.
Frank Dumont
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: komplementäre Farbe finden

  Alt 17. Apr 2008, 17:16
Zitat von rawsoul:
Du könntest doch auch einfach die Farben xor'en, der Kontrast müsste ausreichend gut sein.
Echt? Bitte ein Beispiel mit grau!
  Mit Zitat antworten Zitat
Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#4

Re: komplementäre Farbe finden

  Alt 17. Apr 2008, 17:40
Mist, dabei war ich mir so sicher 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;
Angehängte Dateien
Dateityp: exe inv_181.exe (176,5 KB, 10x aufgerufen)
Frank Dumont
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: komplementäre Farbe finden

  Alt 17. Apr 2008, 19:23
Zitat von rawsoul:
Wie bildet man die komplementäre Farbe eines Grautons (z.b. 7F7F7F / 127,127,127)?
Alles richtig soweit, da die Komplementärfarbe genauso grau ist. Ist doch das gleiche Problem wie mit dem Komplementär zu einem 2 Farben Bild: Klappt alles wunderbar, bis du auf ein Bild stösst wo jeder zweite Pixel gesetzt ist. Da hast du dann als Komplementärbild dazu alle Pixel um ein verschoben, aber das erkennt keiner.

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.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: komplementäre Farbe finden

  Alt 17. Apr 2008, 20:07
Hallo,

ich will nur, dass man die Schrift lesen kann
*bescheiden ist*


Heiko
Heiko
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: komplementäre Farbe finden

  Alt 17. Apr 2008, 21:40
Hallo Heiko,

hast du es schon mit der Routine von shmia versucht?

Gruß Hawkeye
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: komplementäre Farbe finden

  Alt 18. Apr 2008, 06:45
Hallo,

also das mit schwarz / weiss (shmia) klappt zumindestens.
Ich werde erst mal dabei bleiben.

Danke


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

Re: komplementäre Farbe finden

  Alt 18. Apr 2008, 13:20
Vielleicht hilft es ja auch, mit Helligkeitswerten zu arbeiten...
hier

stahli
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:03 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