Qt 文字描边(基础篇)

项目中有时需要文字描边的功能

1.基础的绘制文字

使用drawtext处理

复制代码
void MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
    painter.setRenderHints(QPainter::TextAntialiasing, true);

    QPen pen = painter.pen();

    QString m_textString = "文本God123";

    pen.setWidth(1);
    pen.setColor(QColor(255, 0, 0));
    painter.setPen(pen);
    painter.setBrush(QColor(255, 0, 0));
    //绘制白芯文字,注意文字的位置点设置
    painter.drawText(100,100,m_textString);

}

2.绘制黑边黄字

代码:

复制代码
void MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
    painter.setRenderHints(QPainter::TextAntialiasing, true);

    QPen pen = painter.pen();

    QString m_textString = "文本God123";

    QPainterPath path;
    //注意文字的位置点设置
    path.addText(100,200,painter.font(), m_textString);

    pen.setWidth(2);
    pen.setColor(QColor(0, 0, 0));
    painter.setPen(pen);
    //
    painter.setBrush(QColor(255, 255, 0));
    //绘制黑边
    painter.drawPath(path);


}

3.只绘制黑边

复制代码
void MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
    painter.setRenderHints(QPainter::TextAntialiasing, true);

    QPen pen = painter.pen();

    QString m_textString = "文本God123";

    QPainterPath path;
    //注意文字的位置点设置
    path.addText(100,200,painter.font(), m_textString);

    pen.setWidth(2);
    pen.setColor(QColor(0, 0, 0));
    painter.setPen(pen);
    //
    //painter.setBrush(QColor(255, 255, 0));
    //绘制黑边
    painter.drawPath(path);
}

4.绘制黑边红字(另一种方法)

复制代码
void MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
    painter.setRenderHints(QPainter::TextAntialiasing, true);

    QPen pen = painter.pen();

    QString m_textString = "文本God123";

    QPainterPath path;
    //注意文字的位置点设置
    path.addText(100,200,painter.font(), m_textString);

    pen.setWidth(2);
    pen.setColor(QColor(0, 0, 0));
    painter.setPen(pen);
    //
    //painter.setBrush(QColor(255, 255, 0));
    //绘制黑边
    painter.drawPath(path);

    pen.setWidth(1);
    pen.setColor(QColor(255, 0, 0));
    painter.setPen(pen);
    painter.setBrush(QColor(255, 0, 0));
    //绘制白芯文字,注意文字的位置点设置
    painter.drawText(100,200,m_textString);
}
相关推荐
码云数智-大飞9 小时前
零基础微信小程序制作平台哪个好
开发语言
神仙别闹9 小时前
基于 MATLAB 实现的 DCT 域的信息隐藏
开发语言·matlab
techdashen9 小时前
Go 标准库 JSON 包迎来重大升级:encoding/json/v2 实验版来了
开发语言·golang·json
.千余9 小时前
【Linux】基本指令3
linux·服务器·开发语言·学习
南境十里·墨染春水10 小时前
C++ 笔记 thread
java·开发语言·c++·笔记·学习
南境十里·墨染春水10 小时前
C++ 笔记 高级线程同步原语与线程池实现
java·开发语言·c++·笔记·学习
来自远方的老作者11 小时前
第10章 面向对象-10.4 继承
开发语言·python·继承·单继承·多继承·super函数
逻辑驱动的ken11 小时前
Java高频面试考点场景题09
java·开发语言·数据库·算法·oracle·哈希算法·散列表
小手cool11 小时前
如何在Java中根据另一个配对集合对一个集合进行排序
java·开发语言
升鲜宝供应链及收银系统源代码服务11 小时前
OMS 订单模块重构正式文档(一)---升鲜宝生鲜配送供应链管理系统
java·开发语言·重构·生鲜配送源代码·生鲜供应链源代码