gpt4 book ai didi

qt - 使用 QPainter::drawText() 时文本没有抗锯齿?

转载 作者:行者123 更新时间:2023-12-04 17:58:48 33 4
gpt4 key购买 nike

当我尝试使用 QPainter::drawText() 绘制文本时,文本没有抗锯齿(与 MS word 相比)

void TextLabel::paintEvent(QPaintEvent*) {
QPainter p(this);
p.setRenderHint(QPainter::TextAntialiasing);

QFont font;
font.setFamily("Roboto medium");
font.setPointSize(32);
font.setStyleHint(QFont::Helvetica, QFont::PreferAntialias);

p.setPen(_brush);
p.setFont(font);

p.drawText(rect(), Qt::AlignLeft , _text);
}

Qt 文档说:

QPainter::TextAntialiasing -> 指示引擎应该抗锯齿文本如果可能

这不可能吗?我该怎么办?

第一个词:

enter image description here

Qt 之一:

enter image description here

最佳答案

这似乎是 Qt 在 Window 操作系统(字体渲染)上存在的问题,并且可以使用某些 >=48pt 的字体,而不能使用其他一些字体。

问题:https://bugreports.qt.io/browse/QTBUG-40052

我们希望他们能在不久的将来修复它。

您可以使用 QPainterPath 进行绘制,它的成本更高但仍然有帮助:

void TextLabel::paintEvent(QPaintEvent*) {
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setBrush(Qt::black);

QFont font;
font.setPointSize(38);
font.setFamily("Roboto");

painter.setFont(font);

painter.drawText(0, 60, "Google");

QPainterPath textPath;
textPath.addText(0, 140, font, "Google");
painter.drawPath(textPath);
}

Roboto @ 38pt :

enter image description here

关于qt - 使用 QPainter::drawText() 时文本没有抗锯齿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37877465/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com