回 帖 发 新 帖 刷新版面

主题:请教关于WindowsMediaPlayer控件视频尺寸改变问题

我在Form上加了一个菜单和一个WindowsMediaPlayer控件,希望播放视频时,WindowsMediaPlayer控件能随着Form大小的改变做相应调整。为此我做过多种努力,包括:
1、将WindowsMediaPlayer控件的Align属性设置成clClient;
2、在Form的OnResizing事件中将WindowsMediaPlayer控件的Width、Height设置成Form的ClientWidth和ClientHeignt;
3、在Form的OnResizing事件中将WindowsMediaPlayer控件的ClientWidth、ClientHeight设置成Form的ClientWidth和ClientHeignt;
    以上方法均未凑效。想请问有经验的朋友:
1、WindowsMediaPlayer控件在播放视频时,怎样读取媒体文件的原来尺寸(视频宽、高)?
2、怎样在播放时改变视频屏幕的宽和高?

回复列表 (共5个回复)

沙发

去掉控件的“按比例伸展”属性

板凳

我用的控件是Windows Media Player,不是BCB自带的TMediaPlayer。我查了一下,没有楼上所说的“按比例伸展”属性。能否用WindowsMediaPlayer的属性名表示一下?顺便解释一下,我只所以不用BCB的TMediaPlayer控件而选择WindowsMediaPlayer控件,是因为后者支持几乎所有流媒体格式文件(除rm和rmvb)。

3 楼

问题解决了。只要在容器控件的OnResize事件中添加:
 WindowsMediaPlayer1->DoObjectVerb(-1);
就解决了。我的代码是:

void __fastcall TForm1::Panel1Resize(TObject *Sender)
{
if(WindowsMediaPlayer1->playState==3)
{
WindowsMediaPlayer1->DoObjectVerb(-1);
}
WindowsMediaPlayer1->Width=Panel1->Width;
WindowsMediaPlayer1->Height=Panel1->Height;
WindowsMediaPlayer1->Refresh();
}

4 楼

谢谢 gebownagzm 的答案.

5 楼

办法虽好,但对某些机会出现不能拖动窗口和动态改变窗口大小的情况,所以得再改改注册表,才能做到完美!

我来回复

您尚未登录,请登录后再回复。点此登录或注册