我不能肯定它是什么,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 中完成),否则人们可能会遇到令人讨厌的“不平衡的保存/恢复”错误。
| 归档时间: |
|
| 查看次数: |
10893 次 |
| 最近记录: |