Qt图片编辑 - 在直线添加文字

这篇具有很好参考价值的文章主要介绍了Qt图片编辑 - 在直线添加文字。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在绘制一条直线时,比如说在直线中间输出文字,如下图所示

Qt图片编辑 - 在直线添加文字,qt,开发语言

本质上不难,定位到位置,然后drawText就可以了

难就难在 文字要跟随线的斜率,例如

Qt图片编辑 - 在直线添加文字,qt,开发语言 Qt图片编辑 - 在直线添加文字,qt,开发语言

 还有,文字最好保证在线的“上方”

首先是角度问题

这个角度跟线Line与X轴夹角是一致的,因此,只要有线两端坐标就可以计算出来

这个不算太难

double getLineAngle(const QLineF& line)
{
    QPointF dPoint = QPointF(line.p2().x() - line.p1().x(), line.p2().y() - line.p1().y());
    return atan2(dPoint.y(),dPoint.x()) / MATH_PI * 180;
}

剩下就是drawText的时候要进行旋转

看了半天的drawText介绍,发现没有一个接口是输入角度的

然后看下QFont一些相关一些类,也没有发现输入旋转角度的,只有一个斜体的设置,很显然不是我们想要的。

经过一番搜索,要对QPainter进行旋转,这个还真有rotate角度函数。

        QLineF reLine = mLine;                // mLine就是那条直线
        if(mLine.p1().x() > mLine.p2().x())
        {
            //如果p1在p2的右边, p1 与 p2 换一换
            reLine = QLineF(mLine.p2(),mLine.p1());
        }
        painter->translate(reLine.p1());           //s1 按照p1为圆点,这个很重要
        painter->rotate(getLineAngle(reLine));     //s2 按直线reLine的角度旋转   

        //s3 输出drawTxt内容,这个点位置:x在线中间位置,y在线上方-5像素位置;textFontLen是drawTxt字符所占宽度,具体怎么计算比较好,可以再细化细化,这里比较粗
        painter->drawText((reLine.length()- textFontLen) / 2,-5, drawTxt);  略
        painter->resetMatrix();  // s4 重置坐标

以上方法可以实现,如下小视频所示

角度线路文章来源地址https://www.toymoban.com/news/detail-607915.html

到了这里,关于Qt图片编辑 - 在直线添加文字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT添加使用图片与UI资源

    1.1 添加新文件 1.2 添加QT - QT Resources File 【UI资源文件】 1.3 命名资源包名称 并 添加到项目文件 1.4 .pro 文件发生变化 += art.qrc 1.5 点击qrc文件,添加现有文件 - 添加进去的图片文件可以进行正常引用。 1.6 修改样式表,正常添加图片即可 2.1 添加新文件 2.2 添加 QT Designer Form 设计

    2024年01月17日
    浏览(42)
  • 【C++开发】Qt+Tesseract实现文字识别的各种坑(已解决)

            最近在给之前Qt医疗管理系统项目添加一个文字识别功能,但是在其中遇到非常多坑,花费了我比较多的时间(查阅了很多文章),这篇文章主要用来整理这些坑(非常详细)。 Qt版本:Qt5.13 VS版本:VS2017 编译器(构建套件):Desktop Qt 5.13.0 MSVC2017 64bit 以上环境都

    2024年02月08日
    浏览(46)
  • [编程语言][C++][Qt]单独添加UI文件

    不知什么原因,Qt Creator并不是很完美很智能。当先写好界面类的头文件和源代码文件后,我们再添加用于可视化界面设计的UI文件时,会出现一些问题。 当使用CMake管理项目时,CMake会读取 CMakeLists.txt 文件来确定各种项目设置。需要把 MainWindow.ui 包含进项目时,在 CMakeLists.

    2024年02月07日
    浏览(46)
  • Qt应用开发(基础篇)——文本编辑窗口 QTextEdit

             QTextEdit 类继承于QAbstractScrollArea,QAbstractScrollArea继承于QFrame,用来显示富文本和纯文本的窗口部件。 框架类 QFrame https://blog.csdn.net/u014491932/article/details/132188655 滚屏区域基类 QAbstractScrollArea https://blog.csdn.net/u014491932/article/details/132245486          QTextEdit 是一个先

    2024年02月11日
    浏览(46)
  • 基于QT4的GPX文件编辑器开发

    GPX文件是记录地理点的文件,本质是一种xml文件。GPX文件目前没有很好的编辑器,因此作者决定开发一款无需安装的绿色编辑器。 在QT4开发中,XML可以用DOM来实现,但其逻辑并不是很清晰。使用模型视图反而会更加可读。因此在开发中,使用model-view模式来实现数据读写。

    2024年02月12日
    浏览(48)
  • Qt应用开发(基础篇)——纯文本编辑窗口 QPlainTextEdit

             QPlainTextEdit 类继承于 QAbstractScrollArea , QAbstractScrollArea 继承于 QFrame ,是Qt用来显示和编辑纯文本的窗口。 滚屏区域基类 https://blog.csdn.net/u014491932/article/details/132245486?spm=1001.2014.3001.5501 框架类QFrame https://blog.csdn.net/u014491932/article/details/132188655?spm=1001.2014.3001.5501   

    2024年02月11日
    浏览(45)
  • 界面开发框架Qt新手入门教程 - 可编辑树模型的示例(一)

    Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 点击获取Qt Widget组件下载 (Q技术交流:166830288) 树项

    2024年02月06日
    浏览(59)
  • 【QT开发(5)】0919-QT里面新增ui类,新增使用opencv读取图片的普通类,在ui类中显示图片

    1、Qt Creator快速入门_第三版__霍亚飞编著 2、《Qt+OpenCV显示图片(Mat转QImage然后显示在QLabel上)》 https://gitee.com/hiyanyx/qt5.14-cpp_-empty_-project/tree/Study2023-section5/ git分支“Study2023-section5” 新增ui类 新增使用opencv读取图片的普通类 为了更加方便,可在QT 中添加普通类,这样会自动生

    2024年02月07日
    浏览(45)
  • Qt音视频开发32-qmedia内核回调拿图片数据

    使用qmediaplayer来打开视频并播放,默认首选会采用QVideoWidget控件来展示,优点是不用自己来绘制,一切交给了QVideoWidget控件,这样可以做到极低的CPU占用,缺点也明显,就是无法拿到每一帧的图片,很多时候我们还需要主动拿到每一帧的图片来运算做人工智能,通过不断的截

    2023年04月10日
    浏览(42)
  • PyCharm下安装配置PySide6开发环境(Qt Designer(打开,编辑)、PyUIC和PyRCC)

    python安装路径  pycharm安装路径: python系统变量: pycharm环境变量:   注意:正常安装,并勾选ADD PATH一般会自动配好 用pycharm开发python项目时,使用虚拟环境的好处是: 可以为不同的项目创建不同的python环境,避免了依赖包和版本的冲突。 可以为同一个项目的不同环境(如

    2024年02月11日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包