Berechnen Sie die Farbe an einem bestimmten Punkt auf einen Verlauf zwischen zwei Farben?
So ist dies im wesentlichen die Methode, die ich möchte zu schreiben (in Objective-C/Cocoa, mit UIColors
, aber ich bin wirklich nur daran interessiert, die zugrunde liegende Mathematik):
+ (UIColor *)colorBetweenColor:(UIColor *)startColor andColor:(UIColor *)endColor atLocation:(CGFloat)location;
So als ein Beispiel, sagen wir ich habe zwei Farben, reines rot und reines blau. Gegeben ein linearer Verlauf zwischen den beiden, ich will zum berechnen der Farbe, die bei, sagen wir, die 33% - Marke auf das Gefälle:
Wenn ich also nenne meine Methode so:
UIColor *resultingColor = [UIColor colorBetweenColor:[UIColor redColor] andColor:[UIColor blueColor] atLocation:0.33f];
Ich würde die resultierende Farbe an 'B', und ähnlich, vorbei 0.0f
als den Ort zurückkehren würde, Farbe "A", und 1.0f
zurückkehren würde Farbe 'C'.
Also im Grunde meine Frage ist, wie würde ich mich über das mischen der RGB-Werte der beiden Farben und der Bestimmung der Farbe bei einem bestimmten 'Ort' zwischen Ihnen?
- Möchten Sie vielleicht einen Blick auf die Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du einfach Linear interpolieren der rote, der grüne und der Blaue Kanal so:
wo
percent
ist ein Wert zwischen 0 und 1 (location
in Ihre erste Prototyp-Methode).RGB-Farbraum ist wie ein Kreis. Mit der höchsten Sättigung entlang der äußeren Grenze, und Grau in der Mitte. Reisen von einer Farbe zu einer anderen, Sie würde vorzugsweise wollen, das zu tun, auf dem gleichen radius (Kreis)) aus der Mitte; also da, wo die Sättigung und-Wert gleich bleiben. In diesem Fall wird der Farbton verändert sich in einer linearen Weise. Sie werden sich nicht kreuzen in mehr Grauzone, als Sie Ihren linken und rechten Farben zunächst.
Reisen Sie aus einem inneren ring und einem äußeren ring, gehen Sie einfach nach oben (oder unten) die Sättigung, der wiederum Linear.
Sehen hier für Farb-Kreis (versuchen Sie es in z.B. paint.net)
Apple (iOS) Ziel-Klassen ermöglichen die Arbeit mit anderen Spektren als RGB.
Swift-version kann hilfreich sein, um jemanden.