vb十六进制颜色代码

时间:2011-06-22 10:19:36

标签: vb6 colors hex

我想这样做:

    Const COLOR_GREEN = &H00FF00
    Me.Label1.BackColor = COLOR_GREEN

然而,有一个问题是vb自动决定将& H00FF00转换为& HFF00,所以我得到了这个:

    Const COLOR_GREEN = &HFF00
    Me.Label1.BackColor = COLOR_GREEN

小数值COLOR_GREEN现在是-256而不是65280,所以背景是黑色而不是绿色!这很烦人,因为我可以使用#00FF00在表单设计模式中很好地设置颜色。

在表单设计模式下将颜色设置为#00FF00的等价物是什么?

3 个答案:

答案 0 :(得分:23)

你试过文字&H0000FF00&吗?以下代码对我来说很合适:

Const COLOR_GREEN = &H0000FF00&
Me.Label1.BackColor = COLOR_GREEN

当然,VB 6自动将其折叠为此,这仍然可以正常工作,因为这两个值完全等效数字:

Const COLOR_GREEN = &HFF00&
Me.Label1.BackColor = COLOR_GREEN

诀窍是该值需要声明为Long,而不是Integer将&符号(&)放在数字后面文字完成了这一点。

这也解释了为什么你看到-256的值而不是你期望的65280。值65280太长而无法放入Integer,当它溢出该数据类型时,VB 6再次将其包裹起来,产生-256。

值得注意的是,VB 6中的十六进制文字将不等同于您可能从Web和HTML编程中熟悉的那些。而不是你在那里找到的RRGGBB表示法, VB 6使用BBGGRR表示法,或&H00BBGGRR& ,与原始Win32 COLORREF结构相同,其中低位字节为红色而不是蓝色。


当然,请注意,对于标准颜色值,例如您在此处显示的颜色值,您可能最好使用VB文字,例如vbGreen

Me.Label1.BackColor = vbGreen

答案 1 :(得分:5)

您无法使用vb的十六进制表示法保留前导零。 数字文字(包括&H*)默认为16位整数,对于32位常量文字后缀,&隐式表示其长;

Const COLOR_GREEN = &HFF00&

?COLOR_GREEN
 65280 

答案 2 :(得分:1)

您可以使用Colortranslator

             dim myColor as new  Color
               myColor=ColorTranslator.fromHTML("#ff0000") 'Red color