ある時、ふと設計中のフォームの背景色を$100010にしてみたところ、たまたまそのフォームの後ろにあって動画を再生していたメディアプレーヤーの動画がそのフォームに映っていました。
これは使える!!
ということで色々やってみた結果が壁紙ビデオ。
まずはデスクトップで動画を再生を見ていただいて。
まぁこんなことができるわけです。
全画面で動画を再生しつつPCの作業が普通にできるというのが売りでしょうか。
とはいえ肝心の中心部分は作業のためのウィンドウで埋め尽くされるのでデスクトップの端の方でうにょうにょ動いてるのを見ることができる程度なんですが。
でもそれを言ったら壁紙だって同じことなわけで。
まぁ要するに雰囲気の問題ですね。
動画が全画面の背景で動いてるだけでなんだか楽しい気分。
そんな感じで。
それでは下準備。
デスクトップの壁紙を(なし)にします。
背景色をRGB値で(16, 0, 16)にします。16進なら(10, 00, 10)
手動でやるのが面倒なら以下のルーチンをどうぞ。
肝心のメインのソースコード。
Form1とForm2を用意してForm1にMediaPlayerとOpenDialogを貼り付けます。
これだけです。
要はRGB(16, 0, 16)の色の所に動画がオーバレイされるのを利用してるだけです。
なのでデスクトップだけでなく、例えばホームページの背景色を#100010にすればその色の部分に動画がオーバーレイされるので、あたかも背景が透けているように見えます。
文字が読みにくいのが難点ですが、まぁでも意外と読めなくはないってな感じです。
※この技が効かないケース
実行させても音だけ出て肝心の映像は出てこないので一瞬戸惑ってしまいます。
オーバーレイを利用できるウィンドウは一つだけなので既にオーバーレイを使ってるプレーヤーがあると他のプレーヤーはオーバーレイを利用できません。
ビデオ再生はできますがオーバーレイは利用はしていないので画面キャプチャをとるとオーバーレイを使っているプレーヤーの画面は取得できずに真っ黒になるのに対し、後から起動した(オーバーレイを使ってない)プレーヤーの画面はキャプチャできます。
2009年にネットブックを買ったところ二つのウィンドウで同時にオーバーレイが使えました。
最近のPCでは複数のオーバーレイが同時に使えるようです。
それとオーバーレイされる色ですが以前はマゼンタ(うすい紫っぽい色)だったように思うのですが(Windows
3.1の時代に買ったTVキャプチャがそうだった)今は変わったんでしょうかね。
それともグラフィックカードごとで違うんでしょうか。
ちなみにうちはNVIDIA GeForce2 MX/MX400です。
2009年に買ったネットブックはIntelの内臓GPUです。
多分SP2でDirectXのバージョンが上がったことでオーバーレイに使われる色が変わったせいなのではないかと思います。
ということでSP2より前の場合はデスクトップの背景色を違う色(10進値のRGBで(0,
16, 0)とか(0, 16, 16)など)にセットすればうまくいくかも知れません。
無圧縮AVIも壁紙ビデオにするためにはDirextShowなどを利用しないといけないようです。
WindowsMediaPlayer 10ではメニューで「ツール」→「オプション」で出てくるダイアログの「パフォーマンス」タブを選択して「ビデオアクセラレータ」の「詳細」ボタンを押すと出てくるフォームで「ビデオアクセラレータ」の「ビデオ ミキシング レンダラを使う」と「オーバーレイを使う」の両方にチェックを入れていないとオーバーレイは無効になります。
初期設定では両方チェックが入っています。
Windows 7用のWindowsMediaPlayerはオーバーレイを使わないEVRというビデオレンダラを使用するので壁紙にできません。
恐らくVistaでもだめだと思います。
TWindowsMediaPlayerやTMSWebDVDを使ってDVDを再生させた場合、オーバーレイの色は$100010ではなく$001000になることもあるようです。