System.Drawing.Color を RGB と 16 進値に変換する 質問する

System.Drawing.Color を RGB と 16 進値に変換する 質問する

C# を使用して、次の 2 つを開発しようとしていました。私のやり方には問題があるかもしれませんので、アドバイスをお願いします。また、同じことを行う既存の方法があるかどうかもわかりません。

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;
}

ありがとう。

ベストアンサー1

ここで問題がわかりません。コードは問題ないように見えます。

私が考えられる唯一のことは、try/catch ブロックが冗長であるということです。Color は構造体であり、、、RおよびGBバイトであるため、にcはならず、、、およびは実際には失敗できません (これらが失敗する唯一の方法は を使用する場合ですが、これらはいずれも実際には にはなり得ません)。nullc.R.ToString()c.G.ToString()c.B.ToString()NullReferenceExceptionnull

次のようにして全体をクリーンアップできます。

private static String ToHex(System.Drawing.Color c)
    => $"#{c.R:X2}{c.G:X2}{c.B:X2}"
    
private static String ToRGB(System.Drawing.Color c)
    => $"RGB({c.R},{c.G},{c.B})"

おすすめ記事