QPainter绘制渐进色文本

参考资料:https://blog.csdn.net/what951006/article/details/52876513

效果图:

 

代码:

void WgtText::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
 
 
    QFont font;
    font.setFamily("Microsoft YaHei");
    // 大小
    font.setPointSize(20);
    // 斜体
    font.setItalic(true);
    // 设置字母大小写
    //font.setCapitalization(QFont::SmallCaps);
    // 设置字符间距
    font.setLetterSpacing(QFont::AbsoluteSpacing, 20);
    // 设置加粗
    //font.setBold(true);
    // 使用字体
    painter.setFont(font);
 
 
    QString m_Text1("AAAAAAAAAAAA");
    QString m_Text2("BBBBBBBBBBBB");
    QFontMetrics metrics = painter.fontMetrics();
 
 
    int y=((height()-20)/2-metrics.height())/2+20;
    int bottomwidth=width()-metrics.width(m_Text2);
 
 
    QLinearGradient m_normalGradient;
 
 
   /*
    *frist part
    */
       m_normalGradient.setStart(0, y);
       m_normalGradient.setFinalStop(0, y+metrics.height());
       m_normalGradient.setColorAt(0, QColor(255,0,0));
       m_normalGradient.setColorAt(1, QColor(255,255,0));
 
 
 
 
       painter.setPen(QPen(m_normalGradient,0));
       painter.drawText(10, y,metrics.width(m_Text1),metrics.height(),Qt::AlignLeft, m_Text1);
 
 
   /*
    *second part
   */
       m_normalGradient.setStart(0, y+height()/2);
       m_normalGradient.setFinalStop(0, y+(height()-20)/2+metrics.height());
       m_normalGradient.setColorAt(0, QColor(0,255,0));
       m_normalGradient.setColorAt(1, QColor(0,0,255));
 
 
 
 
       painter.setPen(QPen(m_normalGradient,0));
       painter.drawText(bottomwidth-10, y+(height()-20)/2,metrics.width(m_Text2),metrics.height(),Qt::AlignLeft, m_Text2);
 
 
}

转载于:https://www.cnblogs.com/zhangxuan/p/10145684.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值