#include "GViewScale.h"
#include <QDebug>
#include <QScrollBar>
GViewScale::GViewScale(QWidget *parent) : QGraphicsView(parent)
{
setDragMode(QGraphicsView::ScrollHandDrag);
m_gs = nullptr;
m_IfAddBasemap = false;
m_CurScale = 1.0;
m_MaxScale = 1.0;
m_MinScale = 1.0;
m_ViewScale = 1.0;
}
GViewScale::~GViewScale()
{
}
bool GViewScale::AddBasemap(const QString &FilePath)
{
if(m_IfAddBasemap == true)
{
return true;
}
QPixmap pp;
pp.load(FilePath);
if(pp.isNull() == true)
{
return false;
}
if(pp.width() < 1280 || pp.height() < 720)
{
return false;
}
m_gs = new QGraphicsScene();
setScene(m_gs);
setSceneRect(0, 0, pp.width(), pp.height());
if(m_gs->addPixmap(pp) == nullptr)
{
return false;
}
qDebug() << "ccc0" << m_gs->width() << m_gs->height() << size() << viewport()->size() << horizontalScrollBar()->value() << horizontalScrollBar()->maximum()
<< verticalScrollBar()->value() << verticalScrollBar()->maximum();
m_MinScale = 0.1;
if(pp.width() >= 3840 || pp.height() >= 2160)
{
m_MaxScale = 1.0;
double xb = width()*1.0/pp.width();
double yb = height()*1.0/pp.height();
m_ViewScale = xb < yb ? xb : yb;
scale(m_ViewScale, m_ViewScale);
m_CurScale = m_CurScale*m_ViewScale;
}
else
{
m_MaxScale = 2.0;
}
m_IfAddBasemap = true;
qDebug() << "ccc1" << m_gs->width() << m_gs->height() << size() << viewport()->size() << horizontalScrollBar()->value() << horizontalScrollBar()->maximum()
<< verticalScrollBar()->value() << verticalScrollBar()->maximum();
return true;
}
bool GViewScale::AddWidget(QWidget *wt, const QRectF &rf)
{
if(m_IfAddBasemap == false)
{
return false;
}
if(wt == nullptr || sceneRect().contains(rf) == false)
{
return false;
}
wt->setParent(nullptr);
if(m_gs->addWidget(wt) == nullptr)
{
return false;
}
wt->setGeometry(rf.x(), rf.y(), rf.width(), rf.height());
return true;
}
void GViewScale::WholeEnlarge()
{
if(m_IfAddBasemap == false)
{
return ;
}
if(m_CurScale >= m_MaxScale)
{
return ;
}
scale(1.1, 1.1);
m_CurScale = m_CurScale*1.1;
qDebug() << "+++" << m_gs->width() << m_gs->height() << size() << viewport()->size() << horizontalScrollBar()->value() << horizontalScrollBar()->maximum()
<< verticalScrollBar()->value() << verticalScrollBar()->maximum();
}
void GViewScale::WholeShrink()
{
if(m_IfAddBasemap == false)
{
return ;
}
if(m_CurScale <= m_MinScale)
{
return ;
}
scale(1.0/1.1, 1.0/1.1);
m_CurScale = m_CurScale*1.0/1.1;
qDebug() << "---" << m_gs->width() << m_gs->height() << size() << viewport()->size() << horizontalScrollBar()->value() << horizontalScrollBar()->maximum()
<< verticalScrollBar()->value() << verticalScrollBar()->maximum();
}
void GViewScale::WholeOriginal()
{
if(m_IfAddBasemap == false)
{
return ;
}
if(m_CurScale == 1.0)
{
return ;
}
scale(1.0/m_CurScale, 1.0/m_CurScale);
m_CurScale = m_CurScale*1.0/m_CurScale;
qDebug() << "000" << m_gs->width() << m_gs->height() << size() << viewport()->size() << horizontalScrollBar()->value() << horizontalScrollBar()->maximum()
<< verticalScrollBar()->value() << verticalScrollBar()->maximum();
}
void GViewScale::WholeView()
{
if(m_IfAddBasemap == false)
{
return ;
}
if(m_CurScale == m_ViewScale)
{
return ;
}
scale(m_ViewScale/m_CurScale, m_ViewScale/m_CurScale);
m_CurScale = m_CurScale*m_ViewScale/m_CurScale;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论





























收起资源包目录












共 10 条
- 1
资源评论


黄忻
- 粉丝: 45
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 网络营销的市场分析.pptx
- 电气系统安全讲座.ppt
- 经管系课程实训报告网络营销实训报告.doc
- 网络综合布线系统与施工技术(0007).pdf
- 最新田源基于单片机的电子闹钟设计.doc
- 京东商城软件需求说明书.doc
- 基于 Python 的雅各比与赛德尔迭代法图形化解方程组实现
- 物流项目管理复习题.doc
- 综合布线技术与工程实训教程3综合布线系统的传输和连接介质.pptx
- 基因工程综合练习题.doc
- 软件工程数字媒体与游戏邹昆2016.ppt
- 专升本C语言程序设计试卷.docx
- 加强施工企业项目管理的几点认识和体会.doc
- 申办网络文化经营许可证(含虚拟货币发行)公司业务发展报告.docx
- 装饰装修工程项目管理常用表格.doc
- 项目管理工作内容.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
