フォームの色が赤のときは赤の部分を、青色のときは青の部分を、
と言ったようなかんじで、指定した色の部分(フォームを含む)を
透過させたいのですが、なにか方法をご存知の方いらっしゃいませんか?
(タイトルバーは残しておきたいです。)
マスク作ってリージョン作って
合成する、ってことになるかと思います。
Sayさん回答ありがとうございます。
リージョン作ってフォームを消す方法はできたのですが、
できればマスク画像を使わずに、やりたいのです。
色を指定して、フォームも、フォーム上のオブジェクトも
同じ色の部分は透過できる方法があるように聞いたのですが…。
何かご存知の情報があれば教えていただきたいと思います。
不定形部分合成をやる以上、何らかのマスクは必要です。
もちろん、透過色指定ということなら、
マスク画像を自動生成することは可能ですが・・・。
また、OS限定ならレイヤードウィンドウを使う、という手も
ありますが、マスク処理をシステムがやってくれている
というだけで、マスク不要というわけではないです。
マスク画像の自動生成。
たしかどんな色を背景にしても、うまくマスク画像を作れる方法というのが、どこかにのってましたよん。
(作成言語はVB)
場所は忘れちゃいましたけど…。
検索サイトで、探してみては?
SetLayeredWindowAttributes
はどうですか。
>色を指定して、フォームも、フォーム上のオブジェクトも
>同じ色の部分は透過できる方法があるように聞いたのですが…。
ということができるか分かりませんが、色を指定して透過する
ことはできるみたいです。
Windows NT/2000:Windows 2000
Windows 95/98:対応していません
となっているみたいですけど。
すいません。上記はSayさんの回答と同じです。
編集 削除回答ありがとうございました。
Bitblt関数を使用して、仮のマスク画像を作って、透過することはできました。
ただ、MDIの子フォームで使用したのですが、どうも親フォームも透過してしまい、バックのデスクトップが見えてしまいました。
なので、ひとまずSetWindowRgnを使って対処することにしました。
どうもありがとうございました。