C#で動画(*.wmv)を再生するだけのアプリケーションを作っています。

COMコンポーネントの「Windows Media Player」を使用して動画を再生させることはできたのですが、フォームのOpacityを操作して半透明にしようとすると動画が真っ黒になって表示されなくなってしまいます。
ウィンドウをドラッグするとチラチラと表示されてバグっぽい挙動なのですが、回避する方法は無いものでしょうか?
また、半透明ウィンドウ(またはカラーキーで透過)で動画を再生しているアプリケーションのサンプルが紹介されているサイトがありましたら教えてください。

OSはWindowsXP SP2、VisualC#は「2005 ExpressEdition」と「.NET 2003」の両方で試しています。

よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:2006/12/03 23:50:51
  • 終了:2006/12/05 17:40:59

ベストアンサー

id:kaorun No.1

kaorun回答回数44ベストアンサー獲得回数102006/12/05 16:34:12

ポイント60pt

すいません、確認はしていないのですが、オーバーレイなどの原理的に考えると、Opacityの指定だけで動画を透過再生されるのは難しいのではないかと思います。ひょっとしたらManaged DirectXを使用する動画再生で対処方法があるかも知れませんが...。

一方で、違う畑になってしまいますが、WPFを使ってしまえば同様の処理は異様に簡単です。MediaElementを使用して半透明なウインドウに張るだけですし、VisualBrushにしてしまえば、透過だろうがグラデーションだろうが3Dエフェクトだろうがかけ放題です。コード(XAMLマークアップ)的にも非常にシンプルになります。

<Window x:Class="TransparentVideoPlayer.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="TransparentVideoPlayer" Height="300" Width="400" 
    Background="Transparent" Opacity="0.5" WindowStyle="None" AllowsTransparency="True">
  <Grid >
      <MediaElement Source="test.wmv" Width="320" Height="200"  />
  </Grid>
</Window>

参考:

theWPFblog - 3D Video Player Thing 
http://thewpfblog.com/?p=10
id:nori_0000

ご回答ありがとうございます

やはり簡単にはいかなそうですか。

残念ですが半透明ウィンドウでの動画再生はあきらめます。

それにしてもWPFは面白そうですね!

初めて知りましたがとても興味を持ちました。

2006/12/05 17:40:23

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません