Convertir códigos de color en C#

Respuesta rápida

Para convertir códigos de color en C#, analice una cadena de color CSS con Color.FromString() y genere el valor con ToRgbString(), ToRgbHexString() o ToRgbaHexString(). Este flujo permite convertir HEX a RGB, RGB a HEX, HSL a HEX, nombres de color a HEX y normalizar los colores SVG en un formato uniforme.

Este artículo muestra cómo convertir códigos de color mediante programación con Aspose.SVG for .NET. La clase Color analiza cadenas CSS en formatos HEX, RGB, RGBA, HSL, HSLA, HWB, LAB, LCH, OKLAB, OKLCH, CMYK y NCOL, además de nombres de color, y las convierte al formato de salida necesario.

La conversión de colores resulta útil para comparar colores SVG, normalizar valores extraídos de un archivo, preparar una paleta o transformar formatos CSS para informes y validación.

Aprenderá a:

API de Aspose.SVG utilizadas

Los ejemplos utilizan la API de dibujo de Aspose.SVG:

APIUso
ColorRepresenta un color analizado y lo convierte entre formatos de salida
Color.FromString()Analiza cadenas CSS como #ff31ca, rgb(...), hsl(...), black o cmyk(...)
Color.FromRgb()Crea un color a partir de componentes RGB
Color.FromHsl()Crea un color a partir de componentes HSL
Color.FromCmyk()Crea un color a partir de componentes CMYK
ToRgbString()Genera el color como rgb(R, G, B)
ToRgbHexString()Genera el color como #RRGGBB
ToRgbaHexString()Genera el color como #RRGGBBAA
Convert()Devuelve los componentes en el ColorModel seleccionado

Tareas habituales de conversión de color

La tabla resume los flujos más comunes en C#:

TareaPatrón de C#
Convertir HEX a RGBColor.FromString("#ff31ca").ToRgbString()
Convertir RGB a HEXColor.FromString("rgb(255, 49, 202)").ToRgbHexString()
Convertir HSL a HEXColor.FromString("hsl(315, 100%, 60%)").ToRgbHexString()
Convertir un nombre de color a HEXColor.FromString("black").ToRgbHexString()
Convertir RGBA a HEX de ocho dígitosColor.FromString("rgba(255, 49, 202, 0.5)").ToRgbaHexString()
Normalizar colores SVGAnalizar cada valor con Color.FromString() y generar ToRgbHexString()

Ejemplos de conversión de color

Los siguientes ejemplos cubren las tareas principales en C#: convertir HEX, RGB, HSL, colores con nombre y RGBA, crear colores desde componentes y normalizar colores extraídos de SVG.

Convertir HEX a RGB

Analice el valor HEX con Color.FromString() y llame a ToRgbString():

1using Aspose.Svg.Drawing;
2using System;
 1// Convert a HEX color value to RGB format in C#
 2
 3// Parse HEX color from a string
 4Color color = Color.FromString("#ff31ca");
 5
 6// Convert HEX to RGB
 7string rgbColor = color.ToRgbString();
 8
 9// Print result to console
10Console.WriteLine(rgbColor);
11// Result: rgb(255, 49, 202)

Use esta conversión cuando reciba colores como códigos HEX de CSS pero necesite RGB para informes, validación o procesamiento posterior de imágenes.

Convertir RGB a HEX

Analice la cadena RGB y genere un valor HEX normalizado de seis dígitos con ToRgbHexString():

1using Aspose.Svg.Drawing;
2using System;
 1// Convert an RGB color value to HEX format in C#
 2
 3// Parse RGB color from a string
 4Color color = Color.FromString("rgb(255, 49, 202)");
 5
 6// Convert RGB to HEX
 7string hexColor = color.ToRgbHexString();
 8
 9// Print result to console
10Console.WriteLine(hexColor);
11// Result: #FF31CA

Este flujo es útil cuando todos los colores extraídos de SVG o CSS deben utilizar el mismo formato.

Convertir HSL a HEX

SVG y CSS pueden almacenar colores con notación HSL. Puede analizar la cadena HSL y convertirla a HEX:

1using Aspose.Svg.Drawing;
2using System;
 1// Convert an HSL color value to HEX format in C#
 2
 3// Parse HSL color from a string
 4Color color = Color.FromString("hsl(315, 100%, 60%)");
 5
 6// Convert HSL to HEX
 7string hexColor = color.ToRgbHexString();
 8
 9// Print result to console
10Console.WriteLine(hexColor);
11// Result: #FF33CC

Use este patrón cuando las herramientas CSS, los sistemas de diseño o los temas almacenen colores como HSL, pero su aplicación necesite valores HEX para compararlos o mostrarlos.

Convertir colores con nombre a HEX

Color.FromString() puede analizar nombres de color CSS. Esto permite normalizar valores con nombre al procesar atributos SVG.

1using Aspose.Svg.Drawing;
2using System;
 1// Convert a named color value to HEX format in C#
 2
 3// Parse a named color from a string
 4Color color = Color.FromString("black");
 5
 6// Convert named color to HEX
 7string hexColor = color.ToRgbHexString();
 8
 9// Print result to console
10Console.WriteLine(hexColor);
11// Result: #000000

Es especialmente útil en SVG, ya que las herramientas de diseño y los archivos escritos a mano pueden combinar nombres, valores HEX y funciones de color CSS.

Convertir RGBA y conservar el canal alfa

Si un color contiene transparencia, utilice una salida HEX de ocho dígitos para conservar el canal alfa. Este canal es importante para rellenos SVG, trazos, sombras, superposiciones y elementos de interfaz semitransparentes.

1using Aspose.Svg.Drawing;
2using System;
1// Convert an RGBA color value to 8-digit HEX format in C#
2
3// Parse RGBA color from a string
4Color color = Color.FromString("rgba(255, 49, 202, 0.5)");
5
6// Convert RGBA to 8-digit HEX
7Console.WriteLine(color.ToRgbaHexString());
8// Result: #FF31CA7F

Use ToRgbHexString() si solo necesita el color RGB. Para conservar la transparencia en HEX, use ToRgbaHexString().

Consulte Opacidad SVG y colores transparentes en C# para flujos centrados en transparencia.

Crear colores desde valores de componentes

Puede crear colores directamente desde componentes sin analizar una cadena. El ejemplo crea el mismo rojo a partir de componentes RGB, HSL y CMYK:

1using Aspose.Svg.Drawing;
2using System;
 1// Create the same red color from RGB, HSL, and CMYK components in C#
 2
 3// Create a color from RGB components
 4Color rgbColor = Color.FromRgb(255, 0, 0);
 5
 6// Create a color from HSL components
 7Color hslColor = Color.FromHsl(0, 1, 0.5f);
 8
 9// Create a color from CMYK components
10Color cmykColor = Color.FromCmyk(0, 1, 1, 0);
11
12// Print converted color values to console
13Console.WriteLine(rgbColor.ToRgbHexString());
14Console.WriteLine(hslColor.ToRgbString());
15Console.WriteLine(cmykColor.ToRgbHexString());
16// Result:
17// #FF0000
18// rgb(255, 0, 0)
19// #FF0000

Este enfoque resulta práctico para generadores de paletas, procesos de importación y aplicaciones que reciben canales de color desde una base de datos o controles de interfaz.

Normalizar colores SVG a HEX

Los colores equivalentes pueden aparecer en SVG con formatos distintos:

1<rect fill="#808080" />
2<circle fill="rgb(128, 128, 128)" />
3<path stroke="hsl(0, 0%, 50%)" />

Para comparar, generar informes o eliminar duplicados, normalice los valores con Color.FromString() y ToRgbHexString():

1using Aspose.Svg.Drawing;
2using System;
3using System.Collections.Generic;
 1// Normalize SVG color values to HEX format in C#
 2
 3
 4// Store equivalent colors written in different formats
 5List<string> sourceColors = new List<string>
 6{
 7    "#808080",
 8    "rgb(128, 128, 128)",
 9    "hsl(0, 0%, 50%)"
10};
11
12foreach (string sourceColor in sourceColors)
13{
14    // Parse each color value from a string
15    Color color = Color.FromString(sourceColor);
16
17    // Convert each color to HEX and print the result
18    Console.WriteLine($"{sourceColor} -> {color.ToRgbHexString()}");
19}

Salida esperada:

1#808080 -> #808080
2rgb(128, 128, 128) -> #808080
3hsl(0, 0%, 50%) -> #808080

Si primero necesita extraer colores de un archivo SVG real, consulte Extraer colores SVG en C#.

Conversor de color en línea

Puede convertir códigos de color en línea o mediante programación. El Conversor de color gratuito admite nombres y formatos como HEX, RGB, HSL, HSV, LAB, HWB, CMYK, LCH, XYZ y NCOL. Introduzca un código o elija un color visualmente para ver valores equivalentes en otros formatos.

Formatos de códigos de color

Los formatos describen el mismo color visible de maneras diferentes. Algunos son comunes en CSS y SVG, mientras otros se utilizan en sistemas de diseño, impresión o ciencia del color. La sintaxis CSS se define en CSS Color Module Level 4.

RGB y RGBA

RGB (Red, Green, Blue) define un color mediante canales rojo, verde y azul en el espacio sRGB. En CSS y SVG suele escribirse como rgb(255, 0, 0) o con porcentajes como rgb(100%, 0%, 0%). RGBA (Red, Green, Blue, Alpha) añade un canal alfa, por ejemplo rgba(255, 0, 0, 0.5).

Use RGB para colores de pantalla e interoperabilidad con API de imágenes. Use RGBA cuando la transparencia deba formar parte del valor, como en rellenos SVG, trazos, sombras o superposiciones semitransparentes. El alfa del color y las propiedades de opacidad SVG están relacionados, pero no son idénticos: rgba(...) guarda transparencia en el color, mientras opacity, fill-opacity y stroke-opacity son propiedades independientes.

HEX

HEX (hexadecimal) es una notación sRGB compacta para CSS y SVG. Puede escribirse como #RGB, #RGBA, #RRGGBB o #RRGGBBAA. En la forma larga, RR, GG y BB almacenan los canales entre 00 y FF. AA representa el alfa: 00 es totalmente transparente y FF totalmente opaco. Consulte la notación HEX de CSS Color Module Level 4 y la referencia MDN <hex-color>.

HEX se usa ampliamente en atributos SVG, declaraciones CSS, sistemas de diseño, conjuntos de iconos y configuración de interfaces web. También es un buen formato normalizado porque es compacto, estable y fácil de comparar como texto.

HSL y HSLA

HSL representa colores mediante tono, saturación y luminosidad. El tono es un ángulo en la rueda de color, la saturación controla la intensidad y la luminosidad la proximidad al negro o al blanco. HSLA (Hue, Saturation, Lightness, Alpha) añade transparencia alfa.

HSL facilita la creación de variantes más claras, oscuras o saturadas. En sistemas de diseño suele ser más intuitivo modificar luminosidad y saturación que canales RGB individuales. Para comparar, informar o limpiar SVG, los valores HSL suelen normalizarse a RGB o HEX.

HSV y HWB

HSV (Hue, Saturation, Value) almacena tono, saturación y valor. Es habitual en selectores de color y herramientas de diseño. HWB almacena tono, blancura y negrura, y permite generar variantes claras y oscuras.

Estos formatos son menos comunes en SVG escrito a mano, pero pueden proceder de conversores, exportaciones de diseño o editores de paletas. Convierta HSV o HWB a un formato común antes de compararlos con atributos SVG.

LAB, LCH, OKLAB y OKLCH

LAB y LCH son espacios perceptuales donde los cambios numéricos se aproximan mejor a los cambios visibles. OKLAB y OKLCH son modelos más recientes utilizados en CSS moderno y flujos de diseño. Son útiles cuando las diferencias RGB no describen bien la diferencia percibida.

Use estos modelos para paletas, accesibilidad, análisis de diferencias de color o escalas uniformes. Para SVG puede convertir el resultado a HEX o RGB cuando el renderizador o las reglas de validación requieran formatos web tradicionales.

CMYK y XYZ

CMYK (Cyan, Magenta, Yellow, Key/Black) está orientado a impresión y se basa en cian, magenta, amarillo y negro. Es común en preimpresión, pero no es la sintaxis habitual de los atributos SVG ni del CSS del navegador. XYZ es un espacio CIE independiente del dispositivo utilizado en ciencia del color y procesos de conversión.

Use CMYK para datos de impresión y XYZ para conversiones técnicas o sistemas de gestión del color. Antes de escribir fill, stroke o stop-color en SVG web, convierta esos colores a una representación basada en RGB, como HEX o RGB.

Errores comunes y soluciones

ProblemaCausaSolución
Los colores equivalentes no coincidenUno está escrito como nombre y otro como HEX o RGBNormalice ambos con Color.FromString() y ToRgbHexString() antes de compararlos
Se pierde la transparenciaEl código usa ToRgbString() o ToRgbHexString() para RGBAUse ToRgbaHexString() para conservar alfa en HEX
Un valor SVG no se puede analizar como colornone, currentColor y url(#id) no son colores directosFiltre esos valores antes de llamar a Color.FromString()
La salida difiere del texto originalLa conversión normaliza la notación o las mayúsculasConserve la cadena original por separado si su formato es importante
Se espera una cadena CSS CMYK o LABLa API representa esos modelos como componentesUse Convert(ColorModel) para obtener los componentes del modelo elegido

Preguntas frecuentes

¿Cómo convierto HEX a RGB en C#?
Analice Color.FromString("#ff31ca") y llame a ToRgbString() para obtener rgb(255, 49, 202).

¿Cómo convierto RGB a HEX en C#?
Use Color.FromString("rgb(255, 49, 202)") y después ToRgbHexString() para obtener un valor #RRGGBB normalizado.

¿Puedo convertir HSL a HEX en C#?
Sí. Analice Color.FromString("hsl(315, 100%, 60%)") y llame a ToRgbHexString().

¿Puedo analizar nombres de color CSS en C#?
Sí. Color.FromString() admite nombres CSS. Después puede generar el valor con ToRgbHexString() u otro método. Para ejemplos con salida esperada, use nombres inequívocos como black.

¿Cómo normalizo colores SVG a HEX?
Obtenga colores directos de atributos o estilos SVG, omita none, currentColor y url(#id), analice cada valor con Color.FromString() y genere ToRgbHexString().

¿Cómo conservo la transparencia al convertir colores?
Use ToRgbaHexString() para una salida HEX de ocho dígitos. RGB y HEX de seis dígitos no conservan alfa.

¿Aspose.SVG puede convertir colores CMYK, LAB, LCH, OKLAB y OKLCH?
Sí. La clase Color admite varios espacios. Use Color.FromString() para cadenas CSS compatibles o métodos como FromCmyk(), FromLab(), FromLch(), FromOklab() y FromOklch().

Recursos relacionados

El Conversor de color es una aplicación gratuita para transformar valores entre formatos. Introduzca un código para obtener valores equivalentes inmediatamente.

Banner del conversor de color en línea