QT界面,鼠标滚轮实现缩放问题
1、实现放大与缩小接口:
//发生缩放
if(scaling_flag == 1)
{
Video->setScaledContents(false);
//fprintf(stderr,"__________________________%f\n",m_scaling);
//QImage: out of memory, returning null image
// QImage* imgScaled = new QImage;
// *imgScaled=mge.scaled(mge.width()*m_scaling,
// mge.height()*m_scaling,
// Qt::KeepAspectRatio);
// mge = *imgScaled;
//解决图片过大,出现内存溢出
mge = mge.scaled(mge.width()*m_scaling,
mge.height()*m_scaling,
Qt::KeepAspectRatio);
//fprintf(stderr,"----------------------------------%d,%d\n",mge.width(),mge.widthMM());
//解决图像中心缩放
if(mge.width()>Video->width())
{
mge = mge.copy((mge.width()-Video->width())/2,(mge.height()-Video->height())/2,
Video->width(),Video->height());
}
}
通过放大与缩小来改变m_scaling的值
void tomato::zoomIn()
{
if(m_videoDev.fd == -1)
{
QMessageBox::warning(this,"放大","摄像头未打开!");
return;
}
myTimer.stop();
scaling_flag = 1;
m_scaling = m_scaling*1.2;
while(m_scaling > 20)
{
m_scaling = 20;
}
myTimer.start();
}
void tomato::zoomOut()
{
if(m_videoDev.fd == -1)
{
QMessageBox::warning(this,"放大","摄像头未打开!");
return;
}
myTimer.stop();
scaling_flag = 1;
m_scaling = m_scaling/1.2;
while(m_scaling<0.05)
{
m_scaling = 0.05;
}
myTimer.start();
}
2、重写滚轮事件
// 滚轮事件
void tomato::wheelEvent(QWheelEvent *event)
{
/*
//得到鼠标事件的位置
//当滚动缩略图标时,鼠标位置不正确,导致图像也发生了缩放
int x = event->x();
int y = event->y();
*/
QPoint pos;
QPoint pos1;
QPoint pos2;
pos1 = mapToGlobal(QPoint(0,0));
pos2 = event->globalPos();
pos = pos2 - pos1;
/*
fprintf(stderr,"pos.x() = %d,pos.y() = %d;Video->x() = %d,Video->y() = %d;Video->width() = %d,Video->height() = %d\n"
,pos.x(),pos.y(),Video->x(),Video->y(),Video->width(),Video->height());
*/
//判断鼠标位置是否在图像显示区域
if (pos.x() > Video->x() && pos.x() < Video->x()+Video->width()
&& pos.y() > Video->y() && pos.y() < Video->y()+Video->height())
{
// 当滚轮远离使用者时进行放大,当滚轮向使用者方向旋转时进行缩小
if(event->delta() > 0)
{
zoomIn();
}
else
{
zoomOut();
}
}
}
QT界面,鼠标滚轮实现缩放问题相关推荐
- Win10中Pro/E鼠标滚轮不能缩放该怎么办?
Pro/E安装好后,鼠标滚轮不能缩放模型,该怎么办?问题多发生在win8/win10上,新装了PROE,发现滑动鼠标中键不能放大缩小. 1.打开左下角搜索,搜索"网络设置". 2. ...
- winform 以光标指向点为中心 通过鼠标滚轮对图片进行缩放
最近一个项目需要涉及到图片的全屏显示以及缩放拖动功能,其中缩放实现需要考虑的一点就是为了有更好的用户体验,需要在缩放的时候以光标所处位置为参考点,进行缩放操作,简单来说就是,缩放前后光标在图片上所处的 ...
- unity相机脚本 鼠标滚轮控制缩放
1.创建一个onWhellScroll函数并放在LateUpdate内(LateUpdate是内置函数与Update一样) public class detailCameraHandle : Mono ...
- 通过鼠标滚轮实现缩放效果
using System.Collections; using System.Collections.Generic; using UnityEngine;public class Scroll : ...
- unity 鼠标滚轮实现缩放:将摄像机的镜头拉近或者拉远
using System.Collections; using System.Collections.Generic; using UnityEngine; public class shuBiao ...
- Qt编程之通过鼠标滚轮事件缩放QGraphicsView里面的Item
首先自己subclass QGraphicsView的一个类,叫DiagramView,然后重新实现它的滚轮事件函数,然后发送一个缩放信号: 1 oid DiagramView::wheelEvent ...
- C# chart1 添加滚动条的缩放 鼠标滚轮控制缩放
namespace APP { public partial class Form1 : Form { public Form1() { InitializeComponent(); } privat ...
- Proe 5.0鼠标滚轮无法缩放的解决方法
鼠标中键(也就是滚轮)在软件里起"确认"功能,滚轮上下滑动可以进行缩放,没反应的话解决办法如下: 1.win+i打开设置界面 2.在设备选项中选择鼠标按键,将悬停在·非活动窗口滚动 ...
- [笔记] 关于通过鼠标滚轮设置缩放的技巧
鼠标正向滚动的时候, 拿到的滚动数据是大于 0 的, 反之, 小于 0. Pow 函数在 x 为正数的时候, 返回值是大于 1 的, x 为负数的时候, 返回值是小于 1 的, 可以直接设置这样的一个 ...
最新文章
- Dubbo服务暴露原理
- c++ 取机器码_吉林c系列防倒灌风帽怎么卖,流线型通风器可定制
- oracle11 for download official
- ElasticSearch5.5.1插件分类
- XGBoost算法概述
- 相同的树Python解法
- 【DFS + 记忆化递归 + DP】LeetCode 91. Decode Ways
- H3C交换机配置STP配置
- Anatomy of a Program in Memory
- Linux学习笔记5 - Shell编程(类似于Windows下的批处理)
- Python翻译Excel文件
- 基于单片机的水温控制系统设计
- 项目中出现npm WARN locking errno: -4048, npm WARN locking code: ‘EPERM‘, npm WARN locking syscall:
- 数据清洗第六章—课后操作题
- 编程题 java 密码锁_Java实现 蓝桥杯VIP 算法提高 密码锁
- 服务器重装系统踩坑总结
- java打印数组的连续非空子集_Apriori算法求数组的非空子集java代码
- 武汉理工大学c语言pta选择题答案,武汉理工大学c语言实验及答案.doc
- JS复制文本到粘贴板,前端H5移动端点击按钮复制文本到粘贴板。
- 在java语言中 ()方法是不可以继承的_Java 语言中,构造方法是不可以继承的。( )_学小易找答案...
热门文章
- 【源码阅读】GAT:GRAPH ATTENTION NETWORKS
- Python 输入一个整数,将他转换为数字金字塔和 * 金字塔
- 转:用迅雷下载Android SDK全系列
- 华为KubeEdge在边缘计算的实践
- 华为西欧副总裁:华为很快就能推出自研操作系统
- 单反相机坏点和噪点测试软件,坏点和噪点测试程序(照片检测工具)
- 线上拼团活动方案怎么制作设计?
- hc sr501 c语言程序,HC-SR501人体红外感应模块资料汇总(原理图、常见问题、程序等)...
- python计算线性回归方程
- unity中3D数学相关类、属性、方法、用途总结+超级综合的案例