小编典典

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

c#

我正在使用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;
}

谢谢。


阅读 897

收藏
2020-05-19

共1个答案

小编典典

我在这里看不到问题。该代码对我来说看起来不错。

我能想到的唯一的事情是,try / catch块是多余的-
颜色是一个结构和R,G和B是字节,所以C不能为空并且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() + ")";
}
2020-05-19