Qt-绘制填充字体

在widget上绘制文字时,我们可以给widget设置字体,在构造函数中这样写即可:

 QFont newFont = font();
 newFont.setFamily("黑体");
 newFont.setPointSize(newFont.pointSize() + 20);
 setFont(newFont);

通常我们在界面上绘制字体时,背景是有颜色的。当背景透明时,我们通常会将字体的轮廓用一像素其他颜色给描绘一下,防止字体与后面的窗口颜色相同时,字体看不见。

这时我们不用drawText而用drawPath。

QPainterPath

QPainterPath对象可用于填充、勾画轮廓和剪切。要为给定的绘制器路径生成可填充的轮廓,请使用QPainterPathStroker类。

我们用addText函数来绘制。这个函数将给定的文本作为一组根据所提供的字体创建的封闭子路径添加到此路径。这些子路径的位置使文本基线的左端位于指定的点。

void QPainterPath::addText(const QPointF &point, const QFont &font, const QString &text)

  QPen pen;
  pen.setWidth(1);//设置轮廓的像素
  pen.setColor(QColor(50,50,50));//设置轮廓的颜色

  QLinearGradient linearGrad;
  //linearGrad.setColorAt(0, Qt::transparent);     // 字体透明 只有边框
  linearGrad.setColorAt(0, Qt::white);              // 字体利用特定颜色来填充内容

  QFont myFont;
  QPointF baseline(x, y);

  QPainter painter(this);
  painter.setRenderHint(QPainter::Antialiasing, true);
  painter.setPen(pen);
  painter.setBrush(linearGrad);


  QPainterPath textPath;
  textPath.addText(x,y,this->font(),QString("Hello"));//设置开始的字体基线的坐标,字体
  painter.drawPath(textPath);

 

 

 

 

 

 

你可能感兴趣的:(Qt基础)