カラーチャート

解決


Pちゃん  2007-10-20 14:23:50  No: 143990

ウェブのカラーチャートの見本があるのですけど
C++の場合は見本どおり表示されますが
なぜか、VBの方はRGBで指定するとピンクを指定してるのに青が表示したり
しまいますなぜでしょうか?


大吉末吉  2007-10-21 05:43:13  No: 143991

> RGBで指定するとピンクを指定してるのに青が表示

指定順番を間違って、赤と青を逆にしてしまっているとか・・・

> ウェブのカラーチャートの見本
とは、具体的にどういうものです?
> ピンク
は、どう指定されています?

ちなみに、Web(HTML)とかで指定する色コードは、16進数で表した場合
RRGGBBの順番ですが、VB6では
BBGGRRの順番ですが・・・


大吉末吉  2007-10-21 06:01:16  No: 143992

ごめんなさい。

ここは、VB.NETの掲示板でした。
先ほどの「ちなみに〜」は、とりあえず無視してください。

で代わりに1つ追加で確認です。

> VBの方はRGBで指定
とは、具体的にどうやって指定しているのでしょう?

#Color構造体のFromArgbメソッド?


Pちゃん  2007-10-21 10:42:52  No: 143993

解答ありがとうございます

>#Color構造体のFromArgbメソッド?
そう!それです!


魔界の仮面弁士  2007-10-21 18:45:09  No: 143994

> なぜか、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)


Pちゃん  2007-10-22 07:26:14  No: 143995

>魔界の仮面弁士さん
私は、(&HFF, &HC0, &HCB)みたいな16進数表式だとわかりにくいので、
ListView1.Items(a).SubItems(0).ForeColor = Color.FromArgb(RGB(255, 255, 51))
と数字にしているのですが、
この数字の指定の仕方が悪いのでしょうか?


大吉末吉  2007-10-22 08:41:26  No: 143996

> 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)
するだけ・・・


Pちゃん  2007-10-22 10:23:06  No: 143997

ありがとうございます!
大吉末吉さん
魔界の仮面弁士さん
単純にコーディングのときに
RGBをつけてたの思い通りの色にならなかった原因なのですね。
大吉末吉さんの方法でいけるみたいです!
ありがとうございました!


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加