Graphics.Restore 方法
将此 Graphics 的状态还原到 GraphicsState 表示的状态。
**命名空间:**System.Drawing
**程序集:**System.Drawing(在 system.drawing.dll 中)
语法
声明
Public Sub Restore ( _
gstate As GraphicsState _
)
用法
Dim instance As Graphics
Dim gstate As GraphicsState
instance.Restore(gstate)
public void Restore (
GraphicsState gstate
)
public:
void Restore (
GraphicsState^ gstate
)
public void Restore (
GraphicsState gstate
)
public function Restore (
gstate : GraphicsState
)
参数
- gstate
GraphicsState,它表示要将此 Graphics 还原到的状态。
备注
当调用 Graphics 的 Save 方法时,一个保存 Graphics 状态的信息块将被放在堆栈上。Save 方法返回一个标识该信息块的 GraphicsState。当将标识的 GraphicsState 传递给 Restore 方法时,信息块被从堆栈中移除并且用于将 Graphics 还原到它在 Save 方法调用时所处的状态。注意,由给定的 Save 方法调用返回的 GraphicsState 只能向 Restore 方法传递一次。
Save 方法调用可以嵌套;即在调用 Restore 方法前可调用 Save 方法若干次。您每次调用 Save 方法时,都有一个信息块被放在堆栈上,同时您将接收到该信息块的一个 GraphicsState。当将其中某个对象传递给 Restore 方法时,Graphics 返回到它在 Save 方法调用时所处的状态,该方法调用返回了该特定的 GraphicsState。由该 Save 方法调用放在堆栈上的信息块会从堆栈中移除,而且在该 Save 方法调用之后放在该堆栈上的所有信息块也会被移除。
BeginContainer 方法调用与 Save 方法调用将信息块放在同一堆栈上。正如 Restore 调用与 Save 调用成对出现一样,EndContainer 方法调用与 BeginContainer 方法调用也成对出现。
当调用 Restore 方法时,在相应的 Save 方法调用(由 Save 方法或 BeginContainer 方法)之后放在堆栈上的所有信息块都从堆栈中被移除。同样,当您调用 EndContainer 方法时,在相应的 Save 方法调用之后(由 Save 方法或 BeginContainer 方法)放在堆栈上的所有信息块都从堆栈中被移除。
示例
下面的代码示例设计为与 Windows 窗体一起使用,它需要 PaintEventArgse,即 Paint 事件处理程序的一个参数。代码执行下列操作:
将 Windows 窗体的世界变换平移一个向量 (100, 0)。
保存窗体的图形状态。
将窗体的世界变换重置为一个单位矩阵并用纯红色画笔填充一个矩形。
还原经过平移的图形状态并用纯蓝色画笔填充第二个矩形。
结果得到一个未平移的用红色填充的矩形和一个已平移的用蓝色填充的矩形。
Public Sub SaveRestore2(ByVal e As PaintEventArgs)
' Translate transformation matrix.
e.Graphics.TranslateTransform(100, 0)
' Save translated graphics state.
Dim transState As GraphicsState = e.Graphics.Save()
' Reset transformation matrix to identity and fill rectangle.
e.Graphics.ResetTransform()
e.Graphics.FillRectangle(New SolidBrush(Color.Red), 0, 0, 100, 100)
' Restore graphics state to translated state and fill second
' rectangle.
e.Graphics.Restore(transState)
e.Graphics.FillRectangle(New SolidBrush(Color.Blue), 0, 0, _
100, 100)
End Sub
public void SaveRestore2(PaintEventArgs e)
{
// Translate transformation matrix.
e.Graphics.TranslateTransform(100, 0);
// Save translated graphics state.
GraphicsState transState = e.Graphics.Save();
// Reset transformation matrix to identity and fill rectangle.
e.Graphics.ResetTransform();
e.Graphics.FillRectangle(new SolidBrush(Color.Red), 0, 0, 100, 100);
// Restore graphics state to translated state and fill second
// rectangle.
e.Graphics.Restore(transState);
e.Graphics.FillRectangle(new SolidBrush(Color.Blue), 0, 0, 100, 100);
}
平台
Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
版本信息
.NET Framework
受以下版本支持:2.0、1.1、1.0