ホーム >プログラム >Delphi 6 ローテクTips >壁紙ビデオ

ある時、ふと設計中のフォームの背景色を$100010にしてみたところ、たまたまそのフォームの後ろにあって動画を再生していたメディアプレーヤーの動画がそのフォームに映っていました。

 これは使える!!

ということで色々やってみた結果が壁紙ビデオ。


まずはデスクトップで動画を再生を見ていただいて。
まぁこんなことができるわけです。
全画面で動画を再生しつつPCの作業が普通にできるというのが売りでしょうか。
とはいえ肝心の中心部分は作業のためのウィンドウで埋め尽くされるのでデスクトップの端の方でうにょうにょ動いてるのを見ることができる程度なんですが。
でもそれを言ったら壁紙だって同じことなわけで。
まぁ要するに雰囲気の問題ですね。
動画が全画面の背景で動いてるだけでなんだか楽しい気分。
そんな感じで。


それでは下準備。
デスクトップの壁紙を(なし)にします。
背景色をRGB値で(16, 0, 16)にします。16進なら(10, 00, 10)
手動でやるのが面倒なら以下のルーチンをどうぞ。

var
  li_Element, li_Color: Integer;
begin
  //壁紙無し
  SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(''), SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE);

  //デスクトップの背景色を変更
  li_Element := COLOR_BACKGROUND;
  //この色の上にビデオがオーバーレイされる
  li_Color   := $100010;
  SetSysColors(1, li_Element, li_Color);

肝心のメインのソースコード。
Form1とForm2を用意してForm1にMediaPlayerとOpenDialogを貼り付けます。

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form2 := TForm2.Create(Self);
  Form2.BorderStyle := bsNone;
  Form2.SetBounds(0, 0, 0, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (OpenDialog1.Execute) then begin
    MediaPlayer1.FileName := OpenDialog1.FileName;
    MediaPlayer1.Open;
    MediaPlayer1.Display := Form2;
    MediaPlayer1.DisplayRect := Screen.WorkAreaRect;
    MediaPlayer1.Play;
  end;
end;

これだけです。
要はRGB(16, 0, 16)の色の所に動画がオーバレイされるのを利用してるだけです。
なのでデスクトップだけでなく、例えばホームページの背景色を#100010にすればその色の部分に動画がオーバーレイされるので、あたかも背景が透けているように見えます
文字が読みにくいのが難点ですが、まぁでも意外と読めなくはないってな感じです。


この技が効かないケース

TWindowsMediaPlayerTMSWebDVDを使ってDVDを再生させた場合、オーバーレイの色は$100010ではなく$001000になることもあるようです。