.NET Framework Class Library
Graphics.BeginContainer Method (Rectangle, Rectangle, GraphicsUnit)

Saves a graphics container with the current state of this Graphics object and opens and uses a new graphics container with the specified scale transformation.

[Visual Basic]
Overloads Public Function BeginContainer( _
   ByVal dstrect As Rectangle, _
   ByVal srcrect As Rectangle, _
   ByVal unit As GraphicsUnit _
) As GraphicsContainer
[C#]
public GraphicsContainer BeginContainer(
 Rectangle dstrect,
 Rectangle srcrect,
 GraphicsUnit unit
);
[C++]
public: GraphicsContainer* BeginContainer(
 Rectangle dstrect,
 Rectangle srcrect,
 GraphicsUnit unit
);
[JScript]
public function BeginContainer(
   dstrect : Rectangle,
 srcrect : Rectangle,
 unit : GraphicsUnit
) : GraphicsContainer;

Parameters

dstrect
Rectangle structure that, together with the srcrect parameter, specifies a scale transformation for the container.
srcrect
Rectangle structure that, together with the dstrect parameter, specifies a scale transformation for the container.
unit
Member of the GraphicsUnit enumeration that specifies the unit of measure for the container.

Return Value

This method returns a GraphicsContainer object that represents the state of this Graphics object at the time of the method call.

Remarks

Use this method with the EndContainer method to create nested graphics containers. Graphics containers retain graphics state, such as transformation, clipping region, and rendering properties.

When you call the BeginContainer method of a Graphics object, an information block that holds the state of the Graphics object is put on a stack. The BeginContainer method returns a GraphicsContainer object that identifies that information block. When you pass the identifying object to the EndContainer method, the information block is removed from the stack and is used to restore the Graphics object to the state it was in at the time of the BeginContainer method call.

Containers can be nested; that is, you can call the BeginContainer method several times before you call the EndContainer method. Each time you call the BeginContainer method, an information block is put on the stack, and you receive a GraphicsContainer object for the information block. When you pass one of those objects to the EndContainer method, the Graphics object is returned to the state it was in at the time of the BeginContainer method call that returned that particular GraphicsContainer object. The information block placed on the stack by that BeginContainer method call is removed from the stack, and all information blocks placed on that stack after that BeginContainer method call are also removed.

Calls to the Graphics.Save method place information blocks on the same stack as calls to the BeginContainer method. Just as an EndContainer method call is paired with a BeginContainer method call, a Graphics.Restore method call is paired with a Save method call.

When you call the EndContainer method, all information blocks placed on the stack (by the Save method or by the BeginContainer method) after the corresponding call to the BeginContainer method are removed from the stack. Likewise, when you call the Restore method, all information blocks placed on the stack (by the Save method or by the BeginContainer method) after the corresponding call to the Save method are removed from the stack.

This method specifies a scale transformation for the new graphics container with the dstrect and srcrect parameters. The scale is equal to the transformation that, when applied to srcrect, results in dstrect.

The graphics state established by the BeginContainer method includes the rendering qualities of the default graphics state; any rendering-quality state changes existing when the method is called are reset to the default values.

Example

[Visual Basic, C#] The following example is designed for use with Windows Forms, and it requires PaintEventArgs e, which is a parameter of the Paint event handler. The code performs the following actions:

  • Creates two rectangles to specify a scale transformation for the new container.
  • Opens the new graphics container and saves the old container.
  • Fills a red rectangle in the (scaled coordinates of the) new container.
  • Closes the new container and restores the saved container.
  • Fills a green rectangle (to the unscaled coordinates) of the saved container.

[Visual Basic, C#] The result is a green rectangle that overlies a smaller red rectangle.

[Visual Basic] 
Public Sub BeginContainerRectangle(e As PaintEventArgs)
' Define transformation for container.
Dim srcRect As New Rectangle(0, 0, 200, 200)
Dim destRect As New Rectangle(100, 100, 150, 150)
' Begin graphics container.
Dim containerState As GraphicsContainer = _
e.Graphics.BeginContainer(destRect, srcRect, GraphicsUnit.Pixel)
' Fill red rectangle in container.
e.Graphics.FillRectangle(New SolidBrush(Color.Red), 0, 0, 200, 200)
' End graphics container.
e.Graphics.EndContainer(containerState)
' Fill untransformed rectangle with green.
e.Graphics.FillRectangle(New SolidBrush(Color.Green), 0, 0, _
200, 200)
End Sub
        
[C#] 
public void BeginContainerRectangle(PaintEventArgs e)
{
// Define transformation for container.
Rectangle srcRect = new Rectangle(0, 0, 200, 200);
Rectangle destRect = new Rectangle(100, 100, 150, 150);
// Begin graphics container.
GraphicsContainer containerState = e.Graphics.BeginContainer(
destRect, srcRect,
GraphicsUnit.Pixel);
// Fill red rectangle in container.
e.Graphics.FillRectangle(new SolidBrush(Color.Red), 0, 0, 200, 200);
// End graphics container.
e.Graphics.EndContainer(containerState);
// Fill untransformed rectangle with green.
e.Graphics.FillRectangle(new SolidBrush(Color.Green), 0, 0, 200, 200);
}
        

[C++, JScript] No example is available for C++ or JScript. To view a Visual Basic or C# example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also

Graphics Class | Graphics Members | System.Drawing Namespace | Graphics.BeginContainer Overload List

Page view tracker