DOBON.NET DOBON.NETプログラミング掲示板過去ログ

「フォームウィンドウの特定の色を透明にする」で、特定の色にPNGの透明色を指定するには?

環境/言語:[Windows2000以降?/C# 1.1]
分類:[.NET]

VS.NET 2003でC#を使って、
.NET Framework1.1のWindowsフォーム アプリケーションを作成しています。

Windows XPのテーマの機能のように、ウィンドウを構成するパーツに
独自の画像を使えるようなウィンドウを作っています。

「フォームウィンドウの特定の色を透明にする」を参考にし、
カドの丸いウィンドウができるようにしようと思ったのですが、

「特定の色」をたとえば赤(255,0,0)にしたら、
パーツの部品としてこの色を使えなくなってしまいます(使うとそこも透明になる)。
あまり使われない色を指定したとしても、グラデーション画像や写真などで
知らずに使ってしまう可能性もあり、不安です。

GIFやPNGのいわゆる「透明色」をそのままTransparencyKeyに指定する方法は
ありませんでしょうか?
Color.TransparentはフォームのBackColorに指定できないため、
試そうにも試せませんでした。
> GIFやPNGのいわゆる「透明色」をそのままTransparencyKeyに指定する方法は
> ありませんでしょうか?

画像について詳しくないので偉そうなことはいえませんが、GifやPngの透明色も何らかの色を透明色として指定しているだけではないんですか?
■No8458に返信(管理人さんの記事)
> 画像について詳しくないので偉そうなことはいえませんが、
> GifやPngの透明色も何らかの色を透明色として指定しているだけではないんですか?

ええ。大抵はショッキング ピンク (派手なピンク) だったりします。

#00ff00
なんかも
■No8477に返信(中 博俊さんの記事)
> 緑 #00ff00 なんかも

中センセ、緑って一般的なんですか?

私が見かけるのは、

 ・Magenta (0xFF00FF)
 ・Red (0xFF0000)

くらいですかね...。

# って、私も画像については詳しくない性質。(^-^;)



   /*******************************************
     * @Remarks    じゃんぬねっと
     * @Homepage  http://f57.aaa.livedoor.jp/~jeanne/
     * @Blog        http://www.ailight.jp/blog/jeanne/
     *******************************************/
こればっかりは人によりますが、まぁ中間色を使わなければって世界ですね。
マゼンタ純色や、緑純色なんかはあんまり使わない系統ですので、その範囲でご自由にですね。

ただこの抜きに関してもエッジの色との落差や、縁取りのある絵かそうでないかによっても異なってきたりしますので、難しいところです。
みなさんありがとうございます。
てっきりRGBであらわせない色が一色定義されていて、それを透過にしてるのかと
思ってましたが、何かの色を使っていたんですね。

画像によって違うのであれば、それを取得するという方法が
スマートなんでしょうか。

私の作ってるものは、ひとつのxmlがあってその中で画像のファイル名が指定されていて
そのファイルをテーマに使用するというものでした。
今回は、透過画像のサポートはやめて、このxmlのどこかに属性でも増やして、
そこで指定された色をTransparencyKeyにするような仕様にしようと思います。

テーマ作成担当者が適当な色を選んで透過にしたい部分に塗り、
その色コードをxmlに入れてくれればいいって感じします。

本当にありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板