Escribí un método de utilidad para exactamente este propósito. :)
/// <summary>Blends the specified colors together.</summary>
/// <param name="color">Color to blend onto the background color.</param>
/// <param name="backColor">Color to blend the other color onto.</param>
/// <param name="amount">How much of <paramref name="color"/> to keep,
/// “on top of” <paramref name="backColor"/>.</param>
/// <returns>The blended colors.</returns>
public static Color Blend(this Color color, Color backColor, double amount)
{
byte r = (byte) ((color.R * amount) + backColor.R * (1 - amount));
byte g = (byte) ((color.G * amount) + backColor.G * (1 - amount));
byte b = (byte) ((color.B * amount) + backColor.B * (1 - amount));
return Color.FromArgb(r, g, b);
}
Combinarlos ¿cómo? Si mezclas pintura roja con pintura azul obtienes pintura púrpura, pero si miras una bola azul a través de un cristal rojo, la bola se ve negra, no morada. ¿Qué tipo de mezcla tenías en mente? –
@Eric Lippert: Creo que era bastante claro para todos que se refería a la fusión alfa. Cualquier otro tipo de mezcla es mucho más raro y más especializado, por lo que lo habría mencionado explícitamente. – Timwi
@Timwi: No estaba claro para mí, por lo que no estaba claro para todos. Quizás estaba claro para todos menos para mí. –