フォームの色を指定して透明化するには

解決


ぐーり  2002-07-15 17:58:04  No: 75838  IP: [192.*.*.*]

フォームの色が赤のときは赤の部分を、青色のときは青の部分を、
と言ったようなかんじで、指定した色の部分(フォームを含む)を
透過させたいのですが、なにか方法をご存知の方いらっしゃいませんか?
(タイトルバーは残しておきたいです。)

編集 削除
Say  2002-07-16 09:09:16  No: 75839  IP: [192.*.*.*]

マスク作ってリージョン作って
合成する、ってことになるかと思います。

編集 削除
ぐーり  2002-07-17 09:55:19  No: 75840  IP: [192.*.*.*]

Sayさん回答ありがとうございます。
リージョン作ってフォームを消す方法はできたのですが、
できればマスク画像を使わずに、やりたいのです。
色を指定して、フォームも、フォーム上のオブジェクトも
同じ色の部分は透過できる方法があるように聞いたのですが…。
何かご存知の情報があれば教えていただきたいと思います。

編集 削除
Say  2002-07-17 13:33:32  No: 75841  IP: [192.*.*.*]

不定形部分合成をやる以上、何らかのマスクは必要です。

もちろん、透過色指定ということなら、
マスク画像を自動生成することは可能ですが・・・。

また、OS限定ならレイヤードウィンドウを使う、という手も
ありますが、マスク処理をシステムがやってくれている
というだけで、マスク不要というわけではないです。

編集 削除
たかみちえ  URL  2002-07-17 18:57:13  No: 75842  IP: [192.*.*.*]

マスク画像の自動生成。
  たしかどんな色を背景にしても、うまくマスク画像を作れる方法というのが、どこかにのってましたよん。
(作成言語はVB)
場所は忘れちゃいましたけど…。

  検索サイトで、探してみては?

編集 削除
けみ  2002-07-18 09:22:53  No: 75843  IP: [192.*.*.*]

SetLayeredWindowAttributes
はどうですか。

>色を指定して、フォームも、フォーム上のオブジェクトも
>同じ色の部分は透過できる方法があるように聞いたのですが…。
ということができるか分かりませんが、色を指定して透過する
ことはできるみたいです。

Windows NT/2000:Windows 2000
Windows 95/98:対応していません
となっているみたいですけど。

編集 削除
けみ  2002-07-18 09:26:48  No: 75844  IP: [192.*.*.*]

すいません。上記はSayさんの回答と同じです。

編集 削除
ぐーり  2002-07-23 10:38:04  No: 75845  IP: [192.*.*.*]

回答ありがとうございました。
Bitblt関数を使用して、仮のマスク画像を作って、透過することはできました。
ただ、MDIの子フォームで使用したのですが、どうも親フォームも透過してしまい、バックのデスクトップが見えてしまいました。
なので、ひとまずSetWindowRgnを使って対処することにしました。
どうもありがとうございました。

編集 削除