大佬教程收集整理的这篇文章主要介绍了关于SilverLight视频播放器,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
最近因为工作中用到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视频播放器所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。