请单击以进行评分并提供反馈
MSDN
全部折叠/全部展开 全部折叠
此页面仅适用于
.NET Framework 3.0

同时提供下列产品的其他版本:
Graphics.Restore 方法
将此 Graphics 的状态还原到 GraphicsState 表示的状态。

命名空间: System.Drawing
程序集: System.Drawing(在 system.drawing.dll 中)

Visual Basic(声明)
Public Sub Restore ( _
    gstate As GraphicsState _
)
Visual Basic (用法)
Dim instance As Graphics
Dim gstate As GraphicsState

instance.Restore(gstate)
C#
public void Restore (
    GraphicsState gstate
)
C++
public:
void Restore (
    GraphicsState^ gstate
)
J#
public void Restore (
    GraphicsState gstate
)
JScript
public function Restore (
    gstate : GraphicsState
)
XAML
不适用。

参数

gstate

GraphicsState,它表示要将此 Graphics 还原到的状态。

当调用 GraphicsSave 方法时,一个保存 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 方法调用之后(由 BeginContainer 方法或 BeginContainer 方法)放在堆栈上的所有信息块都从堆栈中被移除。

下面的代码示例设计用于 Windows 窗体,它需要 PaintEventArgse(这是 Paint 事件处理程序的参数)。代码执行下列操作:

  • 将 Windows 窗体的世界变换平移一个向量 (100, 0)。

  • 保存窗体的图形状态。

  • 将窗体的世界变换重置为一个单位矩阵并用纯红色画笔填充一个矩形。

  • 还原经过平移的图形状态并用纯蓝色画笔填充第二个矩形。

结果得到一个未平移的用红色填充的矩形和一个已平移的用蓝色填充的矩形。

Visual Basic
Private 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
C#
private 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 Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Windows Vista、Microsoft Windows XP SP2 和 Windows Server 2003 SP1 支持 Microsoft .NET Framework 3.0。

.NET Framework

受以下版本支持:3.0、2.0、1.1、1.0
社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利 | 商标 | 隐私权声明
Page view tracker