我有两个屏幕,其中一个屏幕A显示软件界面,另一个屏幕B显示视频和图像信息。
现在,我需要在屏幕B上显示一个视频。视频播放后,我需要显示一个
TPNGImage
。问题是,视频播放后显示TPNGImage
有问题,屏幕仍然显示视频的最后一帧。使用定时器调用ReDrowMyself()
函数,图像是PNG图像,2160 * 3840。
void CSensory_Test::play_stop()
{
Form_Main->pForm_pg->Image_qmian->Visible = true;
Form_Main->pForm_pg->MediaPlayer1->Close();
}
void CSensory_Test::ReDrowMyself()
{
//
if(Form_Main->pForm_pg == NULL) {
return;
}
if(Form_Main->pForm_pg->Image_qmian->Visible)
{
try
{
Form_Main->pForm_pg->MediaPlayer1->Close();
}
catch(...)
{
}
}
TRect myrect(0,0,g_qm_width,g_qm_height);
Form_Main->pForm_pg->Image_qmian->Canvas->StretchDraw(myrect,gqmGraphic);
}
我期待关闭
TMediaPlayer
播放后立即显示我需要的图像。
您可以使用
OnNotify
事件来触发图像的显示。
要在视频结束时触发
OnNotify
事件,您必须在调用 Mediaplayer.Notify := True
之前设置(Delphi 语法)MediaPlayer.Play
。
来自文档(强调我的):
OnNotify 在媒体控制方法(后退、关闭、弹出、下一步、打开、暂停、PauseOnly、播放、上一个、恢复、倒带、开始录制、单步或停止)完成时发生 当 Notify 属性设置为 true 时在调用媒体控制方法之前。 OnNotify 事件发生后,Notify 属性必须重置为 true 才能发生下一个 OnNotify 事件。
清除最后一次图片通话
MediaPlayer1.Close;