博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SDL绑定播放窗口 及 视频窗口缩放
阅读量:6757 次
发布时间:2019-06-26

本文共 1219 字,大约阅读时间需要 4 分钟。

 绑定播放窗口

必须在Sdl.SDL_Init之前执行 Sdl.SDL_putenv

同时SDL_SetVideoMode里播放窗口长宽不能大于绑定窗口的长宽

 

int i = Sdl.SDL_putenv("SDL_WINDOWID=" + panel2.Handle.ToString());            if (i != 0)            {                MessageBox.Show("SDL初始化失败!");                return false;            }

 

 

视频窗口缩放

如果需要设置播放窗口随窗口大小变化而变化,则会发现dock等属性无效,需要把绑定的播放控件大小设为非常大,至少大于全屏分辨率吧,然后在frm_Resize事件里处理

private void frm_Resize(object sender, EventArgs e)        {            if (this.WindowState == FormWindowState.Minimized)            {                return;            }             int PlayVideoWidth = this.Width - 50; //根据窗体的宽度获取获取视频播放区域的宽度            int PlayVideoHeight = this.Height - 40;//窗体宽带减去左右控件宽度及窗体边框宽度,可能有一两个像素的误差             surfacePtr = Sdl.SDL_SetVideoMode(PlayVideoWidth, PlayVideoHeight, 0,Sdl.SDL_SWSURFACE | Sdl.SDL_RESIZABLE);            rect = new Sdl.SDL_Rect(0, 0, (short)(PlayVideoWidth), (short)(PlayVideoHeight));        }

 

 

这里不需要修改SDL_CreateYUVOverlay的大小,CreateYUVOverlay的大小为视频分辨率,DisplayYUVOverlay则为播放窗口的大小

 

SDL_SetVideoMode的参数显示新的显示大小,而SDL_CreateYUVOverlay(只需建立一次,SDL_SetVideoMode更换时,不需要跟着更换)的参数则是图片的原始大小 。

而在SDL_DisplayYUVOverlay中用到的SDL_Rect,大小则和SDL_SetVideoMode一样,也就是新的显示大小。

 

对应未绑定播放窗口的需要在这里处理,鼠标事件 ev.type == Sdl.SDL_VIDEORESIZE

转载地址:http://vsweo.baihongyu.com/

你可能感兴趣的文章
风格化的ToggleButton
查看>>
vue.js 学习手记
查看>>
使用OSOT优化Windows 10虚拟桌面系统
查看>>
搭建spark源码运行环境报错及解决办法
查看>>
宝马汽车与中国马文化系列展示
查看>>
域账号锁定和管理工具
查看>>
linux文件系统
查看>>
HTTP协议头字段
查看>>
Linux文件系统之挂载/卸载
查看>>
textField限制输入整数0-100
查看>>
MySQL调优
查看>>
tableview 没有数据显示的时候,插入无数据的view
查看>>
数据结构与算法学习(一)
查看>>
ns3内核解析记录
查看>>
基于lnmp的Discuz论坛
查看>>
Xcode中的 编译过程以及编译器
查看>>
OSV配合windows 2008 r2 NPS 搭建802.1X认证环境
查看>>
01-Swift基础语法
查看>>
【MySQL】无法进入mysql connections问题
查看>>
再说TCP神奇的40ms
查看>>