c# - 将 System.Drawing.Color 转换为 RGB 和十六进制值

标签 c# asp.net rgb system.drawing.color

我尝试使用 C# 开发以下两个。我这样做的方式可能有一些问题,需要您的建议。另外,不知道有没有现成的方法可以做到这一点。

private static String HexConverter(System.Drawing.Color c)
{
    String rtn = String.Empty;
    try
    {
        rtn = "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
    }
    catch (Exception ex)
    {
        //doing nothing
    }

    return rtn;
}

private static String RGBConverter(System.Drawing.Color c)
{
    String rtn = String.Empty;
    try
    {
        rtn = "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")";
    }
    catch (Exception ex)
    {
        //doing nothing
    }

    return rtn;
}

谢谢。

最佳答案

我没有看到这里的问题。代码看起来不错。

我唯一能想到的是 try/catch block 是多余的——Color 是一个结构体,R、G 和 B 是字节,所以 c 不能为 null 并且 c.R.ToString() c.G.ToString()c.B.ToString() 实际上不会失败(我看到它们失败的唯一方法是使用 NullReferenceException ,并且它们实际上都不能为 null)。

您可以使用以下方法清理整个内容:

private static String HexConverter(System.Drawing.Color c)
{
    return "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
}

private static String RGBConverter(System.Drawing.Color c)
{
    return "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")";
}

关于c# - 将 System.Drawing.Color 转换为 RGB 和十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2395438/

相关文章:

javascript - 将包含引号的长字符串保存到隐藏输入

c# - 为什么零作为除数时被假定为正数?

C# .NET Windows 窗体不显示

javascript - ASP.NET URL 编码不带 ?或变量名

asp.net - 如何使用数据表在单选按钮列表中设置默认值

c++ - 在图像上应用均值滤波器时出现小的颜色缺陷

java - 在 Java 中使用 BufferedImage

javascript - 如何优化 RGB 到 HSL 转换函数的执行时间?

c# - 使用 MySqlBackup.NET 导出数据库时出现异常

c# - 为什么除了 Equals(Object) 还要实现 Equals(type)?