由于项目需要,需要用vs窗体程序实现播放视频的窗口的全屏和取消全屏。具体实现界面如图:
注:为了界面的美观我的全屏并没有把左边的那些控件也盖住,但是是可以设置的,下边代码部分我会进行讲解。
1、首先说明一下我所用的控件及我的项目中控件的名称,以便大家理解。
显示视频的黑框是一个picturebox即代码中的VideoPlayWnd,全屏/取消全屏是一个button即代码中的button4
2、具体代码如下:
全屏和取消全屏是一个按钮即button4
private Int16 zoom = -1;//用来控制点击此button4的时候,是需要全屏还是取消全屏
//视频窗口的缩放代码
private void button4_Click(object sender, EventArgs e)
{
if(zoom<0)
{
float w = this.Width - 210; //为了保证左边的控件不被挡上减了一个210
float h = this.Height - 50;//为了底下的按钮不被挡上,因为还要用到,因此减了50
this.VideoPlayWnd.Size = Size.Ceiling(new SizeF(w, h));//重新部署视频框即这个picturebox空间的长宽
VideoPlayWnd.Location = new System.Drawing.Point(210, 0);//视频框的左上角坐标,会发现与我上边减去的210一致(大家肯定都理解为什么我就不说了)
button4.Location = new System.Drawing.Point(795, 0);//不能只有picturebox变了,这个button的位置也要保证和视频框同步,所以需要重设坐标
// button4.BackgroundImage = Image.FromFile(@"E:\lwj\addpersoninfo\addpersoninfo\Resources\退出全屏.png");//绝对路径(这是我测试的时候用的)
button4.BackgroundImage = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + @"退出全屏.png");//AppDomain.CurrentDomain.BaseDirectory语句可以获取到你当前项目的bin目录,所以需要把图片放到对应目录下
zoom = 1;//全屏之后,再点击需要取消全屏,因此要改变zoom的值
}
else
{ //以下为取消全屏,即还原自己的视频框和按钮,具体操作类似全屏,就不细致注释了
VideoPlayWnd.Location = new System.Drawing.Point(495, 360);
this.VideoPlayWnd.Size = Size.Ceiling(new SizeF(323, 271));
button4.Location = new System.Drawing.Point(795, 360);
button4.BackgroundImage = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + @"全屏.png");
zoom = -1;//取消全屏后再点击就要进行全屏,因此继续设为-1(保证小于0,以满足全屏操作的if条件)
}
}
以上代码中的按钮是给它加了一个全屏样式的背景图片,并在点击时切换背景图片。
第一次写博客,写得不好还要见谅啊,写的好的话,就夸夸我吧!哈哈。肯定还有更好用的方法,大家可以踊跃留言告诉我啊!一起学习进步。