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

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

被折叠的 条评论
为什么被折叠?



