【Qt+FFmpeg】鼠标滚轮放大、缩小、移动——解码播放本地视频(三)
上一期我们实现了播放、暂停、重播、倍速功能,这期来谈谈如何实现鼠标滚轮放大缩小和移动;如果还没看过上期,请移步
【Qt+FFmpeg】解码播放本地视频(一)_logani的博客-CSDN博客【Qt+FFmpeg】解码播放本地视频(二)——实现播放、暂停、重播、倍速功能_logani的博客-CSDN博客
其实播放视频就是播放一帧一帧的图片,鼠标滚轮放大缩小和移动就是对绘图事件中的图片位置进行操作
实现效果
目录
一、FFmpeg解码流程图
二、滚轮放大、缩小、移动功能实现
1.滚轮放大缩小
(1)需要定义的变量
(2)滚轮事件
(3)绘图事件中设置
2.移动
(1)鼠标点击事件中记录当前鼠标位置
(2)鼠标移动事件
(3)鼠标双击事件
一、FFmpeg解码流程图
二、滚轮放大、缩小、移动功能实现
1.滚轮放大缩小
(1)需要定义的变量
double factor;//放大缩小的倍数int XPtInterval = 0; //平移X轴的值int YPtInterval = 0; //平移Y轴的值bool Pressed; //鼠标是否被摁压QPoint oldPos; //旧的鼠标位置setMouseTracking(true);//开启鼠标追踪this->Pressed = false;this->factor = 1.0;this->XPtInterval = 0; this->YPtInterval = 0;
(2)滚轮事件
void playVideoWidget::wheelEvent(QWheelEvent *event)//图片放大缩小
{double numDegrees = event->delta() / 8.0;double numSteps = numDegrees / 15.0;factor *= pow(1.1, numSteps);if (factor< 0.07){factor = 0.07;}else if(factor>50){factor = 50;}update();
}
(3)绘图事件中设置
设置放大缩小的倍数,同时进行平移操作
void playVideoWidget::paintEvent(QPaintEvent *)
{QPainter painter(this);if(!this->image.isNull())//如果图片不为空{painter.translate(0+ XPtInterval, 0+ YPtInterval);//进行平移painter.drawImage(QRect(0,0,this->width()*factor,(this->height()-45)*factor),this->image);}
}
2.移动
(1)鼠标点击事件中记录当前鼠标位置
记录鼠标为点击状态
void playVideoWidget::mousePressEvent(QMouseEvent *event)
{oldPos = event->pos();Pressed = true;
}
(2)鼠标移动事件
当鼠标按下时,获取当前鼠标的位置,减去之前位置计算出移动的距离,绘图事件中进行偏移
当鼠标释放时,记录鼠标处于非点击状态
void playVideoWidget::mouseMoveEvent(QMouseEvent *event)//移动
{if(Pressed!=false)//按下鼠标{this->setCursor(Qt::SizeAllCursor);//设置光标QPoint pos = event->pos();int xPtInterval = pos.x() - oldPos.x();//计算移动的距离int yPtInterval = pos.y() - oldPos.y();XPtInterval += xPtInterval;//加上偏移的距离YPtInterval += yPtInterval;oldPos = pos;//更新位置update();}
}void playVideoWidget::mouseReleaseEvent(QMouseEvent *event)//鼠标释放
{Pressed = false;this->setCursor(Qt::ArrowCursor);//设置光标
}
(3)鼠标双击事件
鼠标双击复原为初始状态
void playVideoWidget::mouseDoubleClickEvent(QMouseEvent *event)//双击初始化为开始
{factor=1.0;XPtInterval = 0;YPtInterval = 0;update();
}
感谢观看!!!!
以上就是全部内容,如果对您有帮助,欢迎点赞评论,或者发现有哪里写错的,欢迎指正!
【Qt+FFmpeg】鼠标滚轮放大、缩小、移动——解码播放本地视频(三)相关推荐
- Jquery鼠标滚轮放大缩小图片
使用Jquery鼠标点击图片,划动鼠标滚轮放大缩小图片. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...
- 鼠标滚轮放大/缩小图片
<img id=pic src=" http://community.csdn.net/images/CSDN_logo.GIF" width=105 height=31 b ...
- 鼠标滚轮 放大缩小图片
js实现鼠标滚轮放大缩小图片 <script> //放大缩小图片 function sdZoom(o) { var zoom=parseInt(o.styl ...
- 【Qt+FFmpeg】解码播放本地视频(二)——实现播放、暂停、重播、倍速功能
目录 一.FFmpeg解码流程图 二.播放.暂停.重播.倍速功能实现 1.创建播放.重播和倍速按钮 2.设置布局.样式.没有播放完毕前隐藏重播按钮 3.绑定信号槽 4.实现槽函数 (1)暂停和播放 ( ...
- LabVIEW操作鼠标滚轮放大/缩小图像
之前分享过一篇关于LabVIEW采集鼠标.键盘数据的文章:LabVIEW采集鼠标.键盘数据,本篇博文将分享一个关于鼠标滚轮的有意思小技巧:操作鼠标滚轮来放大和缩小图片. 示例效果如下所示: 本示例功能 ...
- js实现鼠标滚轮放大缩小页面指定区域(css3 scale)
一.需求 鼠标滚轮在红色边框区域内向上滚动:绿色边框盒子里所有元素缩小. 鼠标滚轮在红色边框区域内向下滚动:绿色边框盒子里所有元素放大. 点击还原按钮:绿色盒子里所有元素还原为初始值. 二.相关知识点 ...
- Python matplotlib绘图,使用鼠标滚轮放大/缩小图像
思路: 使用fig.canvas.mpl_connect()函数来绑定相关fig的滚轮事件 利用事件event的inaxes属性获取当前鼠标所在坐标系ax 使用get_xlim()函数获取坐标系ax的 ...
- 【Pycharm】用鼠标滚轮放大缩小字体
放大字体 File->Setting->Keymap->搜索"increase"->选第一个"Increase Font Size"并双 ...
- Pycharm-用鼠标滚轮放大缩小字体大小
1,pycharm 字体放大设置: ①,File -> setting -> Keymap ->在搜寻框中输入:increase -> Increase Font Size(双 ...
最新文章
- android studio 初次使用Kotlin(环境准备篇)
- HTML第八章ppt,html教程第八章(JavaSript核心语言对象).ppt
- [消息]C++ Connections 在拉斯维加斯召开年会
- 利用Jqurey写一个输入内容增加并且可以删除,上下移动的标签
- cuda的global memory介绍
- php文件上传前端页面样式,HTML实现美化上传文件样式
- Windows 安装 Redis 教程
- 持续集成部署Jenkins工作笔记0010---创建工程并配置源码管理
- Python——装饰器的学习笔记(legacy)
- HttpURLConnection上传文件(图片)小试
- linux将分区从目录上卸载,Linux CentOS 硬盘分区、格式化、挂载与卸载
- LinearLayout布局问题
- Oracle数据库岗位,Oracle数据库岗位职责
- 电脑找回,怎么找回电脑上删除的文件_怎么找回电脑删除的文件-win7之家
- du命令参数-h/-s
- 解决通过硬盘或U盘安装ubuntu server出现无法挂载光盘的问题教程
- mfc函数---CFileDialog的用法
- 为华生物NH2-PEG2000-MAL氨基聚乙二醇马来酰亚胺的简介及应用
- 第三方登录之Github登录篇
- scrapy框架开发爬虫实战——采集BOSS直聘信息【爬虫进阶】
热门文章
- Boilsoft Video Splitter绿色便携版下载(免序列号)
- Mindjet MindManager 2019使用教程:
- TIA博途V16上载程序后,在线无法监控程序,监控图标灰色,时间戳不一样如何解决?
- 一个获取ip地址的命令详解
- [再寄小读者之数学篇](2014-06-23 积分不等式 [中国科学技术大学2013年高等数学B 考研试题])...
- TP6(thinkphp6)队列与延时队列
- Linux 磁盘阵列、逻辑卷
- 机器学习之预测PM2.5项目报告
- 查询各科成绩前3和第3的学生(SQL)
- 【KNIME案例】对集合进行并交差补等运算