delphi 为什么关闭TMediaPlayer后屏幕上仍显示残留图像

pnwntuvh  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(129)

我有两个屏幕,其中一个屏幕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播放后立即显示我需要的图像

1tu0hz3e

1tu0hz3e1#

您可以使用OnNotify事件触发图像的显示。
要在视频结束时触发OnNotify事件,必须在调用MediaPlayer.Play之前设置( Delphi 语法)Mediaplayer.Notify := True
从文档(强调我的):
在调用媒体控制方法**之前将Notify属性设置为true时,在完成媒体控制方法(后退、关闭、弹出、下一个、打开、暂停、仅暂停、播放、上一个、恢复、倒带、开始录制、步进或停止)**后发生OnNotify。在OnNotify事件之后,必须将Notify属性重置为true,才能发生下一个OnNotify事件。
要清除最后一张图片,请调用MediaPlayer1.Close;

相关问题