トップページ > 記事閲覧
アルファチャンネル付きAVIファイルの透過再生について
名前:そら 日時: 2017/09/05 00:17

アルファチャンネル付きAVIファイルの透過再生について Windows7、C#で、DXライブラリを利用させて頂いております。 アルファチャンネル付きAVIを再生しているのですが、アルファのない部分でも、黒い部分が抜けてしまいます。 DX.SetUseTransColor(DX.FALSE)で、透過色機能は無効にしているのですが・・・。 原因は何が考えられるか、よろしければお教えください。 コードは下記のようにしております。 **初期化****************** DX.SetApplicationLogSaveDirectory("D:\\BS1\\AlphaMoviePlayer"); DX.SetUseDateNameLogFile(1); DX.SetOutApplicationLogValidFlag(1); DX.ChangeWindowMode(DX.TRUE); DX.SetUseBackBufferTransColorFlag(DX.TRUE); DX.SetDoubleStartValidFlag(DX.TRUE); DX.SetGraphMode(this.screenSize.Width, this.screenSize.Height, 32); DX.SetAlwaysRunFlag(DX.TRUE); DX.DxLib_Init(); DX.SetAlwaysRunFlag(DX.TRUE); DX.SetUseTransColor(DX.FALSE); **再生******************* this.isMovPlaying = true; DX.GetDrawScreenSize(out screenSizeX, out screenSizeY); screen = DX.MakeScreen(screenSizeX, screenSizeY, DX.TRUE); softImage = DX.MakeARGB8ColorSoftImage(screenSizeX, screenSizeY); DX.SetMovieColorA8R8G8B8Flag(DX.TRUE); DX.SetDrawScreen(screen); movieGraphHandle = DX.LoadGraph(FilePath); // メインループ while (DX.ProcessMessage() == 0) { if (DX.GetMovieStateToGraph(movieGraphHandle) == 0) { DX.SeekMovieToGraph(movieGraphHandle, 0); DX.PlayMovieToGraph(movieGraphHandle); } DX.ClearDrawScreen(); graphHandle = DX.DrawExtendGraph(DrawPoint.X, DrawPoint.Y, DrawPoint.X + DrawSize.Width + 1, DrawPoint.Y + DrawSize.Height + 1, movieGraphHandle, DX.TRUE); imageHandle = DX.GetDrawScreenSoftImage(0, 0, screenSizeX, screenSizeY, softImage); DX.UpdateLayerdWindowForSoftImage(softImage); DX.WaitTimer(6); firstLoop = false; } DX.ClearDrawScreen(); DX.SetDrawScreen(DX.DX_SCREEN_BACK); DX.ClearDrawScreen(); DX.ScreenFlip(); DX.DeleteGraph(movieGraphHandle); DX.DeleteSoftImage(softImage); DX.DeleteGraph(screen);
メンテ

Page: 1 |

Re: アルファチャンネル付きAVIファイルの透過再生について ( No.1 )
名前:管理人 日時:2017/09/05 00:19

内容的に SmokingWOLFさんのお書き込みとは被らなそうなので、別スレッドにしました アルファチャンネルの値で透過ウインドウを実現する場合は SetUseBackBufferTransColorFlag ではなく SetUseUpdateLayerdWindowFlag を使用します、なので DX.SetUseBackBufferTransColorFlag(DX.TRUE); こちらの部分を DX.SetUseUpdateLayerdWindowFlag(DX.TRUE); と書き換えて試してみてください m(_ _)m ( 手元の環境では載せていただいたプログラムに↑の変更を加えただけでAVIファイルの  アルファチャンネルが適用されました )
メンテ
Re: アルファチャンネル付きAVIファイルの透過再生について ( No.2 )
名前:そら 日時:2017/09/05 17:50

早速のご回答、ありがとうございます! お教え頂いた方法で、期待通りの動作を致しました!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存