关于SilverLight视频播放器

关于SilverLight视频播放器,第1张

概述最近因为工作中用到Silverlight播放器的,所以接触到一些silverlight的东西,本打算实行拿来主义。谁料拿来的还是有些问题,只能自己修改。 下面对自己遇到的问题归纳一下,供以后的同学参考。 首先,播放器最大的问题就是全屏后视频不能放大。其实关于放大的问题网上有很多文章,但是大都相同。其实只是添加一个缩放的方法。代码如下 :   private static double APP_WI

最近因为工作中用到Silverlight播放器的,所以接触到一些silverlight的东西,本打算实行拿来主义。谁料拿来的还是有些问题,只能自己修改。

下面对自己遇到的问题归纳一下,供以后的同学参考。
首先,播放器最大的问题就是全屏后视频不能放大。其实关于放大的问题网上有很多文章,但是大都相同。其实只是添加一个缩放的方法。代码如下


  private static double APP_WIDTH = 498;  // Application WIDth  整播放部分(包括下面的进度声音等按钮)的宽度,这个很重要,我

遇到的最后一个问题就是这个,因为这个设置不好,缩放比例就会有问题
        private static double APP_HEIGHT = 414; // Application Height  整播放部分(包括下面的进度声音等按钮)的高度
        private bool _scale = false;            // _scale flag 

public MainPage()
        {
            InitializeComponent();           
            CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);
            Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_Resized);
        }
private voID FullScreenbutton_Click(object sender,RoutedEventArgs e)
        {
           
            _scale = !Application.Current.Host.Content.IsFullScreen;
            Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
           
        }
 voID Content_Resized(object sender,EventArgs e)

        {

            double currentWIDth = Application.Current.Host.Content.ActualWIDth;

            double currentHeight = Application.Current.Host.Content.ActualHeight;


            if (_scale)
            {
                // Scale up the Canvas   
                Translate.X = 0;
                Translate.Y = 0;               
                Scale.ScaleX = currentWIDth / APP_WIDTH;
                Scale.ScaleY = currentHeight / APP_HEIGHT;
               
            }
            else
            {
                // position the Canvas to the center
                Translate.X = (currentWIDth - APP_WIDTH) / 2;
                Translate.Y = (currentHeight - APP_HEIGHT) / 2;
                Scale.ScaleX = 1;
                Scale.ScaleY = 1;
               
            }
           

        } 
其实方法很简单很容易看懂,可能是因为刚接触的原因,一直不明白 <Scaletransform ScaleX="1" ScaleY="1" x:name="Scale" />在前台页面时怎

么使用的,因为这个问题浪费不少时间,后来多看了几个例子后,豁然发现原来无论是GrID还是MediaElement都有类似这样地方:
 <GrID.Rendertransform>//Rendertransform这个在userControl,GrID,MediaElement里面都有。
                <transformGroup>
                    <Scaletransform ScaleX="1" ScaleY="1" x:name="Scale" />
                    <Translatetransform X="0" Y="0" x:name="Translate" />
                </transformGroup>
            </GrID.Rendertransform>
加上这些后视频就能正常缩放了。

其次,我的问题是加完这些缩放后视频的位置不正确,视频的左上角在屏幕的中央,这个问题也让我百思不得其解,看了很多资料,貌似都是我上面

那样设置的啊,没有额外的其他了。后来因为后面的问题才发现,其实是因为我只缩放了MediaElement,而这个空间是居中显示的所以视频的位置不

对,视频下面的进度条等的位置也不对,后来对整个这些所在的GrID进行缩放后终于正确。
最后,说下进度条的问题,在上面的问题中发现进度条因为没有缩放,在屏幕的中间,所以就先修改了进度条的隐藏,其实这个很简单。代码如下:
private voID transportControls_MouseLeave(object sender,RoutedEventArgs e)
        {
            MediaGrID.Height += transportHeight;
            //transportControls.Visibility = Visibility.Collapsed;
            playPausebutton.Visibility = Visibility.Collapsed;
            time.Visibility = Visibility.Collapsed;
            mutebutton.Visibility = Visibility.Collapsed;
            volumeSlIDer.Visibility = Visibility.Collapsed;
            fullScreenbutton.Visibility = Visibility.Collapsed;
        }
        private voID transportControls_MouseEnter(object sender,RoutedEventArgs e)
        {
            MediaGrID.Height -= transportHeight;
            //transportControls.Visibility = Visibility.Visible;
            playPausebutton.Visibility = Visibility.Visible;
            time.Visibility = Visibility.Visible;
            mutebutton.Visibility = Visibility.Visible;
            volumeSlIDer.Visibility = Visibility.Visible;
            fullScreenbutton.Visibility = Visibility.Visible;          
        }

另外,在调试过程中因为缓存问题,消耗不少时间,因为我的silverlight是放到SharePoint网站上的,所以一直在网站上调试,(其实可以使用本

地视频进行调试 :-P),但是IE缓存太厉害了,我把播放器删除后仍能播放,最后发现只要清楚临时文件里所有东西就OK。(临时文件存放位置:C:

/Users/用户名/AppData/Local/Microsoft/windows/Temporary Internet files)总之,因为对Silverlight第一次接触,烦了很多低级错误吧。就此引以为戒吧。

总结

以上是内存溢出为你收集整理的关于SilverLight视频播放器全部内容,希望文章能够帮你解决关于SilverLight视频播放器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1074712.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存