Visual Basic 2013颜色代码

时间:2013-10-26 08:59:06

标签: visual-studio

我想制作颜色选择器,当选择颜色时将颜色代码写入文本框。我创建了颜色对话框和文本框,如何从拾取的颜色制作rgb和十六进制代码?

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

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

获得:

  

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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)
相关问题