void WgtText::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    QString m_string("abcdefghijklmnopqrstuvwxy");
    int font_size = 15;
    float x0 = font_size * m_string.count() * 0.5;
    int YSize = font_size * m_string.count() * 0.5;
    for(int i=0; i<m_string.count(); i++)
    {

        // 按圆弧函数绘制
        painter.save();
        float tAlpha = i*3.14/m_string.count();
        float tx = YSize*cos(tAlpha) + YSize;
        float ty = YSize*sin(tAlpha);
        painter.translate(tx, ty);    // 文字的位置
        painter.rotate(180*i/(float)(m_string.count())); // 将文字本身旋转
        painter.drawText(QPointF(-10.0, 10.0), QString("%1").arg(m_string[i]));
        painter.restore();

    }

}

--------------------------------------------------------------------------------------

void WgtText::paintEvent(QPaintEvent *event)
{

    QPainter painter(this);
    int font_size = 10;
    // 设置字符间距
    int text_space = 2;
    int wh = height();
    QFont font;
    font.setFamily("Microsoft YaHei");
    // 大小
    font.setPointSize(font_size);
    // 使用字体
    painter.setFont(font);

    static QString m_string("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");

    for(int i=0; i<m_string.count(); i++)
    {
        // 按正弦函数绘制
        float tx = (font_size + text_space) * i;
        float ty = sin(tx);
        //压缩y坐标
        ty = wh/2 + ty*(wh/2*0.2);
        painter.drawText(QPointF(tx, ty), QString("%1").arg(m_string[i]));
    }

    return QWidget::paintEvent(event);

}

Qt绘制文本二 弯曲排列和旋转效果 弧形路径 正弦函数路径的更多相关文章

  1. Qt绘制文本一

    QPainterPath,使用 drawText且设置字体,再使用painter.drawText方式 效果图: void WgtText::paintEvent(QPaintEvent *event ...

  2. Qt之图形(绘制文本)

    简述 前面我们讲解了Qt图形的基本绘制,其中包括: 绘制文本.直线.直线.矩形.弧线.椭圆.多边形.图片,以及其它一些高级用法,比如:渐变.转换等. 本节我们来详细讲解文字的绘制.主要通过QPaint ...

  3. 在WPF中自定义你的绘制(二)

    原文:在WPF中自定义你的绘制(二)   在WPF中自定义你的绘制(二)                                                                 ...

  4. Qt富文本编辑器QTextDocument

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt富文本编辑器QTextDocument     本文地址:https://www.tech ...

  5. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二)

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二) 代码工程地址: https:/ ...

  6. NLP(二十二)利用ALBERT实现文本二分类

      在文章NLP(二十)利用BERT实现文本二分类中,笔者介绍了如何使用BERT来实现文本二分类功能,以判别是否属于出访类事件为例子.但是呢,利用BERT在做模型预测的时候存在预测时间较长的问题.因此 ...

  7. html5 canvas 笔记三(绘制文本和图片)

    绘制文本 fillText(text, x, y [, maxWidth])   在指定的(x,y)位置填充指定的文本,绘制的最大宽度是可选的. strokeText(text, x, y [, ma ...

  8. FontMetrics ----- 绘制文本,获取文本高度

    Canvas 绘制文本时,使用FontMetrics对象,计算位置的坐标. public static class FontMetrics { /** * The maximum distance a ...

  9. Qt计算器开发(二):信号槽实现数学表达式合法性检查

    表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...

随机推荐

  1. 【Python】【有趣的模块】【requests】【一】HTTP头信息总结

    [HTTP请求 == 请求行 + 消息报头 + 请求正文 ] 请求行:Method Request-URL HTTP-Version CRLF HTTP协议定义了许多与服务器交互的方法 ① PUT:请 ...

  2. 【BZOJ】1875: [SDOI2009]HH去散步

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1875 注意的是路径不可以重复,所以这题把边看成点.每一条无向边拆成两条有向边. 令${F[ ...

  3. Codeforces Round #267 (Div. 2) D. Fedor and Essay tarjan缩点

    D. Fedor and Essay time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  4. CentOS6.5使用yum快速搭建LAMP环境

    1.安装Apache # yum -y install httpd # 开机自启动 # chkconfig httpd on # 启动httpd 服务 # service httpd start # ...

  5. GCD LCM UVA - 11388

    代码很短理解不容易,在这说不清,大家代码里寻真相. 为什么二者相除就可以A了多找点数试试理解理解. #include<stdio.h> #define mod 1000000007 #de ...

  6. FileNotFoundException报错, src\main\....\....(拒绝访问) , 原因:1. 方法没有判断文件夹和文件, 2.没有指明文件的具体路径和名字

  7. Eclipse中使用MySql遇到:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading o

    在Eclipse中使用MySQL遇到了点小问题 如果对Eclipse中配置MySql还有疑问的可以参考一下这篇博客:https://blog.csdn.net/qq_38247544/article/ ...

  8. Spark SQL笔记

    HDFS HDFS架构 1.Master(NameNode/NN) 对应 N个Slaves(DataNode/NN)2.一个文件会被拆分成多个块(Block)默认:128M例: 130M ==> ...

  9. RedHat/CentOS根目录扩容

    下面以redhat为例,介绍如何扩容系统根目录,CentOS也是一样的. 1. 登录到系统中,查看硬盘情况. /dev/sdb就是增加的硬盘. [root@test ~]# fdisk -l 2. 操 ...

  10. 大数据新手之路二:安装Flume

    Ubuntu16.04+Flume1.8.0 1.下载apache-flume-1.8.0-bin.tar.gz http://flume.apache.org/download.html 2.解压到 ...