gpt4 book ai didi

.net - 将 .Net 颜色对象转换为十六进制代码并返回

转载 作者:行者123 更新时间:2023-12-03 15:15:33 24 4
gpt4 key购买 nike

根据问题标题,如何获取十六进制代码并将其转换为 .Net Color 对象,然后以其他方式执行?

我用谷歌搜索并不断得到同样的方法,但它不起作用。

 ColorTranslator.ToHtml(renderedChart.ForeColor)

它返回颜色的名称,如 'White' 而不是 '#ffffff'!以另一种方式做似乎有奇怪的结果,只能在某些时候工作......

最佳答案

就像是 :

Color color = Color.Red;
string colorString = string.Format("#{0:X2}{1:X2}{2:X2}",
color.R, color.G, color.B);

以另一种方式执行它有点复杂,因为 #F00 是有效的 html 颜色(意味着全红色)但它仍然可以使用正则表达式,这里是一个小示例类:
using System;
using System.Diagnostics;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Collections.Generic;

public static class HtmlColors
{
public static string ToHtmlHexadecimal(this Color color)
{
return string.Format("#{0:X2}{1:X2}{2:X2}", color.R, color.G, color.B);
}

static Regex htmlColorRegex = new Regex(
@"^#((?'R'[0-9a-f]{2})(?'G'[0-9a-f]{2})(?'B'[0-9a-f]{2}))"
+ @"|((?'R'[0-9a-f])(?'G'[0-9a-f])(?'B'[0-9a-f]))$",
RegexOptions.Compiled | RegexOptions.IgnoreCase);

public static Color FromHtmlHexadecimal(string colorString)
{
if (colorString == null)
{
throw new ArgumentNullException("colorString");
}

var match = htmlColorRegex.Match(colorString);
if (!match.Success)
{
var msg = "The string \"{0}\" doesn't represent"
msg += "a valid HTML hexadecimal color";
msg = string.Format(msg, colorString);

throw new ArgumentException(msg,
"colorString");
}

return Color.FromArgb(
ColorComponentToValue(match.Groups["R"].Value),
ColorComponentToValue(match.Groups["G"].Value),
ColorComponentToValue(match.Groups["B"].Value));
}

static int ColorComponentToValue(string component)
{
Debug.Assert(component != null);
Debug.Assert(component.Length > 0);
Debug.Assert(component.Length <= 2);

if (component.Length == 1)
{
component += component;
}

return int.Parse(component,
System.Globalization.NumberStyles.HexNumber);
}
}

用法 :
// Display #FF0000
Console.WriteLine(Color.Red.ToHtmlHexadecimal());

// Display #00FF00
Console.WriteLine(HtmlColors.FromHtmlHexadecimal("#0F0").ToHtmlHexadecimal());

// Display #FAF0FE
Console.WriteLine(HtmlColors.FromHtmlHexadecimal("#FAF0FE").ToHtmlHexadecimal());

关于.net - 将 .Net 颜色对象转换为十六进制代码并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com