1

I wanna make color selector, when picked color write color code to text box. 我创建了颜色对话框和文本框,如何从选择的颜色中生成 rgb 和 hex 代码?

我正在尝试这段代码,但它有一个问题:

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

得到:

Microsoft.VisualBasic.dll 中发生了“System.InvalidCastException”类型的未处理异常附加信息:从字符串“,”到类型“Double”的转换无效。

4

2 回答 2

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)
于 2013-10-26T09:06:58.653 回答
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)
于 2013-10-26T09:43:29.783 回答