2017-09-19 12 views
0

レジストリキーから読み取られた色の設定をSystem.Drawing.Colorに変換しようとしています。私はこの記事に続いて、System.Drawing.Colorにレジストリから返されたオブジェクトをキャストしています:Convert OBJECT to System.Drawing.ColorSystem.Drawing.Colorにオブジェクトをキャストする

System.Drawing.Color color = (System.Drawing.Color)result; 

ここで私はオブジェクトとして取得していますこれらのレジストリ値の例のカップルです:

Type  Data 
REG_SZ Color [Olive] 
REG_SZ Color [A=255, R=255, G=128, B=128] 

System.Drawing.Colorへの最初のレジストリキーのキャストはうまくいきますが、2番目のキーをキャストすると「指定されたキャストは無効です」というエラーが表示されます。これらのキーの両方をSystem.Drawing.Colorとしてキャストできる最適な方法は何ですか?

EDIT:私はレジストリへの書き込み時にこの問題を解決する最も簡単な方法があると思いますが、私はARGB(INT32)に色を変換し、私はそれを読んでそのように他のがなければ、私はちょうど(Color.FromArgbを使用することができます私は完全に迷っています)。

+0

(結果); ' –

+1

または' FromArgb(Int32、Int32、Int32、Int32) 'です。 https://msdn.microsoft.com/en-us/library/at1k42eh(v=vs.110).aspx –

+1

を参照してください。リンクされたQ + Aと同じではなく、反射を使用して実際にボックスカラーを返しました。しかし、ここでは単なる文字列です。 「Olive [オリーブ]」は確かにキャストできません。 ColorConverterを使用する必要があります。 –

答えて

1

何をレジストリから取得していることはここでは、このpage

から提案ようColorConverterクラスを使用する文字列である可能性は、サンプルコードです:

System.Drawing.Color.FromName `についてどのように
Color regColor = (Color)ColorConverter.ConvertFromString((string)result); 
+0

外部リンク(壊れやすい)に頼るのではなく、ColorConverterの使い方を示すいくつかのコードを含めるとよいでしょう。 – mason

+0

あなたの提案を実装した後、私は例外 "カラー[A = 255はInt32の有効な値ではありません。"内部例外は「入力文字列が正しい形式ではありませんでした」です。入力文字列は「Color [A = 255、R = 255、G = 128、B = 128]」です。 – Riccaforte

関連する問題