texto poner online letras letra fondo degradado degradadas como colores arcoiris c# colors gradient

c# - poner - texto arcoiris instagram



¿Cómo obtengo un gradiente de color de arco iris en C#? (6)

Me gustaría tener una enumeración de colores basada en los colores del arco iris (rojo ... amarillo ... verde ... azul ...).

Veo básicamente dos formas de hacer eso:

  1. Crea una tabla de búsqueda que contenga algunos colores de referencia importantes e interpola entre ellos. No me gusta esta idea en absoluto.

  2. Aplicar algunas matemáticas más o menos sofisticadas. Probablemente menos, pero no veo cómo funciona. ¿Algunas ideas?

(Ah, y mientras hice una investigación SO, no encontré buenos resultados. Si esta pregunta ya se publicó, por favor, indíqueme la ubicación y la eliminaré).

Edición: preferiría tener esta tecnología independiente de la utilizada para mostrar el gradiente. Por ejemplo, algo como GetRainbowColor (float f) con f que varía de 0 (rojo) a 1 (violeta) funcionaría muy bien.


Aquí hay uno que me gusta usar (la salida es un color HTML RGB):

public static String Rainbow(Int32 numOfSteps, Int32 step) { var r = 0.0; var g = 0.0; var b = 0.0; var h = (Double)step / numOfSteps; var i = (Int32)(h * 6); var f = h * 6.0 - i; var q = 1 - f; switch (i % 6) { case 0: r = 1; g = f; b = 0; break; case 1: r = q; g = 1; b = 0; break; case 2: r = 0; g = 1; b = f; break; case 3: r = 0; g = q; b = 1; break; case 4: r = f; g = 0; b = 1; break; case 5: r = 1; g = 0; b = q; break; } return "#" + ((Int32)(r * 255)).ToString("X2") + ((Int32)(g * 255)).ToString("X2") + ((Int32)(b * 255)).ToString("X2"); }



En winforms (o cualquier cosa que use GDI +) puedes usar System.Drawing.Drawing2D.LinearGradientBrush para hacer la interpolación por ti.

System.Windows.Media.GradientBrush de WPF también podría funcionar. Es abstracto, por lo que podría terminar con LinearGradientBrush de WPF. Está en un espacio de nombres diferente al otro.

EDITAR: ya que la pregunta se editó para indicar que desea ser independiente de la tecnología, no creo que se aplique esta respuesta. Voy a dejarlo aquí por ahora en caso de que alguien esté buscando Gradientes en C #, pero si alguien encuentra eso objetable, eliminaré la respuesta.

Hice una comprobación rápida para ver si al menos podría obtener algunas de las funciones de una manera más independiente (como obtener una matriz de Point o algo así). No parece ser el caso.


Esto es más fácil de lo que piensas.

Primero necesita una función de conversión hsv o hsl a rgb. Aquí está el código C # para hacer esa conversión .

Luego, simplemente repita todos los valores posibles del tono h mientras mantiene la saturation y la luminosidad constantes.

Si quieres 100 colores del arcoiris espaciados igualmente:

for(double i = 0; i < 1; i+=0.01) { ColorRGB c = HSL2RGB(i, 0.5, 0.5); //do something with the color }

También puede crear fácilmente la función deseada GetRainbowColor esta manera agregando todos estos colores a una List<ColorRGB> y devolviendo el color indexado apropiado.


Me gusta usar esto:

public static Color Rainbow(float progress) { float div = (Math.Abs(progress % 1) * 6); int ascending = (int) ((div % 1) * 255); int descending = 255 - ascending; switch ((int) div) { case 0: return Color.FromArgb(255, 255, ascending, 0); case 1: return Color.FromArgb(255, descending, 255, 0); case 2: return Color.FromArgb(255, 0, 255, ascending); case 3: return Color.FromArgb(255, 0, descending, 255); case 4: return Color.FromArgb(255, ascending, 0, 255); default: // case 5: return Color.FromArgb(255, 255, 0, descending); } }


http://colorfulconsole.com/ Permite casi todo lo que está buscando, también se puede instalar como un paquete NuGet. No es exactamente un gradiente de arco iris. Pero puede escribir gradientes en la consola, también esto confunde el IDE entre

Colorful.Console

y

System.Console

Así que asegúrese de definir la consola correcta.