DOBON.NETプログラミング道掲示板
(現在 過去ログ2 を表示中)

[ 最新記事及び返信フォームをトピックトップへ ]

■33747 / inTopicNo.1)  PictureBoxで動画を2回目に表示させる際に0除算エラーが起きる。
  
□投稿者/ けい 一般人(6回)-(2017/12/06(Wed) 16:37:31)
  • アイコン環境/言語:[Windows10、VB.NET、.NET Framework4.5.2] 
    分類:[.NET] 

    お世話になります。

    度々失礼します。

    Windows10、VB.NET2015、.NET Framework4.5.2で開発しています。

    Form1に、ピクチャーボックス(PictureBox1)、テキストボックス(txtFileName)、ボタン(btnStart、btnClear)があります。

    btnStartを押すと、PictureBox1において、txtFileNameに記載されている動画ファイル名(AVI)が放映されます。

    動画終了後、btnClearを押すと、PictureBox1の表示がクリアされます。

    btnStartを押すと、再度、動画ファイル(AVI)が、初めから放映されるようにしたいと思っています。

    コードは以下の通りです。

    -----------------------------------------
    〇ActiveMovie control type libraryを参照設定

    Public Class Form1
    Dim mGrp As QuartzTypeLib.FilgraphManager
    Dim mp As QuartzTypeLib.IMediaPosition
    Dim ba As QuartzTypeLib.IBasicAudio
    Dim vw As QuartzTypeLib.IVideoWindow
    Dim bv As QuartzTypeLib.IBasicVideo

    Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click

    mGrp = New QuartzTypeLib.FilgraphManager

    '再生用のグラフを作成
    mGrp.RenderFile(txtFile.Text)・・・・・(※)

    mp = mGrp

    ba = mGrp

    'ビデオサイズ(縦横)を取得
    Dim vx&, vy&
    bv = mGrp
    bv.GetVideoSize(vx, vy)

    'ウィンドウ内で動画を再生させる
    vw = mGrp
    vw.WindowStyle = &H40000000 'WS_CHILD
    vw.SetWindowPosition(0, 0, vx, vy)
    vw.Owner = PictureBox1.Handle

    '再生
    mGrp.Run()
    End Sub

    Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click

    mGrp.Stop()

    mp.CurrentPosition = 0
    mp = Nothing

    ba = Nothing

    vw.SetWindowPosition(0, 0, 0, 0)
    vw.Owner = Nothing
    vw = Nothing

    bv = Nothing

    mGrp = Nothing

    PictureBox1.Image = Nothing
    End Sub

    -----------------------------------------

    1回目の放映はうまくいくのですが、btnClearを実行してから、
    再度、btnStartを押しますと、
    (※)のところで、以下のエラーが発生します。

    -----------------------------------------
    型 'System.DivideByZeroException' のハンドルされていない例外が EyeImageTest.exe で発生しました

    追加情報:0 で除算しようとしました。
    -----------------------------------------

    おそらく、再生用に作られたグラフが完全に初期化されていないことが原因だと思うのですが、初期化の方法が分かりませんでした。

    InitializeComponent()を実行しますと、
    何の反応も示さなくなってしまいます。

    改善方法がございましたら、ご教示頂けましたら幸いです。

    どうぞよろしくお願い申し上げます。

    (参考)
    https://msdn.microsoft.com/ja-jp/library/cc353371.aspx

引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/


- Child Tree -