Finden Sie die meisten lesbar Farbe von text, der gezeichnet wird, auf eine farbige Oberfläche

StackOverflow https://stackoverflow.com/questions/646068

Frage

Ich bin mir nicht sicher, wie Sie das zu Fragen, aber hier geht.

Ich zeichne mit einem gefüllten farbigen Rechteck auf dem Bildschirm.Die Farbe wird in form der R,G,B

Dann möchte ich zeichne text oben auf das Rechteck, aber die Farbe des Textes muss so beschaffen sein, dass Sie den besten Kontrast, was bedeutet, es ist lesbar.

Beispiel:

Wenn ich zeichnen Sie ein Schwarzes Rechteck, die offensichtliche Farbe für text wäre weiß.

Was ich auch versuchte, jetzt ist diese.Ich pass dieser Funktion wird die Farbe des Rechtecks und es gibt eine invertierte Farbe, die ich dann für meinen text.

Es funktioniert, aber es ist nicht der beste Weg.

Irgendwelche Vorschläge?

// eg. usage: Color textColor = GetInverseLuminance(rectColor);
private Color GetInverseLuminance(Color color)
{
    int greyscale = (int)(255 - ((color.R * 0.30f) + (color.G * 0.59f) + (color.B * 0.11f)));

    return Color.FromArgb(greyscale, greyscale, greyscale);
}
War es hilfreich?

Lösung

Eine einfache Methode, die garantiert ist, geben einen deutlich anderen Farbe zu wechseln das oberste bit der einzelnen Komponenten des RGB-triple.

Color inverse(Color c)
{
    return new Color(c.R ^ 0x80, c.G ^ 0x80, c.B ^ 0x80);
}

Wenn die ursprüngliche Farbe war #1AF283, die "inverse" wird #9A7203.

Der Kontrast von Bedeutung sein wird.Ich mache keine Garantien über die ästhetik.

Update, 2009/4/3: Ich experimentierte mit diesem und anderen Systemen.Ergebnisse mein blog.

Andere Tipps

Die meisten lesbar Farbe wird entweder weiß oder schwarz.Die 'beruhigende' Farbe wird etwas sein, das nicht weiß noch schwarz, wird es eine Farbe, die Kontraste leicht Ihre Hintergrundfarbe.Es gibt keine Möglichkeit, programmgesteuert tun dies, weil es subjektiv ist.Sie finden nicht die meisten lesbar Farbe, die für jeden, denn jeder sieht die Dinge anders.

Einige Tipps zu Farben, insbesondere in Bezug auf Vordergrund und hintergrund Gegenüberstellung, wie mit text.

Das menschliche Auge ist im wesentlichen eine einfache Linse, und kann daher nur effektiv den Fokus auf eine Farbe in einer Zeit.Die Linsen in den meisten modernen Kameras arbeiten, um dieses problem durch die Verwendung mehrerer Linsen unterschiedlicher brechungsindizes (chromatische Linsen), so dass alle Farben im Fokus stehen zu einer Zeit, aber das menschliche Auge ist nicht so weit.

Für diese Grund, Ihre Benutzer sollte nur den Fokus auf eine Farbe zu einer Zeit, um den text zu Lesen.Dies bedeutet, dass entweder der Vordergrund ist in der Farbe oder hintergrund, aber nie beide. Dies führt zu einem Zustand, der üblicherweise als Schwingung, in die das Auge schnell verschiebt den Fokus zwischen Vordergrund und hintergrund, Farben, versuchen zu beheben die Form, die aber niemals löst, die Form ist nie im Fokus, und es führt zu überanstrengung der Augen.

Ihre Funktion wird nicht arbeiten wenn Sie es mit RGB(127,127,127), denn es wird wieder die exakt gleichen Farbe.(Sie ändern Ihre Funktion zurück, die entweder schwarz oder weiß wäre leicht zu verbessern)

Der beste Weg, um immer über die Dinge lesbar ist weißer text mit schwarzem oder die andere Weise herum.

Es wird oft erreicht durch die erste Zeichnung schwarzer text auf (x-1,y-1),(x+1,y-1),(x+1,y-1),(x+1,x+1), und dann mit weißem text (x,y).

Alternativ können Sie zuerst zeichnen Sie einen semi-transparenten schwarzen block, und dann non-transparent white text over it.Das sorgt dafür, dass es immer eine bestimmte Menge an Kontrast zwischen dem hintergrund und den text.

warum Grau?entweder schwarz oder weiß wäre am besten.weiß auf dunklen Farben, schwarz auf hellen Farben.nur sehen, ob die Helligkeit ist über die Schwelle und wählen Sie eine oder die andere

(Sie brauchen nicht den .net, c# oder asp.net tags, by the way)

Sie studieren müssen einige Farbe Theorie.Ein Programm namens "Farbe Rad Pro" ist ein Spaß zu spielen, um mit und Ihnen die Allgemeine Idee.

Im wesentlichen suchen Sie nach kostenlosen Farben für eine bestimmte Farbe.

Sagte, ich denke, Sie werden feststellen, dass, während der Farbenlehre hilft, brauchen Sie noch ein menschliches Auge, um die Feinabstimmung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top