如果我们用painter一个一个的绘制直线,圆等在控件上,绘制效率会不高。为了提高效率,我们可以设置一个画布pixmap,将所有的基础图形画布上,然后把画布画在控件上。
#include <QPixmap>
void Widget::paintEvent(QPaintEvent *)
{
QPixmap pixmap(size()); //将画布的大小设置为和widget一样的
QPainter painter(&pixmap); //在画布上常见一个画家
painter.setBrush(Qt::yellow);
painter.setPen(QPen(Qt::red, 2, Qt::DashLine));
painter.drawEllipse(QPoint(95, 333), 50, 50);
painter.drawText(QPoint(50, 50), "Hello world");
painter.end(); //画完了
painter.begin(this); //在Widget上开始绘制
painter.drawPixmap(0, 0, pixmap); //在控件上绘制pixmap图像
painter.drawLine(QPoint(50, 50), QPoint(60, 10));
}
本文介绍了一种在Qt中使用Pixmap来提升绘图效率的方法。通过先在Pixmap上绘制所有基础图形,再将Pixmap绘制到控件上,避免了重复绘制带来的性能损耗。文章详细展示了如何设置画布大小,使用QPainter在画布上绘制图形和文本,并将其展示在控件上的过程。
1958

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



