Qt源码分析--QPainter(3)

本文深入探讨了Qt中QPainter类的绘图机制,包括如何绘制直线和填充矩形的具体实现过程。对于直线绘制,文章详细解释了根据线段数量进行逐段绘制的方法;对于矩形填充,则介绍了设置画刷样式及颜色后的绘制流程。

1.inline void drawLine(const QPoint &p1, const QPoint &p2);

inline void QPainter::drawLine(const QPoint &p1, const QPoint &p2)
{
    QLine l(p1, p2);
    drawLines(&l, 1);
}
void QPainter::drawLines(const QLine *lines, int lineCount)
{
#ifdef QT_DEBUG_DRAW
    if (qt_show_painter_debug_output)
        printf("QPainter::drawLine(), line count=%d\n", lineCount);
#endif
    Q_D(QPainter);
    if (!d->engine || lineCount < 1)
        return;
    if (d->extended) {
        d->extended->drawLines(lines, lineCount);
        return;
    }
    d->updateState(d->state);
    uint lineEmulation = line_emulation(d->state->emulationSpecifier);
    if (lineEmulation) {
        if (lineEmulation == QPaintEngine::PrimitiveTransform
            && d->state->matrix.type() == QTransform::TxTranslate) {
            for (int i = 0; i < lineCount; ++i) {
                QLineF line = lines[i];
                line.translate(d->s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天进步2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值