当前位置: 首页 > news >正文

html怎么做静态网站东南亚购物网站排名

html怎么做静态网站,东南亚购物网站排名,在线教育培训平台定制,上海注册公司多久QGraphicsView图像操作:旋转、放大、缩小、移动、图层切换 1 摘要 GraphicsView框架结构主要包含三个主要的类QGraphicsScene(场景)、QGraphicsView(视图)、QGraphicsItem(图元)。QGraphicsScene本身不可见,是一个存储图元的容器,必须通过与之相连的QGraphicsView视图来显…

QGraphicsView图像操作:旋转、放大、缩小、移动、图层切换

1 摘要

GraphicsView框架结构主要包含三个主要的类QGraphicsScene(场景)、QGraphicsView(视图)、QGraphicsItem(图元)。QGraphicsScene本身不可见,是一个存储图元的容器,必须通过与之相连的QGraphicsView视图来显示及与外界进行交互,主要提供图元的操作接口、传递事件和管理各个图元状态,提供无变换的绘制功能(如打印);QGraphicsView提供一个可视的窗口,用于显示场景中的图元,一个场景中可以有多个视图。QGraphicsItem是场景中各个图元的基础类,QT提供了常用图形图元的标准类,如矩形(QGraphicsRectItem)、椭(QGraphicsEllipseItem)、文本(QGraphicsTextItem)。

2 QGraphicsScene 场景

QGraphicsScene场景是QGraphicsItem对象的容器,主要功能如下:
•提供一个快速的接口,用于管理大量图元。
•向每个图元传递事件
•管理图元的状态,如:选中、焦点处理
•提供未进行坐标转换的渲染功能,主要用于打印

通过函数QGraphicsScene::addItem()可以加入一个图元到场景中。图元可以通过多个函数进行检索:QGraphicsScene::items()及重载函数可以返回和点、矩形、多边形或向量路径相交的所有图元。QGraphicsScene::itemAt()返回指定点的最顶层图元。所有图元查找函数按照递减栈顺序返回图元,第一个返回的图元位置最顶层,最后一个返回的图元位于最底层。
QGraphicsScene的事件传播体系将场景事件发送给图元,同时也管理图元之间的事件传播。如果场景收到了在某一点的鼠标单击事件,场景会把事件传给在这一点的最顶层图元。QGraphicsScene负责管理一些图元的状态,如图元选择和焦点。通过QGraphicsScene::setSeletionArea()函数选择多个图元,选择区域可以是任意的形状,使用 QPainterPath表示;要得到当前选择的图元列表可以使用 QGraphicsScene::selectedItems()函数;QGraphicsScene还管理图元的键盘输入焦点状态,可以通过QGraphicsScene::setFocusItem()函数或者QGraphicsItem::setFoucs()函数来设置图元的焦点;获得当前具有焦点的图元使用函数QGraphicsScene::foucsItem()。可以使用 QGraphicsScene::render()函数在绘图设备上绘制场景。

3 功能实现

3.1 实现效果图

•打开图像:通过工具栏的 “Open Image” 按钮选择并加载图像。
•矩形选择框:按下鼠标左键并拖动以绘制矩形选择框,松开鼠标后,位于选择框内的图形项将被选中。
•放大和缩小:使用工具栏的 “Zoom In” 和 “Zoom Out” 按钮进行缩放。
•旋转:通过工具栏的 “Rotate Left” 和 “Rotate Right” 按钮旋转图像
•图层切换:通过不同的图像图层切换显示图像置顶。
在这里插入图片描述

在这里插入图片描述

鼠标滚动放大

void wheelEvent(QGraphicsSceneWheelEvent *event)//鼠标滚轮事件
{if((event->delta() > 0)&&(m_scaleValue >= 100))//最大放大到原始图像的50倍{return;}else if((event->delta() < 0)&&(m_scaleValue <= m_scaleDafault))//图像缩小到自适应大小之后就不继续缩小{ResetItemPos();//重置图片大小和位置,使之自适应控件窗口大小}else{qreal qrealOriginScale = m_scaleValue;if(event->delta() > 0)//鼠标滚轮向前滚动{m_scaleValue*=1.1;//每次放大10%}else{m_scaleValue*=0.9;//每次缩小10%}setScale(m_scaleValue);if(event->delta() > 0){moveBy(-event->pos().x()*qrealOriginScale*0.1, -event->pos().y()*qrealOriginScale*0.1);//使图片缩放的效果看起来像是以鼠标所在点为中心进行缩放的}else{moveBy(event->pos().x()*qrealOriginScale*0.1, event->pos().y()*qrealOriginScale*0.1);//使图片缩放的效果看起来像是以鼠标所在点为中心进行缩放的}}
}

通过滚轮局部放大,放大根据鼠标焦点位置进行局部放大,以湖南为局部中心进行放大,效果如下图
在这里插入图片描述
通过滚轮局部放大,放大根据鼠标焦点位置进行局部放大,以北京为局部中心进行放大,效果如下图
在这里插入图片描述

图像旋转实现

void ImageEditor::rotateLeft() {if (!layers.isEmpty()) {QGraphicsPixmapItem *currentLayer = layers[layerSelector->currentIndex()];QPointF center = currentLayer->boundingRect().center();currentLayer->setTransformOriginPoint(center);currentLayer->setRotation(currentLayer->rotation() - 15); // 左旋转 15 度}
}void ImageEditor::rotateRight() {if (!layers.isEmpty()) {QGraphicsPixmapItem *currentLayer = layers[layerSelector->currentIndex()];QPointF center = currentLayer->boundingRect().center();currentLayer->setTransformOriginPoint(center);currentLayer->setRotation(currentLayer->rotation() + 15); // 右旋转 15 度}
}

在这里插入图片描述

图层切换

void ImageEditor::changeLayer(int index) {// 取消所有图层的选中状态for (auto layer : layers) 
http://www.yayakq.cn/news/792310/

相关文章:

  • seo站点是什么意思教育视频培训网站建设
  • 成都做网站的公司如何分析网站
  • 网站建设属于技术开发吗创建网站的优势
  • 商务网站建设公网站是用什么做的
  • 新浪门户网站是谁做的淘宝店铺不允许发布网站建设了
  • html5快速建站做网站可以用海外空间吗
  • 开通微网站视频网站建设应该注意什么
  • 做网站界面多少钱wordpress获取菜单链接地址
  • 网站图片展示方式有哪些网站背景色代码
  • 网站建设询价单一般建设一个网站多少钱
  • 网站开发aichengkeji有哪些教做蛋糕的网站
  • 企业官网网站模板下载不了网站建设文案怎么写
  • 医院可以做网站吗汝州建设局网站
  • 建设信用卡申请进度查询官方网站郑州做网站找维诺
  • 免费asp地方门户网站系统企业信息平台
  • 中堂仿做网站徐州英才网最新招聘信息
  • 手机网站域名哪里注册西山网站建设
  • 怎样选择 网站建设青岛做网站的公司哪个好
  • 怎么做网站 高中信息技术零基础怎么做网站
  • 西宁集团网站建设临沂做网站建设的公司
  • 所以免费爱做网站浦项建设中国有限公司网站
  • app开发设计网站优化公司大家好
  • 企业网站建设方案平台wordpress首页标题修改
  • 网站怎么做关键词流量100个网络营销案例
  • WordPress网站图片预加载网站做文献格式
  • 建站网址什么意思wordpress+search+sql
  • 湘潭市建设工程质量监督站网站网上书店网站开发代码
  • 濮阳网站网站建设网站建设首页面
  • 网站建设的基本教程net开发网页小程序
  • 肇庆网站制作策划工业软件开发