C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: FromKnownColor エクスプローラの色


(過去ログ 21 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■9115 / inTopicNo.1)  FromKnownColor エクスプローラの色
  
□投稿者/ asuka (34回)-(2007/10/19(Fri) 11:29:06)

分類:[C#] 

お世話になっております、度々すいません。



■質問
IEやエクスプローラに表示されているバンド(メニューバー、アドレスバー、標準のボタン、リンク)は、

FromKnownColorクラスライブラリのKnownColorのうちのどれかに該当しますでしょうか?

該当するとすればどれなのでしょうか?

そもそも該当しないのでしょうか?

御教授頂ければ幸いです。



■背景
IEに埋め込むツールバーをtoolStlipコントロールで作成しています。

この作業はうまくいきまして、無事IEにツールバーが表示されるのですが、

バー(toolStlip)の色が自作ソフト以外のIEのバンドの色と若干異なってしまいます。



と、言いますのも、2003では同色に見えるのですが、XPでは若干異なって見えます。

Color BackColor = Color.FromArgb(
 Color.FromKnownColor(KnownColor.MenuBar).R
 Color.FromKnownColor(KnownColor.MenuBar).R
 Color.FromKnownColor(KnownColor.MenuBar).R

toolStripLeft.BackColor = BackColor;



として自作ツールバーの色を設定しております。

その他、KnownColor.Control、KnownColor.Menu、KnownColor.ScrollBarを試しましたが、

やはりXPでは標準で表示されているバーと色が異なってしまいます。

Transparentを割り当てても、やはり上手くいかずに悩んでおります。



■参照
http://msdn2.microsoft.com/ja-jp/library/system.drawing.knowncolor(VS.80).aspx

引用返信 編集キー/
■9126 / inTopicNo.2)  Re[1]: FromKnownColor エクスプローラの色
□投稿者/ subaru (4回)-(2007/10/19(Fri) 13:47:36)
No9115 (asuka さん) に返信
> と、言いますのも、2003では同色に見えるのですが、XPでは若干異なって見えます。
>
> Color BackColor = Color.FromArgb(
>  Color.FromKnownColor(KnownColor.MenuBar).R
>  Color.FromKnownColor(KnownColor.MenuBar).R
>  Color.FromKnownColor(KnownColor.MenuBar).R

Rの要素しか使っていないのはなぜ?
普通にSystemColors.MenuBarでもいいと思うのだけど。

引用返信 編集キー/
■9127 / inTopicNo.3)  Re[2]: FromKnownColor エクスプローラの色
□投稿者/ asuka (36回)-(2007/10/19(Fri) 14:02:03)
>>Color BackColor = Color.FromArgb(
>> Color.FromKnownColor(KnownColor.MenuBar).R
>> Color.FromKnownColor(KnownColor.MenuBar).R
>> Color.FromKnownColor(KnownColor.MenuBar).R
>
> Rの要素しか使っていないのはなぜ?
> 普通にSystemColors.MenuBarでもいいと思うのだけど。

すいません、、、コピペミスです。

実際にはR,G,Bと設定しております。



> 普通にSystemColors.MenuBarでもいいと思うのだけど。

これには理由がありまして、作成中のアプリは設定画面でカラー選択ダイアログから任意のカラーを選べるようにしております。

設定を適応するとiniファイルにその情報を記載するのですが、

カラーダイアログ(colorDialog)のcolorDialog.Colorをテキストに落としますと、

R,G,Bで記載されるもの(A:255確定)と、[RED]や[BLUE]などで記載されるものの2種類に分かれてしまうので、

iniファイルに落とす場合には、
colorDialog.Color.R
colorDialog.Color.G
colorDialog.Color.B
を保存しています。



念のためSystemColors.MenuBarでも試したのですが、IE7からなのか、

他のメニューバーの色と異なってしまい、どちらかというとControlの色になってしまいます。TT

若干濃いだけなのでよく見ないと分からないのですが、やはり違和感がありなんとかしたいのですが・・・

GoogleやGooのツールバーが何色なのかさっぱり分からない次第で困っております。

引用返信 編集キー/
■9128 / inTopicNo.4)  Re[3]: FromKnownColor エクスプローラの色
□投稿者/ ぽぴ王子 (275回)-(2007/10/19(Fri) 14:12:16)
ぽぴ王子 さんの Web サイト
No9127 (asuka さん) に返信

> >>Color BackColor = Color.FromArgb(
> >> Color.FromKnownColor(KnownColor.MenuBar).R
> >> Color.FromKnownColor(KnownColor.MenuBar).R
> >> Color.FromKnownColor(KnownColor.MenuBar).R
>>
>>Rの要素しか使っていないのはなぜ?
>>普通にSystemColors.MenuBarでもいいと思うのだけど。
>
> すいません、、、コピペミスです。
>
> 実際にはR,G,Bと設定しております。

subaru さんではないですが、そんな気がしていました :-)
ところで、R,G,B を使っていて A を使っていないのは何か理由がありますか?
「少し違って見える」のはそのせいのような気がします。

> 設定を適応するとiniファイルにその情報を記載するのですが、

… ini ファイル?
引用返信 編集キー/
■9129 / inTopicNo.5)  Re[4]: FromKnownColor エクスプローラの色
□投稿者/ asuka (37回)-(2007/10/19(Fri) 14:28:19)
> ところで、R,G,B を使っていて A を使っていないのは何か理由がありますか?
> 「少し違って見える」のはそのせいのような気がします。

Aは固定なのではないのでしょうか?

255固定で、0〜255の間で設定しても255になってしまうというあいまいな記憶があったので無視していたのですが・・・

ちょっと試してみます、、、汗ぇ



>>設定を適応するとiniファイルにその情報を記載するのですが、
>
> … ini ファイル?

自作でIEのツールバー作成しまして、

[設定]ボタン→[カラー選択ダイアログ]

から選んだ色を独自のiniファイルに書いており、次回起動したときにその色をIEのツールバーに適応させています。

ここではAを無視しても指定した色にはなるのですが・・・

引用返信 編集キー/
■9137 / inTopicNo.6)  Re[5]: FromKnownColor エクスプローラの色
□投稿者/ asuka (38回)-(2007/10/19(Fri) 16:45:36)
やはりAの値は255固定でした。

ちょっと興味深かったのは、MenuBarのデフォルト値がOSによって違うことでした。

・2003
ColorA =255
ColorR =212
ColorG =208
ColorB =200

・XP Pro
ColorA =255
ColorR =236
ColorG =233
ColorB =216

依然解決はしてませんが・・・

なぜ2003は上手くいって、XPは上手くいかないのか謎です・・・

XPのツールバー色がMenuBarでないってことなのでしょうか!?

全然分かりません。。。
引用返信 編集キー/
■9142 / inTopicNo.7)  Re[6]: FromKnownColor エクスプローラの色
□投稿者/ ぽぴ王子 (276回)-(2007/10/19(Fri) 17:26:06)
ぽぴ王子 さんの Web サイト
No9137 (asuka さん) に返信

> Aは固定なのではないのでしょうか?

> ここではAを無視しても指定した色にはなるのですが・・・

> やはりAの値は255固定でした。

あまりこういった方面のプログラムは書いたことがないので、偉そうなことは言えませんし
どうも直接の原因とは違うようなので意味がないかもしれませんが。

255固定なのは、たまたまかあるいは環境的な問題なんじゃないかなあと思ったりします。
常に255固定で無視してよいのであれば、そもそもそんなプロパティが存在すること自体が
おかしいような気もしますし。
もし255固定の値が「たまたま」返っているだけだとしたら、A の値を使わなかったばかりに
他の環境で、これまた違った不具合に遭遇しそうな気がするです。

>>設定を適応するとiniファイルにその情報を記載するのですが、
>
> … ini ファイル?

これは「設定を保存するなら ini ファイルよりは XML ファイルのほうがいいんじゃないかなあ」
という意味でちょろっと書きました。その辺は好き好きですので無視していただいてかまいません。

> Eやエクスプローラに表示されているバンド(メニューバー、アドレスバー、標準のボタン、リンク)は、
> FromKnownColorクラスライブラリのKnownColorのうちのどれかに該当しますでしょうか?
> 該当するとすればどれなのでしょうか?
> そもそも該当しないのでしょうか?

こちらの方で言うと、KnownColor 列挙体の全メンバから ARGB 値を取り出し、該当する
ものがあるかどうかで調べられそうな気がします。

引用返信 編集キー/
■9147 / inTopicNo.8)  Re[7]: FromKnownColor エクスプローラの色
□投稿者/ 渋木宏明(ひどり) (476回)-(2007/10/19(Fri) 18:07:05)
渋木宏明(ひどり) さんの Web サイト
2007/10/19(Fri) 18:46:54 編集(投稿者)

なんかこー、議論が明後日の方でぐるぐるしてるような。

>そもそも該当しないのでしょうか?

です。

1色で「ぺろん」と塗りつぶされてる前提で作っちゃダメなんです。

XP 以降のテーマ云々の話もありますが、過去のバージョンでの話ですが、IE は自前でツールバーの背景を描画してます。(今のバージョンでもそうなのかは確認してません)

むしろ方針としては

>Transparentを割り当てても、やはり上手くいかずに悩んでおります。

の方が正しいです。

んが、悲しいかなこの方法は通用しません。

「.NET 的に透明」にしてもダメなんです。

IE が .NET の上で動いているわけではないので。

「Windows のコモンコントロールであるツールバーかリバーのスタイル」で、「背景色は透明(=自分で塗らない)」指定をしなければいけないんじゃなかったかな。
(遠い昔のことなので詳細は忘れました)

もうこの辺になると .NET は関係なくて、SDK ドキュメントを読んで総合力を身につけるしかありません。

こういった細かいところの面倒をまるでみてくれないんで、ぼくは BandObject ベースでがちゃがちゃやる気は早々に失せました。
引用返信 編集キー/
■9158 / inTopicNo.9)  Re[8]: FromKnownColor エクスプローラの色
□投稿者/ asuka (39回)-(2007/10/19(Fri) 22:22:08)
■ぽぴ王子さん

Aについては将来のための予備なのかな?

と思っていましたが、やはりきちんと実装すべきですね、勉強になります。

XMLファイルで実装したことがなく、ずっとiniファイルだったのでピンときませんでした。

機会があるときにでも是非試してみます。

>こちらの方で言うと、KnownColor 列挙体の全メンバから ARGB 値を取り出し、該当する
>ものがあるかどうかで調べられそうな気がします。

まずIEのツールバーのARGBの値をどうやって取るか考えてみたいと思います・・・

ウインドウハンドル取ってVC++でなんとかなればいいのですが・・・



■渋木さん
そうですか・・・

確かに前回の続きでBandObject使ってるのは確かなのですけれども、

そもそもgoogleやgooやその他のツールバーはどうしてIEが自前で塗っている背景色を知っているのでしょうか!?

という疑問にあたるのですが・・・



Googleで『IEツールバーの背景色』で調べる一発目に思いっきり同じ悩みの人にヒットするのですが、

実際実装もうまくいかなかったりでして、もう一度ソースが悪いのか見てみます。



ありがとうございます。

引用返信 編集キー/
■9160 / inTopicNo.10)  Re[9]: FromKnownColor エクスプローラの色
□投稿者/ 渋木宏明(ひどり) (477回)-(2007/10/19(Fri) 22:52:18)
渋木宏明(ひどり) さんの Web サイト
> そもそもgoogleやgooやその他のツールバーはどうしてIEが自前で塗っている背景色を知っているのでしょうか!?

ですからー、あれらは自分で背景を塗ってるわけじゃないんですって。

前の投稿で

>「Windows のコモンコントロールであるツールバーかリバーのスタイル」で、「背景色は透明(=自分で塗らない)」指定をしなければいけないんじゃなかったかな。
>(遠い昔のことなので詳細は忘れました)

て書きましたよね?

.NET の標準クラスライブラリの Toolbar や ToolStrip が↑の属性に対応してないんです。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -