閲覧ありがとうございます。
現在visalstudioにてform上の動画を再生すると再生中は静止画連続キャプチャし続けるアプリケーションを作成しています。
foreach文だとエラーが発生してしまったので、for文に再生時間ループする文を記述したのですが再生時間の秒数ぶんしかピクチャできません。
エラーはでないのですが30秒なので30枚しかピクチャできていない状態です。
for文に問題があるとは思うのですがどのように記述すれば良いかわからず困っています。
ご教示いただけると幸いです。よろしくお願い致します。
c#
1 2 private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) 3 { 4 switch (e.newState) 5 { 6 //停止状態に入った時 7 case (int)WMPLib.WMPPlayState.wmppsStopped: 8 9 break; 10 11 //再生中に入った時 12 case (int)WMPLib.WMPPlayState.wmppsPlaying: 13 //foreach (var i in axWindowsMediaPlayer1.status) 14 for(int i=0;i < axWindowsMediaPlayer1.currentMedia.duration; i++) 15 { 16 17 18 // クライアント領域を表す四角形を取得 19 var r = this.ClientRectangle; 20 21 // スクリーンキャプチャするためのBitmapオブジェクトの生成 22 var bmp = new Bitmap(r.Width, r.Height, PixelFormat.Format32bppArgb); 23 24 // Graphicsオブジェクトの生成 25 var g = Graphics.FromImage(bmp); 26 27 // 転送元の左上座標取得 28 var upperLeftSource = this.PointToScreen(new Point(0, 0)); 29 30 // 転送先の左上座標取得 31 var upperLeftDestination = new Point(0, 0); 32 33 // CopyFromScreenメソッドでキャプチャ 34 g.CopyFromScreen( 35 upperLeftSource, upperLeftDestination, 36 this.ClientSize, CopyPixelOperation.SourceCopy); 37 38 39 //確認用にファイル出力 40 bmp.Save("C:\\entrypic\\"+i+".png"); 41 } 42 43 break; 44 45 46 //再生が全て終了した時 47 case (int)WMPLib.WMPPlayState.wmppsMediaEnded: 48 49 break; 50 51 default: 52 break; 53 } 54 }