Qt實現藝術字效果,通常有三種方式,一種是通過繪制機制,另外一種是使用樣式表,最后一種是通過圖片代替,本次介紹使用繪制來實現藝術字效果。
代碼如下(分兩種實現):
第一種:
QPainter painter(this);
QPen pen;
pen.setWidth(2);
pen.setColor(Qt::red);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(pen);
QLinearGradient linearGrad;
bool ifTransparent = false;
if (ifTransparent){
linearGrad.setColorAt(0, Qt::transparent); // 字體透明 只有邊框
} else {
linearGrad.setColorAt(0, Qt::blue); // 字體利用特定顏色來填充
}
QFont font;
font.setPointSize(40);
font.setBold(true);
QPainterPath textPath;
QRect painterRect = rect();
QString str = QStringLiteral("花莫弦");
textPath.addText(width() / 2, painterRect.bottom() / 2, font, str);
painter.setBrush(linearGrad);
painter.drawPath(textPath);
效果圖:
第二種:
QPainter painter(this);
QFont font;
font.setPointSize(40);
font.setBold(true);
QFontMetrics metrics(font);
QPainterPath path;
QPen pen(QColor(255, 0, 0, 100));
int penWidth = font.pointSize() * 0.5;
if (penWidth > 6) {
penWidth = 6;
}
pen.setWidth(penWidth);
int len = metrics.width(QStringLiteral("花莫弦"));
int w = width();
int px = (len - w) / 2;
if (px < 0) {
px = -px;
}
int py = (height() - metrics.height()) / 2 + metrics.ascent();
if(py < 0)
{
py = -py;
}
path.addText(px, py, font, QStringLiteral("花莫弦"));
painter.strokePath(path, pen);
painter.drawPath(path);
painter.fillPath(path, QBrush(Qt::blue));
效果圖:
---------------------
作者:花莫弦
來源:CSDN
原文:https://blog.csdn.net/u011822862/article/details/80559762
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
