我不能肯定它是什么,QPainter
确实,当我调用save()
和restore()
.
难道节省它绘制的图像,或只是保存等有关的信息penWidth
和color
等?
我可以用它来恢复上一个油漆事件的图像吗?
由于您可能正在更改颜色和样式或油漆的任何其他设置,您通常希望使用与进入时相同的设置退出油漆功能.因此,您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
}
Run Code Online (Sandbox Code Playgroud)
painter->save()
将画家的状态置于堆栈中,painter->restore()
从堆栈中拉出状态并更改设置以匹配该状态.
如果一个人经常使用 save/restore,最好有一个小的 RAII 类(“PainterSaver”)来确保每个 save()(在 ctor 中完成)都有一个相应的 restore() 调用(在 dtor 中完成),否则人们可能会遇到令人讨厌的“不平衡的保存/恢复”错误。