TiTleバーで?

解決


マグ  2004-10-18 17:02:06  No: 117045  IP: [192.*.*.*]

VB.NETのFormのTitleバーの色を変更するにはどうすればいいでしょうか?

初心者でどのように記述すればいいか分かりません。
あちこち探しても見つかりませんでした。

環境:VB.NET

編集 削除
+id_rsa  2004-10-19 00:15:33  No: 117046  IP: [192.*.*.*]

それは、OSの仕事なので、一アプリがどうこうする問題ではありません。。
「どうしても」と言うなら、自分でタイトルバーを作るしか無いと思いますが・・・

編集 削除
マグ  2004-10-19 10:06:50  No: 117047  IP: [192.*.*.*]

>それは、OSの仕事なので、一アプリがどうこうする問題ではありません。

できない理由がわかりました。

ほかにPictureBoxを使ってFormの絵を描画させて、
最大化ボタンと最小化ボタンと閉じるボタンなどの作成と位置を算出するのが
面倒だったので、Titleバーの色を直接を変える方法を探していたのですが、
やっぱり、無理みたいでした。

がんばって、PictureBoxで自作してみます。

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

編集 削除
ひろ  2004-10-20 10:24:21  No: 117048  IP: [192.*.*.*]

参考までに・・・。もし、

「色は自分で付けたいけど最小化や最大化ボタンのデザインは標準の物にしたい」

というのであれば、Marletフォントを使用すると簡単です。
(WindowsのUI部品がMarletフォントで提供されているため)

Marletフォントを指定したボタンを用意して、
Caption ="0123456789abcdefghijklmnopqrstuvwxy"

としてみるとだいたい理解できると思います。

編集 削除
マグ  2004-10-20 12:43:24  No: 117049  IP: [192.*.*.*]

すみません。
Marletフォントというコントロールを探しているのですが、
なかなか、見つかりません。
どこにあるか教えてください。
お願いします。

環境:VB.NET 2003

編集 削除
特攻隊長まるるう  2004-10-20 12:54:23  No: 117050  IP: [192.*.*.*]

>Marletフォントを指定したボタンを用意して、
>Caption ="0123456789abcdefghijklmnopqrstuvwxy"
多分、普通のボタンコントロールを貼り付けて、[VB.NET]
なら Font プロパティを Marlet にして Text プロパティを
"0123456789abcdefghijklmnopqrstuvwxy"にしてみる
という事だと思うよ。

編集 削除
マグ  2004-10-20 14:03:15  No: 117051  IP: [192.*.*.*]

なるほど。

そういうことだったんですね。
確かに簡単な方法でした。

でも、もっと、Windowsのボタンらしいものにしたかったから、
PrintScanで画像を取り、その画像を加工して使用することにしました。

編集 削除
z  2004-10-20 18:56:42  No: 117052  IP: [192.*.*.*]

でもそうすると、ボタンの表面とかの色を変更された時まずいですよね?

編集 削除
マグ  2004-10-21 08:39:34  No: 117053  IP: [192.*.*.*]

>ボタンの表面とかの色を変更された時まずいですよね?

どういうことでしょうか?

PictureBoxの上に載ったときの画像の変更ですか?
それは大丈夫です。
あらかじめ、マウスがPictureBoxの上に載ったときに画像を変更するように
プログラムを打っておきました。
あと、前回の画像を使ってガンマ補正をかけて、明るくした、
画像を用意しました。

それとも、Marletフォントという話でしょうか?

言ってしまえば、フォントです。
よって、

        With Button1
            .BackColor = Color.FromArgb(255, 0, 0)
            .ForeColor = Color.FromArgb(255, 255, 255)
        End With

このように変更が出来るのではないでしょうか?

編集 削除
z  2004-10-21 09:28:37  No: 117054  IP: [192.*.*.*]

> でも、もっと、Windowsのボタンらしいものにしたかったから、
> PrintScanで画像を取り、その画像を加工して使用することにしました。

と書いてあったので、×ボタンとかの画像をキャプチャして
貼り付けて使うということだと理解しました。

で、その場合、コントロールパネルからWindowsの画面の配色を
変更された場合とかOSが違う場合(2000とXPとか)に、色があわ
ないのでは?と思った次第です。

余計なお世話だったようです。申し訳ない。

編集 削除
マグ  2004-10-21 11:32:34  No: 117055  IP: [192.*.*.*]

>コントロールパネルからWindowsの画面の配色を変更された場合

そんなことができたのですか〜〜〜

今まで知りませんでした。
その場合はあきらめるべきでしょう。
どうしようもないので・・・・・

あと、言われて見れば、Windows2000の存在を忘れていました。
これは、プラットフォームなどをどれを使っているかをプログラムで確認
させて、条件処理によって、
画像を変えるようにすれば、問題はないかと思います。
でも、記述方法を知っても、面倒なので、それは省略しました。(手抜きだけど・・・)
コントロールパネルからWindowsの画面の配色を変更された場合を判断処理させるのは
おそらく、Windowsのシステム関連を調べることになりそうな気がしますが、
結論から言うと、あきらめました。
っということで、解決

たぶん、手抜きだと思われそうな気がしますが・・・・・

編集 削除
ひろ  2004-10-21 13:13:08  No: 117056  IP: [192.*.*.*]

> でも、もっと、Windowsのボタンらしいものにしたかったから、
> PrintScanで画像を取り、その画像を加工して使用することにしました。

Marlettフォントって「ボタンらしいもの」ではなく「ボタンの絵そのもの」なんですけど(Marlettは最後はttが正しい名前でした。すいません)・・・

http://www.microsoft.com/typography/fonts/font.aspx?FID=14&FNAME=Marlett

# ttfCacheが壊れてボタンの絵が化ける事があるのもそのせいです。

編集 削除
マグ  2004-10-21 14:02:18  No: 117057  IP: [192.*.*.*]

ボタンの絵そのものになりました。

しかし、私は立体型なボタンにしたかったので、画像にしたということです。
最大化ボタンと閉じるボタンみたいな感じに・・・・・

編集 削除