tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルダイアログ.Colorの形式。
記事No11126
投稿日: 2008/01/13(Sun) 17:24
投稿者チョコはやっぱり森直樹
ダイアログについて質問させてください。

Private Sub Form_Load()

    ダイアログ名.ShowColor
    Debug.Print ダイアログ名.Color

End Sub

これで表示されるのは7桁ぐらいの数字です。
他の形式でデータを取りたいのですができるんでしょうか?
RGB(xxx,xxx,xxx)←こんなかんじでとってきたいんです。

よろしくお願いします。

[ツリー表示へ]
タイトルRe: ダイアログ.Colorの形式。
記事No11128
投稿日: 2008/01/13(Sun) 20:28
投稿者花ちゃん
.NET には変換関数があるのですが、VB には用意されていませんのでご自分で
計算して変換して下さい。

http://hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?no=5171&reno=5168&oya=5152&mode=msgview&page=330


ここのサイトでは、まともなハンドルネームを使って下さい。

それと下記の件はどうなったのですか?
フォームを常に正四角形にしたい.. - 麻雀入門 08/01/05-12:46No.11057

[ツリー表示へ]
タイトルRe^2: ダイアログ.Colorの形式。
記事No11131
投稿日: 2008/01/14(Mon) 03:28
投稿者森直樹
ありがとうございます。
やってみましたところ、色は変わるんですが別の色になってしまいます。

Dim a As Long
Dim a As Long
Dim a As Long

a = Val("&H" & Mid(Hex(ダイアログ名.Color), 1, 2))
b = Val("&H" & Mid(Hex(ダイアログ名.Color), 3, 2))
c = Val("&H" & Mid(Hex(ダイアログ名.Color), 5, 2))

ピクチャーボックス.PSet (X座標,Y座標),RGB(a,b,c)


コードはこんなかんじです。
どこが間違ってるのかご指摘お願いします。


> それと下記の件はどうなったのですか?
> フォームを常に正四角形にしたい.. - 麻雀入門 08/01/05-12:46No.11057

それ多分弟が書いたやつです。
スイマセン。

[ツリー表示へ]
タイトルRe^3: ダイアログ.Colorの形式。
記事No11132
投稿日: 2008/01/14(Mon) 08:42
投稿者花ちゃん
> やってみましたところ、色は変わるんですが別の色になってしまいます。

計算式をみれば解ると思ったのですが...。

サンプル投稿用掲示板の方に投稿しておきました。

[ツリー表示へ]
タイトルRe^4: ダイアログ.Colorの形式。
記事No11138
投稿日: 2008/01/14(Mon) 21:47
投稿者森直樹
できました。
ありがとうございました。

[ツリー表示へ]
タイトルRe^3: ダイアログ.Colorの形式。
記事No11139
投稿日: 2008/01/15(Tue) 10:57
投稿者よねKEN
既に花ちゃんのサンプルにて解決済みのようですが、一応ツッコミ。

> ありがとうございます。
> やってみましたところ、色は変わるんですが別の色になってしまいます。

VBのColorはSSBBGGRRという形式(16進数表記)です。
SSは00または80を取り、80ならシステムカラー、00ならRGB値を意味します。
BBは00〜FFの値を取りRGB値のBに当たる値です。
GGは00〜FFの値を取りRGB値のGに当たる値です。
RRは00〜FFの値を取りRGB値のRに当たる値です。

> a = Val("&H" & Mid(Hex(ダイアログ名.Color), 1, 2))
> b = Val("&H" & Mid(Hex(ダイアログ名.Color), 3, 2))
> c = Val("&H" & Mid(Hex(ダイアログ名.Color), 5, 2))
>
> ピクチャーボックス.PSet (X座標,Y座標),RGB(a,b,c)
>
>
> コードはこんなかんじです。
> どこが間違ってるのかご指摘お願いします。

つまり、aとcが逆です。

[ツリー表示へ]
タイトルRe^4: ダイアログ.Colorの形式。
記事No11143
投稿日: 2008/01/15(Tue) 13:27
投稿者
さらにツッコミをば。

> VBのColorはSSBBGGRRという形式(16進数表記)です。
> SSは00または80を取り、80ならシステムカラー、00ならRGB値を意味します。
> BBは00〜FFの値を取りRGB値のBに当たる値です。
> GGは00〜FFの値を取りRGB値のGに当たる値です。
> RRは00〜FFの値を取りRGB値のRに当たる値です。
>
> > a = Val("&H" & Mid(Hex(ダイアログ名.Color), 1, 2))
> > b = Val("&H" & Mid(Hex(ダイアログ名.Color), 3, 2))
> > c = Val("&H" & Mid(Hex(ダイアログ名.Color), 5, 2))
> >
> > ピクチャーボックス.PSet (X座標,Y座標),RGB(a,b,c)
> >
> >
> > コードはこんなかんじです。
> > どこが間違ってるのかご指摘お願いします。
>
> つまり、aとcが逆です。

SSが00(RBG値)の時に青の値が15(&H0F)以下だと
16進表記で先頭からの0が省略されちゃうので
Mid関数を使うなら形を整えてあげてからでないと
結果の値がおかしくなっちゃいます。

[ツリー表示へ]