web-dev-qa-db-ja.com

vb16進カラーコード

私はこれをしたい:

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

ただし、vbが&H00FF00を&HFF00に変換することを自動的に決定するという問題があるため、代わりにこれを取得します。

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

10進値COLOR_GREENは65280ではなく-256になり、背景は緑ではなく黒になりました。 #00FF00を使用してフォームデザインモードで色を完全にうまく設定できるので、これは面倒です。

フォームデザインモードで色を#00FF00に設定するのとvbで同等のものは何ですか?

10
David

リテラル&H0000FF00&を試しましたか?次のコードは私にとっては問題なく機能します。

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

もちろん、VB 6は自動的にこれに折りたたまれますが、2つの値は完全に同等であるため、これでも問題なく機能します。数値的に:

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

トリックは、値をLongではなくIntegerとして宣言する必要があることです。数値リテラルの後にアンパサンド(&)を置くこれを達成します。

これは、期待する65280ではなく-256の値が表示される理由も説明しています。値65280は長すぎて、Integerに収まりません。そのデータ型がオーバーフローすると、VB 6が再びラップアラウンドし、-256を生成します。

VB 6の16進リテラルは、おそらくWebおよびHTMLプログラミングでおなじみのものと同等ではないことにも注意してください。そこにあるRRGGBB表記の代わりに、- VB 6はBBGGRR表記、または&H00BBGGRR&を使用します。これは、下位バイトが青ではなく赤であるネイティブWin32 COLORREF構造と同じです。


もちろん、ここに示したような標準の色の値の場合は、vbGreenなどのVBリテラルを使用する方がよいでしょう。

Me.Label1.BackColor = vbGreen
23
Cody Gray

Vbの16進表記で先行ゼロを保持することはできません。数値リテラル(&H*を含む)はデフォルトで16ビット整数であり、32ビットの定数リテラル接尾辞に&を付けて、暗黙的に長いことを示します。

Const COLOR_GREEN = &HFF00&

?COLOR_GREEN
 65280 
5
Alex K.

Colortranslatorを使用できます

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