Given a source color of any hue by the system or user, I'd like a simple algorithm I can use to work out a lighter or darker variants of the selected color. Similar to effects used on Windows Live Messenger for styling the user interface.
Language is C# with .net 3.5.
Responding to comment: Color format is (Alpha)RGB. With values as bytes or floats.
Marking answer: For the context of my use (a few simple UI effects), the answer I'm marking as accepted is actually the most simple for this context. However, I've given up votes to the more complex and accurate answers too. Anyone doing more advanced color operations and finding this thread in future should definitely check those out. Thanks SO. 🙂
Best Answer
In XNA there is the
Color.Lerp
static method that does this as the difference between two colours.Lerp
is a mathematical operation between two floats that changes the value of the first by a ratio of the difference between them.Here's an extension method to do it to a
float
:So then a simple lerp operation between two colours using RGB would be:
An example of applying this would be something like: