Vb шестнадцатеричные цветовые коды

Я хочу сделать это:

    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.

Что эквивалентно в vb для установки цвета в # 00FF00 в режиме разработки формы?

Ответ 1

Пробовали ли буквальный &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 не будут эквивалентны тем, которые вы, вероятно, знакомы с веб-и HTML-программированием. Вместо обозначений RRGGBB, которые вы там находите, VB 6 использует обозначение BBGGRR или &H00BBGGRR&, то же самое, что и родная структура Win32 COLORREF, где младший байт является красным, а не синим.


Конечно, обратите внимание, что для стандартных значений цвета, таких как показанные здесь, вам, вероятно, лучше использовать литералы VB, например vbGreen:

Me.Label1.BackColor = vbGreen

Ответ 2

Вы не можете сохранить ведущие нули в шестнадцатеричной нотации vb. Числовые литералы (inclding &H*) по умолчанию имеют 16-битные целые числа, для 32-битного суффикса с постоянным литералом с & для неявного определения его длинного;

Const COLOR_GREEN = &HFF00&

?COLOR_GREEN
 65280 

Ответ 3

Вы можете использовать Colortranslator

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