我想制作颜色选择器,当选择颜色时将颜色代码写入文本框。我创建了颜色对话框和文本框,如何从拾取的颜色制作rgb和十六进制代码?
我正在尝试此代码,但它有一个问题:
TextBox1.Text = ColorDialog1.Color.R + ", " + ColorDialog1.Color.G + ", " + ColorDialog1.Color.B
获得:
Microsoft.VisualBasic.dll中发生未处理的“System.InvalidCastException”类型异常 附加信息:从字符串“,”到“Double”类型的转换无效。
答案 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)