Qt 描边字体

来源:

http://qtcn.org/bbs/simple/?t59684.html

https://blog.csdn.net/jigetage/article/details/79745939

 

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

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值