为什么关闭TMediaPlayer后屏幕上仍然显示残影

问题描述 投票:0回答:1

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

delphi c++builder
1个回答
0
投票

您可以使用

OnNotify
事件来触发图像的显示。

要在视频结束时触发

OnNotify
事件,您必须在调用
Mediaplayer.Notify := True
之前设置(Delphi 语法)
MediaPlayer.Play

来自文档(强调我的):

OnNotify 在媒体控制方法(后退、关闭、弹出、下一步、打开、暂停、PauseOnly、播放、上一个、恢复、倒带、开始录制、单步或停止)完成时发生 当 Notify 属性设置为 true 时在调用媒体控制方法之前。 OnNotify 事件发生后,Notify 属性必须重置为 true 才能发生下一个 OnNotify 事件。

清除最后一次图片通话

MediaPlayer1.Close;

© www.soinside.com 2019 - 2024. All rights reserved.