qt 2d 绘图的问题

weixin_38059392 2019-09-19 10:53:01
       这几天一直在学习qt QGraphicsView 、QGraphicsScene 、QGraphicsItem框架,打算用它做一个绘画工具,需要具备图形的基本编辑功能,比如:创建、移动、旋转、改变大小等操作。前几天做的测试程序实现了给图形添加控制点、通过鼠标改变图形大小、点选或框选图形等操作,后来又加入了旋转与组合的操作。现在遇到如下问题需要请教大家:1、QGraphicsItem的本地坐标问题:      当本地坐标的原点设置为本地图形矩形的左上角,或非中心位置的时候,在做完旋转操作后,如果调整图形大小,本地图形的原点无法设置到正确的位置。 2、通过一个代理类作为QGraphicsItemGroup对象的parent,可以为这个group对象添加和其他对象一样的鼠标操作,但是,这个对象的pos()却始终不对。结果就是做移动的时候,拖动的位置很奇怪。 3、还有就是通过Qt自带的 QSvgGenerator 无法输出椭圆对象,矩形和直线都没问题。如图1:绿色圆点为组合对象的transfromOriginPoint,蓝色圆点为组合对象的pos。 描述:图1 图2:拖动组合对象时,pos在组合对象boundingRect之外。描述:图2 另外附上源码:测试程序源码 drawcli.zip (50 K) 下载次数:25 请有经验的朋友帮忙指导一下,谢谢。
...全文
106 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38088281 2019-09-19
  • 打赏
  • 举报
回复
老哥,如果可以增加一个打开svg图片的选项就无敌了
weixin_38092208 2019-09-19
  • 打赏
  • 举报
回复
并且有一个问题,保存的SVG图片不是一个完整的图片
weixin_38066491 2019-09-19
  • 打赏
  • 举报
回复
问题解决了,原点的问题解决了。        QPointF delta = pos() - bound.center() ;        // 将本地坐标原点移动到中心,        setTransform(transform().translate(delta.x(),delta.y()));       //设置原点         setTransformOriginPoint( bound.center());       //还原图形的位置.        moveBy(-delta.x(),-delta.y());        m_group->setTransformOriginPoint(bound.center());group的问题解决了,希望其他问题也能解决掉。
weixin_38079044 2019-09-19
  • 打赏
  • 举报
回复
旋转后改变大小的问题也解决了,QGraphicsItem本身没有改变大小的问题,它可以通过缩放来解决,如果要通过鼠标改变大小就必须自己维护它的本地坐标系,所以改变大小后重建一下本地坐标就可以了。代表挺简单,就不贴了。
weixin_38081011 2019-09-19
  • 打赏
  • 举报
回复
东西挺不错,可惜就是不能移动对象~~
weixin_38082021 2019-09-19
  • 打赏
  • 举报
回复
么么哒楼主,你的程序帮我大忙啦
内容概要:本文提出了一种基于高保真电磁暂态仿真的智能电网虚假数据注入攻击(FDIA)数据集构建与影响分析方法,依托PSCAD与MATLAB联合仿真平台,构建IEEE标准测试系统(如9节点或39节点系统)的精细化电磁暂态模型,精确模拟电网在正常运行及遭受FDIA下的动态响应过程,采集高精度、高时间分辨率的电压、电流、功率等电气量时序数据,生成具有强物理约束性和可复现性的攻击数据集。研究进一步结合现代状态估计理论、残差检测机制与机器学习分类算法,对FDIA的隐蔽性特征、攻击传播路径、系统关键变量偏移程度及暂态稳定性影响进行系统性量化评估,旨在为智能电网安全防护体系的设计、入侵检测模型的训练与攻防策略的有效性验证提供高可信度的数据基础与理论支撑。; 适合人群:面向电力系统自动化、能源互联网安全、工业控制系统安全等方向的研究生、科研人员及工程技术人员,要求具备电力系统分析、状态估计基础、MATLAB/PSCAD联合仿真能力以及基本的网络安全背景知识。; 使用场景及目标:① 复现和验证主流FDIA相关学术论文中的攻击模型与检测算法;② 构建符合实际物理规律、可用于训练深度学习或机器学习驱动的入侵检测系统(IDS)的真实攻击数据集;③ 深入探究虚假数据注入对电网暂态稳定性、继电保护动作逻辑、频率调节等关键功能的影响机理。; 阅读建议:本资源以高保真仿真为核心,强调数据生成的真实性与实验可重复性,读者应重点关注PSCAD与MATLAB之间的数据交互机制、攻击向量的设计原则与注入方式、以及多维度影响评估指标体系的构建方法,建议结合所提供的仿真模型与代码进行动手实践与结果验证。
内容概要:本文系统阐述了基于格子Boltzmann方法(Lattice Boltzmann Method, LBM)对二维通道内多孔介质流动进行数值模拟的理论体系、Matlab代码实现流程及结果验证方法。深入剖析了LBM在处理复杂流体系统尤其是不规则几何结构多孔介质流动中的独特优势,详细介绍了模型构建过程、边界条件设定、碰撞与传播环节的算法实现机制,并通过Matlab编程完成仿真运算,实现了对速度场、压力场等关键物理量的可视化分析与精度验证,确保模拟结果具备良好的准确性与可靠性。; 适合人群:具备流体力学基础知识和一定Matlab编程能力的研究生、科研人员及工程技术人员,尤其适合从事多孔介质流动、计算流体力学(CFD)或LBM方法研究的相关领域研究人员。; 使用场景及目标:①掌握格子Boltzmann方法的核心原理及其在多孔介质流动模拟中的具体应用;②学习利用Matlab实现LBM算法并开展科学计算与结果可视化的方法;③为相关科研项目、学术论文复现或实际工程仿真提供可复用的代码框架与技术实施路径。; 阅读建议:建议读者结合流体力学与数值计算相关背景知识,逐步理解算法推导过程,动手运行并调试所提供的Matlab代码,通过调整参数或几何模型加深对LBM方法灵活性与适用性的认识,同时鼓励将该方法拓展至三维流动或多物理场耦合问题的研究中。

479

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧