首页 > 其他 > 详细

Qt绘制文本二 弧形路径 正弦函数路径

时间:2018-12-19 14:35:49      阅读:232      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

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绘制文本二 弧形路径 正弦函数路径

原文:https://www.cnblogs.com/zhangxuan/p/10142944.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!