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);
}

相关推荐

  1. 【CSS】实现文字

    2023-12-15 15:10:04       35 阅读
  2. 2D图片的

    2023-12-15 15:10:04       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-15 15:10:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-15 15:10:04       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-15 15:10:04       82 阅读
  4. Python语言-面向对象

    2023-12-15 15:10:04       91 阅读

热门阅读

  1. Canny边缘检测算法

    2023-12-15 15:10:04       67 阅读
  2. Android Studio报Gradle问题解决思路

    2023-12-15 15:10:04       61 阅读
  3. Qt/QML编程学习之心得:信号+槽(十三)

    2023-12-15 15:10:04       54 阅读
  4. 在vue中如何实现准时的setTimeout

    2023-12-15 15:10:04       54 阅读
  5. rust unresolved import‘xxx‘

    2023-12-15 15:10:04       69 阅读
  6. 国内一些高校科研院所在解包裹方面的创新

    2023-12-15 15:10:04       54 阅读
  7. Linux的时间同步命令

    2023-12-15 15:10:04       62 阅读