1 Star 0 Fork 0

小喻同学i/UIReticle

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
zoomhandler.cpp 1.59 KB
一键复制 编辑 原始数据 按行查看 历史
yuxj 提交于 2024-09-06 13:12 . update
#include "zoomhandler.h"
#include "CommonDef.h"
#include "reticle/poshelper.h"
ZoomHandler::ZoomHandler(QObject* parent)
: QObject(parent)
{
}
void ZoomHandler::init(const QSize &backgroundSize)
{
m_backgroundSize = backgroundSize;
}
void ZoomHandler::zoomIn()
{
m_curZoom = (m_curZoom + m_zoomStep);
if (m_curZoom > m_zoomMax)
m_curZoom = m_zoomMax;
changeZoom();
}
void ZoomHandler::zoomOut()
{
m_curZoom = (m_curZoom - m_zoomStep);
if (m_curZoom < m_zoomMin)
m_curZoom = m_zoomMin;
changeZoom();
}
int ZoomHandler::getZoomValue() const
{
return m_curZoom;
}
QRect ZoomHandler::getZoomRect() const
{
return m_zoomRect;
}
QPoint ZoomHandler::getReticleCenterOffset() const
{
return m_centerOffset;
}
void ZoomHandler::setReticleCenterOffset(QPoint centerOffset)
{
m_centerOffset = centerOffset;
changeZoom();
}
void ZoomHandler::changeZoom()
{
//1.计算新的缩放区域, zoom manager 调用 scale接口
m_zoomRect = PosHelper::GetScaleRect(m_curZoom, m_centerOffset, m_backgroundSize.width(), m_backgroundSize.height());
// 调用底层scale接口
emit sglZoomRectChanged(m_zoomRect); //发送ZoomRect信号到HotTrack,重新计算热点区域(此demo没有热点handler)
//2.计算在当前倍率下, 分化线中心点在屏幕上的位置
QPoint pt = PosHelper::GetPoint(m_zoomRect, m_centerOffset, m_backgroundSize.width(), m_backgroundSize.height());
//发送信号,分化线中心点位置变化,需要重新计算画中画源区域(发送给pipHandler)
emit sglOriginZoomCenterChanged(pt, m_curZoom);
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/oweni/uireticle.git
git@gitee.com:oweni/uireticle.git
oweni
uireticle
UIReticle
master

搜索帮助