Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
要在 C# 中转换颜色代码,请使用 Color.FromString() 解析 CSS 颜色字符串,然后通过 ToRgbString()、 ToRgbHexString() 或 ToRgbaHexString() 输出结果。此流程可将 HEX 转为 RGB、RGB 转为 HEX、HSL 转为 HEX、命名颜色转为 HEX,并将 SVG 颜色标准化为统一格式。
本文介绍如何使用 Aspose.SVG for .NET 以编程方式转换颜色代码。 Color 类可以解析 HEX、RGB、RGBA、HSL、HSLA、HWB、LAB、LCH、OKLAB、OKLCH、CMYK、NCOL 以及命名颜色,并将其转换为所需的输出格式。
颜色转换适用于比较 SVG 颜色、标准化从文件中提取的值、准备调色板,以及为报告或验证转换 CSS 颜色格式。
您将学习如何:
示例使用 Aspose.SVG 绘图 API:
| API | 用途 |
|---|---|
| Color | 表示已解析的颜色并在输出格式之间进行转换 |
| Color.FromString() | 解析 #ff31ca、rgb(...)、hsl(...)、black 或 cmyk(...) 等 CSS 颜色字符串 |
| Color.FromRgb() | 根据 RGB 分量创建颜色 |
| Color.FromHsl() | 根据 HSL 分量创建颜色 |
| Color.FromCmyk() | 根据 CMYK 分量创建颜色 |
| ToRgbString() | 将颜色输出为 rgb(R, G, B) |
| ToRgbHexString() | 将颜色输出为 #RRGGBB |
| ToRgbaHexString() | 将颜色输出为 #RRGGBBAA |
| Convert() | 返回所选 ColorModel 的颜色分量 |
下表汇总了 C# 中常见的颜色转换流程:
| 任务 | C# 用法 |
|---|---|
| HEX 转 RGB | Color.FromString("#ff31ca").ToRgbString() |
| RGB 转 HEX | Color.FromString("rgb(255, 49, 202)").ToRgbHexString() |
| HSL 转 HEX | Color.FromString("hsl(315, 100%, 60%)").ToRgbHexString() |
| 命名颜色转 HEX | Color.FromString("black").ToRgbHexString() |
| RGBA 转八位 HEX | Color.FromString("rgba(255, 49, 202, 0.5)").ToRgbaHexString() |
| 标准化 SVG 颜色 | 使用 Color.FromString() 解析每个值,并通过 ToRgbHexString() 输出 |
以下示例涵盖 C# 中的主要任务,包括转换 HEX、RGB、HSL、命名颜色和 RGBA,根据分量创建颜色,以及标准化从 SVG 中提取的颜色。
使用 Color.FromString() 解析 HEX 值,然后调用 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)当颜色以 CSS HEX 代码提供,而报告、验证或后续图像处理需要 RGB 时,请使用此转换。
解析 RGB 字符串,并使用 ToRgbHexString() 输出标准化的六位 HEX 值:
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当所有提取的 SVG 或 CSS 颜色都需要使用同一格式时,此方法非常有用。
SVG 和 CSS 可以使用 HSL 表示颜色。您可以解析 HSL 字符串并将其转换为 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当 CSS 工具、设计系统或主题以 HSL 存储颜色,而应用程序需要 HEX 进行比较或输出时,请使用此方法。
Color.FromString() 可以解析 CSS 颜色名称,因此在处理 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这对 SVG 尤其有用,因为设计工具和手写文件可能同时包含颜色名称、HEX 值和 CSS 颜色函数。
如果颜色包含透明度,请使用八位 HEX 输出以保留 Alpha 通道。该通道对于半透明 SVG 填充、描边、阴影、叠加层和界面元素十分重要。
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如果只需要 RGB 颜色,请使用 ToRgbHexString();如果需要在 HEX 中保留透明度,请使用 ToRgbaHexString()。
有关透明度工作流程,请参阅 C# 中的 SVG 不透明度和透明颜色。
无需解析字符串即可直接根据分量创建颜色。以下示例分别使用 RGB、HSL 和 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此方法适用于调色板生成器、导入流程,以及从数据库或界面控件接收颜色通道的应用程序。
SVG 中的等效颜色可能采用不同格式:
1<rect fill="#808080" />
2<circle fill="rgb(128, 128, 128)" />
3<path stroke="hsl(0, 0%, 50%)" />为了比较、生成报告或去重,请使用 Color.FromString() 和 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}预期输出:
1#808080 -> #808080
2rgb(128, 128, 128) -> #808080
3hsl(0, 0%, 50%) -> #808080如果需要先从实际 SVG 文件中提取颜色,请参阅 在 C# 中提取 SVG 颜色。
您可以在线或通过代码转换颜色。 颜色转换器免费工具支持颜色名称以及 HEX、RGB、HSL、HSV、LAB、HWB、CMYK、LCH、XYZ 和 NCOL。输入颜色代码或直观选择颜色,即可查看其他格式的等效值。
不同格式以不同方式描述相同的可见颜色。有些常用于 CSS 和 SVG,另一些用于设计系统、印刷或色彩科学。CSS 颜色语法由 CSS Color Module Level 4 定义。
RGB(Red、Green、Blue)通过 sRGB 色彩空间中的红、绿、蓝通道定义颜色。在 CSS 和 SVG 中,常写为 rgb(255, 0, 0),也可使用 rgb(100%, 0%, 0%) 等百分比。RGBA(Red、Green、Blue、Alpha)增加 Alpha 通道,例如 rgba(255, 0, 0, 0.5)。
RGB 适用于屏幕颜色和图像 API。RGBA 适用于透明度属于颜色值本身的情况,例如半透明 SVG 填充、描边、阴影或叠加层。颜色 Alpha 与 SVG 不透明度属性相关但并不相同:rgba(...) 在颜色值中存储透明度,而 opacity、fill-opacity 和 stroke-opacity 是独立的 SVG 属性。
HEX(十六进制)是 CSS 和 SVG 中紧凑的 sRGB 表示法,可写为 #RGB、#RGBA、#RRGGBB 或 #RRGGBBAA。在完整形式中,RR、GG 和 BB 存储 00 到 FF 的通道值,AA 表示 Alpha:00 为完全透明,FF 为完全不透明。请参阅 CSS Color Module Level 4 的
HEX 表示法以及 MDN
<hex-color> 参考。
HEX 广泛用于 SVG 属性、CSS 声明、设计系统、图标集和 Web 界面配置。它也适合作为标准化输出,因为格式紧凑、稳定,并且易于按文本比较。
HSL 通过色相、饱和度和亮度表示颜色。色相是色轮上的角度,饱和度控制颜色强度,亮度控制颜色接近黑色或白色的程度。HSLA(Hue、Saturation、Lightness、Alpha)增加 Alpha 透明度。
HSL 便于创建更亮、更暗或饱和度更高的颜色变体。在设计系统中,调整亮度和饱和度通常比修改各个 RGB 通道更直观。为了比较、报告或清理 SVG,HSL 值通常会标准化为 RGB 或 HEX。
HSV(Hue、Saturation、Value)存储色相、饱和度和值,常用于颜色选择器和设计工具。HWB 存储色相、白度和黑度,可用于生成明暗变化。
这些格式较少出现在手写 SVG 中,但可能来自颜色转换器、设计导出或调色板编辑器。与 SVG 属性比较之前,请先将 HSV 或 HWB 转换为统一输出格式。
LAB 和 LCH 是感知色彩空间,其中数值变化更接近人眼感知的差异。OKLAB 和 OKLCH 是现代 CSS 与设计流程中使用的较新模型。当 RGB 通道差异不足以描述视觉差异时,这些模型很有用。
这些模型适用于调色板、无障碍检查、色差分析和均匀色阶。对于 SVG,如果渲染器或验证规则要求传统 Web 格式,仍可将结果转换为 HEX 或 RGB。
CMYK(Cyan、Magenta、Yellow、Key/Black)面向印刷,由青色、品红色、黄色和黑色分量组成。它常用于印前处理,但不是 SVG 表现属性或浏览器 CSS 的常见语法。XYZ 是与设备无关的 CIE 色彩空间,用于色彩科学和转换流程。
CMYK 适合印刷数据,XYZ 适合技术转换或色彩管理系统。在 Web SVG 中写入 fill、stroke 或 stop-color 之前,请将这些颜色转换为 HEX 或 RGB 等基于 RGB 的表示形式。
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 等效颜色不匹配 | 一个颜色使用名称,另一个使用 HEX 或 RGB | 比较前使用 Color.FromString() 和 ToRgbHexString() 标准化两者 |
| 透明度丢失 | RGBA 颜色使用了 ToRgbString() 或 ToRgbHexString() | 使用 ToRgbaHexString() 在 HEX 中保留 Alpha |
| 无法将 SVG 值解析为颜色 | none、currentColor 和 url(#id) 不是直接颜色值 | 调用 Color.FromString() 前过滤这些值 |
| 输出与源文本不同 | 转换会标准化表示法或字母大小写 | 如果格式很重要,请单独保留原始字符串 |
| 期望 CMYK 或 LAB CSS 字符串 | API 将这些模型表示为分量 | 使用 Convert(ColorModel) 获取所选模型的分量 |
如何在 C# 中将 HEX 转换为 RGB?
使用 Color.FromString("#ff31ca") 解析 HEX,然后调用 ToRgbString() 得到 rgb(255, 49, 202)。
如何在 C# 中将 RGB 转换为 HEX?
使用 Color.FromString("rgb(255, 49, 202)"),然后调用 ToRgbHexString() 得到标准化的 #RRGGBB 值。
能否在 C# 中将 HSL 转换为 HEX?
可以。使用 Color.FromString("hsl(315, 100%, 60%)") 解析 HSL,然后调用 ToRgbHexString()。
能否在 C# 中解析 CSS 颜色名称?
可以。Color.FromString() 支持 CSS 颜色名称。随后可通过 ToRgbHexString() 或其他方法输出。对于包含预期结果的示例,请使用 black 等含义明确的名称。
如何将 SVG 颜色标准化为 HEX?
从 SVG 属性或样式中获取直接颜色值,跳过 none、currentColor 和 url(#id),使用 Color.FromString() 解析每个值,并通过 ToRgbHexString() 输出。
转换颜色时如何保留透明度?
使用 ToRgbaHexString() 输出八位 HEX。RGB 和六位 HEX 不保留 Alpha 通道。
Aspose.SVG 能否转换 CMYK、LAB、LCH、OKLAB 和 OKLCH?
可以。Color 类支持多种色彩空间。对于支持的 CSS 字符串,请使用 Color.FromString();也可使用 FromCmyk()、FromLab()、FromLch()、FromOklab() 和 FromOklch() 等方法。
颜色转换器是一款免费的在线应用,可在颜色格式之间转换。输入颜色代码即可立即获得等效值。
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.