1. 程式人生 > >Qt 描邊字型

Qt 描邊字型

來源:

1.

是可以實現的,看看Qt的例子:painterpath。
裡面設定了一下這個QPen,然後結合QPainterPath::addText()函式。

2.

使用QPainterPath::addText()的確可以實現文字黑邊的的效果,但是對於小字型(基本上只有一個畫素寬的文字)實現效果並不理想,無論是調節字型的粗細,還是減小邊線的寬度,最後得到的效果總是很不自然:最近發現了一個笨辦法能夠達到這種小字型增加黑邊的效果:先使用黑色的相同字型在預定繪製文字的位置處分別向四周偏移一個畫素繪製黑色文字,然後再用文字顏色繪製文字:

  1. painter.save();
    painter.setPen(QPen(Qt::black, 1));
    painter.setBrush(Qt::NoBrush);
    int offset_x[8] = { -1, 0, 1, 1, 1, 0, -1, -1 };
    int offset_y[8] = { -1, -1, -1, 0, 1, 1, 1, 0 };
    for (int i = 0; i < 8; ++i)
    {
        QRectF r = rect; // 預定繪製文字的Rectangle
        r.moveCenter(r.center() + QPointF(offset_x[i], offset_y[i]));
        painter.drawText(r, flag, text);
    }
    painter.restore();
    painter.drawText(rect, flag, text);


這個辦法的效率可能有些低,但是效果還是比較好的。

3.

//! 設定字型黑色描邊  
    QTextCharFormat format;  
    format.setTextOutline(QPen(Qt::black, 0.2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));  
    mergeCurrentCharFormat(format);  
    setText(text);