ウェブのカラーチャートの見本があるのですけど
C++の場合は見本どおり表示されますが
なぜか、VBの方はRGBで指定するとピンクを指定してるのに青が表示したり
しまいますなぜでしょうか?
> RGBで指定するとピンクを指定してるのに青が表示
指定順番を間違って、赤と青を逆にしてしまっているとか・・・
> ウェブのカラーチャートの見本
とは、具体的にどういうものです?
> ピンク
は、どう指定されています?
ちなみに、Web(HTML)とかで指定する色コードは、16進数で表した場合
RRGGBBの順番ですが、VB6では
BBGGRRの順番ですが・・・
ごめんなさい。
ここは、VB.NETの掲示板でした。
先ほどの「ちなみに〜」は、とりあえず無視してください。
で代わりに1つ追加で確認です。
> VBの方はRGBで指定
とは、具体的にどうやって指定しているのでしょう?
#Color構造体のFromArgbメソッド?
解答ありがとうございます
>#Color構造体のFromArgbメソッド?
そう!それです!
> なぜか、VBの方はRGBで指定するとピンクを指定してるのに青が表示したり
http://www.colordic.org/
を見ると、「pink」のコードを #ffc0cb としていますね。
即ち、Red = FF / Green = C0 / Blue = CB という構成なので、
Dim c As Color = Color.FromArgb(&HFF, &HC0, &HCB)
TextBox1.BackColor = c
としてみましたが……当方では青にはなりませんでしたよ。
Dim argb() As Byte = BitConverter.GetBytes(c.ToArgb())
TextBox1.Text = BitConverter.ToString(argb)
>魔界の仮面弁士さん
私は、(&HFF, &HC0, &HCB)みたいな16進数表式だとわかりにくいので、
ListView1.Items(a).SubItems(0).ForeColor = Color.FromArgb(RGB(255, 255, 51))
と数字にしているのですが、
この数字の指定の仕方が悪いのでしょうか?
> RGB(255, 255, 51)
RGB関数は、VB.NET用(VB.NETの色)ではなく、VB6との互換用(VB6の色)の関数です。
そのため、(私が「無視してください」と言った)VB6の色指定順(赤と青の指定が入れ替わる)が適用されてしまいます。
> 16進数表式だとわかりにくいので
進数表記は単なる書き方の問題であって、関数ごとに、「どの進数で指定しなければならない」と言う風な制限はありませんよ。
> Dim c As Color = Color.FromArgb(&HFF, &HC0, &HCB)
を
> Dim c As Color = Color.FromArgb(255, 255, 51)
するだけ・・・
ありがとうございます!
大吉末吉さん
魔界の仮面弁士さん
単純にコーディングのときに
RGBをつけてたの思い通りの色にならなかった原因なのですね。
大吉末吉さんの方法でいけるみたいです!
ありがとうございました!
ツイート | ![]() |