2017-09-19 44 views
0

我試圖將從註冊表項讀取的顏色設置轉換爲System.Drawing.Color。我鑄造是從註冊表中的System.Drawing.Color返回的對象,本文以下內容:Convert OBJECT to System.Drawing.ColorC#將對象投射到System.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可以正常工作,但是在投射第二個鍵時,出現「指定的轉換無效」錯誤。能夠將這兩個鍵都轉換爲System.Drawing.Color的最佳方式是什麼?

編輯:我認爲解決這個最簡單的方法是寫註冊表時,我轉換顏色到ARGB(INT32),這樣,當我看到它,我可以只使用Color.FromArgb(除非有另一個解決方案我完全缺失)。

+0

怎麼樣'System.Drawing.Color.FromName (結果);' –

+1

或'FromArgb(Int32,Int32,Int32,Int32)'。請參閱https://msdn.microsoft.com/en-us/library/at1k42eh(v=vs.110).aspx –

+1

它與鏈接的Q + A不同,它使用了反射,它實際上返回了一個盒裝的Color 。但這裏只是一個普通的字符串。 「橄欖[橄欖]」當然也不能投。您必須使用ColorConverter。 –

回答

1

您從註冊表中獲得什麼可能是一個字符串,因此使用ColorConverter類從這個page

這裏建議是一個示例代碼:

Color regColor = (Color)ColorConverter.ConvertFromString((string)result); 
+0

包含一些代碼,顯示如何使用ColorConverter而不是依賴外部鏈接(這可能會中斷)是很好的。 – mason

+0

實施您的建議後,我收到一個異常「顏色[A = 255不是Int32的有效值。」內部例外是「輸入字符串格式不正確」。輸入字符串是「彩色[A = 255,R = 255,G = 128,B = 128]」。 – Riccaforte