当前位置: 首页 > news >正文

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

相关文章:

  • 总结MySQL 的一些知识点:MySQL 运算符
  • 机器视觉技术与应用实战(Chapter Two-03)
  • 了解Spring Boot:重要注解详解
  • 向量、矩阵、数组、向量空间
  • <VR串流线方案> PICO 4 Pro VR串流线方案 Oculus Quest2 Link串流线方案
  • 计算机网络:网络层(无分类编址CIDR、计算题讲解)
  • 一篇文章了解Flutter Json系列化和反序列化
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • 【深度强化学习】策略梯度方法:REINFORCE、Actor-Critic
  • 前后端传参格式
  • 04-Nacos中负载均衡规则的配置
  • C# 数据的保存和提取(.TXT格式)
  • 外包干了3个月,技术退步明显。。。
  • SSL证书HTTPS保护服务
  • YOLOv8使用自定义改进后的模型同时《加载官方预训练权重》教程,附代码
  • C_1练习题答案
  • 算法通关第十九关-青铜挑战理解动态规划
  • Maven项目引入本地jar
  • 使用drawio绘制依赖关系图
  • 智能优化算法应用:基于和声算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 巴西总统卢拉将访华
  • 5天完成1000多万元交易额,“一张手机膜”畅销海内外的启示
  • 冯德莱恩:欧美贸易谈判前不会前往美国会见特朗普
  • 上海“电子支付费率成本为0”背后:金融服务不仅“快”和“省”,更有“稳”和“准”
  • “80后”赵亮出任上海普陀区委副书记
  • 欧洲史上最严重停电事故敲响警钟:能源转型如何保证电网稳定?