当我调用save()
和restore()
时,我不确定QPainter
在执行什么操作。
它是将绘制的图像保存下来,还是仅保存像penWidth
和color
一类的信息?
我是否可以使用它来恢复先前的绘制事件中的图像?
当我调用save()
和restore()
时,我不确定QPainter
在执行什么操作。
它是将绘制的图像保存下来,还是仅保存像penWidth
和color
一类的信息?
我是否可以使用它来恢复先前的绘制事件中的图像?
来自文档:
您可以随时通过调用save()函数保存QPainter的状态,该函数将所有可用设置保存在内部堆栈中。 restore()函数会将它们弹出。
所有这些设置都列在给定的链接中。因此,只是保存了绘画设置而没有实际绘制任何内容。
当您更改绘制设置的颜色、样式或其他任何设置时,通常希望在退出绘图函数时保留与进入时相同的设置。因此,在更改绘图器设置之前使用QPainter::save()
,在使用更改后的设置完成绘制之后使用QPainter::restore()
。
void paint( QPainter* painter,
const QStyleOptionGraphicsItem* option,
QWidget* widget = 0 )
{
// Painter has certain settings
painter->save();
QPen pen = painter->pen();
pen.setColor(QColor(200,20,20);
// Changing settings of painter
painter->setPen(pen);
// ... Draw
painter->restore();
// Painter has same settings as on entry into this function
}
painter->save()
将绘图器的状态存储在堆栈中,painter->restore()
从堆栈中取出状态并改变设置以匹配该状态。
QSignalBlocker
。我真的很想知道为什么我们从来没有得到过一个 QPainterStateRestorer
? - Parker Coates