如何将颜色名称转换为相应的十六进制表示

本文关键字:十六进制 表示 转换 颜色 | 更新日期: 2023-09-27 18:16:22

例如:

blue 

转换为:

#0000FF

我把它写成:

Color color = Color.FromName("blue");

但是我不知道如何得到十六进制表示。

如何将颜色名称转换为相应的十六进制表示

您已经完成了一半。使用.ToArgb将其转换为数字值,然后将其格式化为十六进制值。

int ColorValue = Color.FromName("blue").ToArgb();
string ColorHex = string.Format("{0:x6}", ColorValue);
var rgb = color.ToArgb() & 0xFFFFFF; // drop A component
var hexString = String.Format("#{0:X6}", rgb);

或者只是

var hexString = String.Format("#{0:X2}{1:X2}{2:X2}", color.R, color.G, color.B);
{
    Color color = Color.FromName("blue");
    byte g = color.G;
    byte b = color.B;
    byte r = color.R;
    byte a = color.A;
    string text = String.Format("Color RGBA values: red:{0x}, green: {1}, blue {2}, alpha: {3}", new object[]{r, g, b, a});

//严肃地说:(这很简单:

    string hex = String.Format("#{0:x2}{1:x2}{2:x2}", new object[]{r, g, b}); 
}

Ahmed的回答很接近,但根据您的评论,我只补充一点。

应该使其工作的代码是:

Color color = Color.FromName("blue");
string myHexString = String.Format("#{0:X2}{1:X2}{2:X2}", color.R, color.G, color.B);

现在,您可以使用字符串myHexString执行任何您想要的操作。

您可以使用gplots包:

library(gplots)
col2hex("blue")
# [1] "#0000FF"

https://cran.r-project.org/web/packages/gplots/index.html

gplots包中,col2hex功能的代码是:

col2hex <- function(cname)
{
    colMat <- col2rgb(cname)
    rgb(
        red=colMat[1,]/255,
        green=colMat[2,]/255,
        blue=colMat[3,]/255
    )
}