2013-10-26 188 views
1

我想製作顏色選擇器,當選擇顏色時將顏色代碼寫入文本框。我創建了顏色對話框和文本框,如何從拾取的顏色中製作rgb和十六進制代碼?Visual Basic 2013顏色代碼

我想這個代碼,但它有一個問題:

TextBox1.Text = ColorDialog1.Color.R + ", " + ColorDialog1.Color.G + ", " + ColorDialog1.Color.B 

獲取:

'' 類型的未處理的異常出現在Microsoft.VisualBasic.dll中 附加信息:從字符串「,」轉換爲鍵入「Double」無效。

+0

如果你得到十六進制值,請參閱:http://stackoverflow.com/questions/2109756/how-to-get-color-from-hexadecimal-color-code-using-net – NoChance

+0

'顏色'有'.A'' .R'' .G'和'.B'屬性爲Alpha/Red/Green/Blue ...所有十六進制值都是將RGB轉換爲十六進制並連接起來。 – Basic

回答

1

Visual Basic中通常是相當包容,當您嘗試數字和文字結合起來,數自動轉換爲字符串,使聲明工作。但Color.R,G和B屬性有點特別,它們是Byte類型。這種類型在早期版本的VB中不存在。他們沒有添加自動轉換。

在這裏做

最好的辦法是使用由的String.Format()方法支持的複合格式設置功能:

With ColorDialog1.Color 
    Label1.Text = String.Format("{0}, {1}, {2}", .R, .G, .B) 
End With 

而爲十六進制的版本只是改變格式化字符串:

Label1.Text = String.Format("#{0:x2}{1:x2}{2:x2}", .R, .G, .B) 
2

像這樣的事情會得到你所需要的...

Dim MyColor = Color.LightGreen 

Dim R = MyColor.R 
Dim G = MyColor.G 
Dim B = MyColor.B 

Dim HexString = String.Format("{0:X2}{1:X2}{2:X2}", R, G B)