QGraphicItem实现中心旋转
一、 解决思路
1) 确定旋转中心坐标:centerPos;
2) 在mousePressEvent(QMouseEvent *e)中e->pos()获得按下时的坐标:pressPos
3) mouseMoveEvent(QMouseEvent *e)中e->pos()获得当前坐标:movePos;
4) centerPos、pressPos、movePos三点确定旋转角度:rotateAngle;
5) QTransform transform; 
transform.rotate(rotateAngle, Qt::ZAix); //沿着Z轴旋转角度rotateAngle
this->setTransform(transform);
6) Done。

二、 示意图

获取旋转中心:
QPointF centerPos=Item->boundingRect().center();
设置旋转中心:
void QGraphicsItem::setTransformOriginPoint(qreal x, qreal y)
设置旋转角度:
void QGraphicsItem::setRotation(qreal angle)
三、 难点
1. 角度确定

采用余弦定理:

2. 判断是顺时针还是逆时针
思路:在平面上作向量OA、OB,OA叉乘OB为正,则是逆时针,为负为顺时针.
过程:
记向量OA为(dx1, dy1) = (x2-x1, y2-y1)向量OB为(dx2, dy2) = (x3-x1, y3-y1)叉积为:
即:
dx1 * dy2 - dy1 * dx2 
3. 鼠标根据在Item的位置进行形状的改变
思路:通过判断鼠标在Item的位置进行形状的替换,可设置四种形状:
RotationLeftUp,RotationLeftDown,RotationRightUp,RotationRightDown.旋转的鼠标样式可以自定义。
QCursor *myCursor= newe QCursor(QPixmap(":/image/rotation.png"));
setCursor(*myCursor);

QGraphicItem实现中心旋转相关推荐

  1. C# 使用 GDI+ 实现添加中心旋转(任意角度)的文字

    这篇文章是 GDI+ 总结系列的第三篇,如果对 GDI+ 的基础使用不熟悉的朋友可以先看第一篇文章<C# 使用 GDI+ 画图>. 需求 需求是要实现给图片添加任意角度旋转的文字,文字的旋 ...

  2. 【Canvas】js如何设置canvas绕图形中心旋转

    JavaScript 控制 canvas 组件,如何设置绕图形中心旋转呢,用rotate()方法不是绕中心点旋转角度的,接下来,做一个实验看看,自己动手,写好一个能用的方法. 文章目录 1. 准备一个 ...

  3. canvas rotate() 中心旋转的实际运用

    在开发中遇到了一个问题   在画canvas的时候需要对画布中画出来的特定图片进行中心旋转,直接旋转后图片就转走了,还是需要调整位置,变成中心旋转. 平时用到canvas旋转的使用并不多,这个问题卡了 ...

  4. css旋转不围绕圆心,css3:元素总是围绕中心旋转[关闭](css3: element always rotates around center [closed])...

    css3:元素总是围绕中心旋转[关闭](css3: element always rotates around center [closed]) 我有这个演示 . 如图所示,元素围绕其中心旋转,但我正 ...

  5. 向量学习2:图形围绕自己中心旋转、围绕图形外或内任意点为中心旋转

    在前边博文"向量学习1"中,介绍了在篮球游戏中,防守者逼近防守投篮者,如何用向量,计算逼近的方向以及前进的距离.方法可用篮球投篮.足球射门和射击的子弹轨迹等等方面.在pygame游 ...

  6. Unity--使用鼠标操纵摄像机,让其围绕屏幕中心旋转

    最近做游戏碰到一个功能:模拟Unity Scene视图中的效果,让视线围绕着屏幕旋转.而在游戏视图中对应的就是让摄像机围绕屏幕中心旋转.这个功能在很多的建模软件中都可以看的到. 在设计这个功能的时候, ...

  7. Unity物体围绕中中心旋转加角度

    Unity物体围绕中中心旋转加角度 ```csharp using System.Collections; using System.Collections.Generic; using UnityE ...

  8. opencv图片旋转关于中心旋转任意角度与坐标转换

    如下例子,实现图片关于中心旋转任意角度,及坐标变换 import os import os.path import cv2 import numpy as np from math import co ...

  9. canvas图形中心旋转

    canvas实现图形中心旋转可以用自带的api变形然后旋转 因为cnvas与dom元素(div)的旋转 rotate规则不同一个是中心一个是订点 可以在canvas外套一层div设置宽高100%给其一 ...

最新文章

  1. 最小生成树(Kruskal )
  2. This is my first CSDN blog
  3. 【Tools】开源远程控制神器之RustDesk
  4. python中文正则匹配初步使用
  5. LeetCode 2135. 统计追加字母可以获得的单词数(位运算+哈希)
  6. uDevice Center - IoT弹性在线多设备开发平台
  7. 《CCNA学习指南:Cisco网络设备互连(ICND1)(第4版)》——1.10节本章小结
  8. java多张图片合成一张_利用溶图技巧把多张图片合成一张奇幻风格图片教程
  9. rk3399_android7.1查看当前的ddr频率
  10. Python 机器学习经典实例
  11. 有哪些网站用爬虫爬取能得到很有价值的数据?
  12. 云服务器安装KALI教程
  13. win10通过pe修复uefi引导后bootmanage出现两个引导项很烦人
  14. Office - Excel 01
  15. 微信小程序中使用阿里(iconfont)字体图标
  16. numpy 图片水印去除
  17. 大一新生必看,自学必看,里昂详解数据结构之队列
  18. Objective C 常用代码片段制作(code snippet library)
  19. Linux下的启动oracle服务 启动监听 开放端口操作
  20. RIKIBOT-FX4多线激光雷达用谷歌cartographer构建3D地图

热门文章

  1. 【2023最新】超详细图文保姆级教程:App开发新手入门(1)
  2. 如何看待 12 月 26 日发布的华为云 WeLink 企业智能工作平台?能对标得过企业微信和钉钉吗?
  3. 大数据起步之wormhole初识
  4. 随机系统(stochastic systems)——以随机游走为例
  5. 【数据结构】二叉树 —— 概念 + 结构
  6. 4章Servlet技术:http头查看+Serverlet入门
  7. 解决警告:Unable to preventDefault inside passive event listener due to target being treated as passive.
  8. YoLo卷积神经网络各层计算,卷积层计算输入的图片大小是448*448*3输出224*224*64原因?
  9. mybatis的插入与批量插入的返回ID的原理
  10. 第三天-01-批处理文件