色の設定で &H からはじまる値の意味

解決


ゆうきん  2004-06-03 14:49:38  No: 83766  IP: [192.*.*.*]

色の設定で、プロパティウィンドウには&Hからはじまる設定値が施されているんですが、いま某参考書で勉強していたら
  ピンク---  &HFF80FF&
  緑    ---  &HC000&
というコードが載ってました。てっきり、&から&まで16進数をあらわすHを除き
8桁で表されるものだと思ってたので面食らってます。

省略されているだけなのだと思うのですが、どのように省略できるのか自分の力で
ヘルプを調べても、わかりませんでした。

すいません。どなたかご教授ください。

編集 削除
nanashi  2004-06-03 16:03:46  No: 83767  IP: [192.*.*.*]

まず、頭の『&H』は16進数であることを表しています。

その後の16進数は2Byteずつの色のデータを表しています。
00〜FFの256階調の色データで、右から赤、緑、青(RGB)の三原色です。

右からと言ったのは左側は場合によって省略できるからです。
ピンクの場合『&HFF80FF&』で、赤が256、緑が128、青が256です。
緑の場合『&H00C000&』で、赤が0、緑が192、青が0です。
普通の10進数の数字を考えてもらえば分かると思いますが、
左に来る0は省略できます。
『&H00C000&』と『&HC000&』は同じ値です。

最後に来る『&』はLong型である事を意味しています(VB6.0)。
これを付けないと値によってはInteger型だと判断されます。
『&HC000&』と『&HC000』では値が全く違うので注意が必要です。


えーと、私の理解ではだいたいこんなもんですがいかがでしょうか?

編集 削除
ゆうきん  2004-06-03 16:48:19  No: 83768  IP: [192.*.*.*]

ありがとうございました〜!!!
すばらしい。

あっ、、、でもですね、最後の「&」なんですが、
コードウィンドウで勝手に消えちゃうんです。
ピンクの場合  

&HFF80FF&  

って入力すると

&HFF80FF

になっちゃいます。勝手に省略されてますよーて教えるために付いてしまう
記号なのかともおもったのですが、、、でもLong型を表す型宣言文字だという
ことがわかっただけで満足です。ありがとうございました。

あのー、すいません、あと、、、&Hと最後の&まで6桁ある場合は理解できたの
ですが、VBのプロパティウィンドウでは8桁ありますよね?

全部「&H00」から始まってるので、省略されてるんだと思ったのですが、
システムタブから適当に色を選ぶと「&H80」から始まる番号になるんです。

すいません。教えてください。きいてばっかですいませんです。

編集 削除
nanashi  2004-06-03 17:11:58  No: 83769  IP: [192.*.*.*]

※訂正
> その後の16進数は2Byteずつの色のデータを表しています。
2Byteじゃなくて1Byte(2桁の16進数)ですねf^_^;

最後の『&』が省略されるのは、『&HFF80FF』が既にIntegerの範囲を越えているので
自動的にLong型と見なしているからです(だと思います)。


> 全部「&H00」から始まってるので、省略されてるんだと思ったのですが、
> システムタブから適当に色を選ぶと「&H80」から始まる番号になるんです。

これはシステムカラー用の番号のことですね。
『&H80000000』はスクロールバーの色
『&H80000001』はデスクトップの色

というように決められています。
なのでRGBとは直接関係無いです。

編集 削除
うにぃ  2004-06-03 17:15:25  No: 83770  IP: [192.*.*.*]

プロパティウインドウで指定できる、"ボタンの表面"などの色指定は、
システムカラーといってプログラムを実行する環境に依存します。
それなので、&H8000000F&などは色を表すのではなくて、
"Windowsでボタンの表面設定されている色"に使う、ということになります。

ためしに、Windowsの"画面のプロパティ"の"デザイン"で色設定を変えてみるとわかりやすいかもしれません。

#と上記のように私は認識しています。

編集 削除
ゆうきん  2004-06-03 19:23:55  No: 83771  IP: [192.*.*.*]

ありがとうございました!!

大変勉強になりました。ありがとうございました。

編集 削除