System.Drawing.Drawing2D Namespace

Provides advanced two-dimensional and vector graphics functionality.

Classes

AdjustableArrowCap

Represents an adjustable arrow-shaped line cap. This class cannot be inherited.

Blend

Defines a blend pattern for a LinearGradientBrush object. This class cannot be inherited.

ColorBlend

Defines arrays of colors and positions used for interpolating color blending in a multicolor gradient. This class cannot be inherited.

CustomLineCap

Encapsulates a custom user-defined line cap.

GraphicsContainer

Represents the internal data of a graphics container. This class is used when saving the state of a Graphics object using the BeginContainer() and EndContainer(GraphicsContainer) methods. This class cannot be inherited.

GraphicsPath

Represents a series of connected lines and curves. This class cannot be inherited.

GraphicsPathIterator

Provides the ability to iterate through subpaths in a GraphicsPath and test the types of shapes contained in each subpath. This class cannot be inherited.

GraphicsState

Represents the state of a Graphics object. This object is returned by a call to the Save() methods. This class cannot be inherited.

HatchBrush

Defines a rectangular brush with a hatch style, a foreground color, and a background color. This class cannot be inherited.

LinearGradientBrush

Encapsulates a Brush with a linear gradient. This class cannot be inherited.

Matrix

Encapsulates a 3-by-3 affine matrix that represents a geometric transform. This class cannot be inherited.

PathData

Contains the graphical data that makes up a GraphicsPath object. This class cannot be inherited.

PathGradientBrush

Encapsulates a Brush object that fills the interior of a GraphicsPath object with a gradient. This class cannot be inherited.

RegionData

Encapsulates the data that makes up a Region object. This class cannot be inherited.

Enums

CombineMode

Specifies how different clipping regions can be combined.

CompositingMode

Specifies how the source colors are combined with the background colors.

CompositingQuality

Specifies the quality level to use during compositing.

CoordinateSpace

Specifies the system to use when evaluating coordinates.

DashCap

Specifies the type of graphic shape to use on both ends of each dash in a dashed line.

DashStyle

Specifies the style of dashed lines drawn with a Pen object.

FillMode

Specifies how the interior of a closed path is filled.

FlushIntention

Specifies whether commands in the graphics stack are terminated (flushed) immediately or executed as soon as possible.

HatchStyle

Specifies the different patterns available for HatchBrush objects.

InterpolationMode

The InterpolationMode enumeration specifies the algorithm that is used when images are scaled or rotated.

LinearGradientMode

Specifies the direction of a linear gradient.

LineCap

Specifies the available cap styles with which a Pen object can end a line.

LineJoin

Specifies how to join consecutive line or curve segments in a figure (subpath) contained in a GraphicsPath object.

MatrixOrder

Specifies the order for matrix transform operations.

PathPointType

Specifies the type of point in a GraphicsPath object.

PenAlignment

Specifies the alignment of a Pen object in relation to the theoretical, zero-width line.

PenType

Specifies the type of fill a Pen object uses to fill lines.

PixelOffsetMode

Specifies how pixels are offset during rendering.

QualityMode

Specifies the overall quality when rendering GDI+ objects.

SmoothingMode

Specifies whether smoothing (antialiasing) is applied to lines and curves and the edges of filled areas.

WarpMode

Specifies the type of warp transformation applied in a Warp method.

WrapMode

Specifies how a texture or gradient is tiled when it is smaller than the area being filled.

Remarks

Caution

The System.Drawing namespace has some limitations for certain operating systems and application types.

  • On Windows, System.Drawing depends on the GDI+ native library, which is shipped as part of the OS. Some Windows SKUs, like Windows Server Core or Windows Nano, don't include this native library as part of the OS. If you use this namespace and the library can't be loaded, exceptions will be thrown at run time.

  • Some types in the System.Drawing namespace rely on GDI+, which is not supported in Windows services and ASP.NET Core and ASP.NET apps. These types are in the System.Drawing.Common NuGet package and include System.Drawing.Bitmap and System.Drawing.Font. However, primitive types in the namespace, such as System.Drawing.Color, System.Drawing.Size, System.Drawing.Point, and System.Drawing.Rectangle, can be used in any application.

  • In .NET 5 and previous versions, the System.Drawing.Common NuGet package works on Windows, Linux, and macOS. However, there are some platform differences. On Linux and macOS, the GDI+ functionality is implemented by the libgdiplus) library. This library is not installed by default in most Linux distributions and doesn't support all the functionality of GDI+ on Windows and macOS. There are also platforms where libgdiplus is not available at all. To use types from the System.Drawing.Common package on Linux and macOS, you must install libgdiplus separately. For more information, see Install .NET on Linux or Install .NET on macOS.

  • In .NET 6 and later versions, the System.Drawing.Common NuGet package is only supported on Windows operating systems. For more information, see System.Drawing.Common only supported on Windows.

If you can't use System.Drawing with your application, recommended alternatives include ImageSharp, SkiaSharp, Windows Imaging Components, and Microsoft.Maui.Graphics.

The following table lists some of the important classes and enumerations in the System.Drawing.Drawing2D namespace, grouped into categories.

Class category Details
- Graphics and Graphics paths The GraphicsState and GraphicsContainer classes report information about the current Graphics object. GraphicsPath classes represent a series of lines and curves. The GraphicsPathIterator and PathData classes provide detailed information about the contents of a GraphicsPath object.
- Matrix and transformation related types The Matrix class represents a matrix for geometric transforms. The MatrixOrder enumeration specifies the order for matrix transformations.
- Brush classes The PathGradientBrush and HatchBrush classes enable you to fill shapes with either a gradient, or hatch pattern, respectively.
- Enumeration related to lines The LineCap and CustomLineCap enumerations enable you to specify cap styles for a line. The, LineJoin enumeration enables you to specify how two lines are joined in a path. The PenAlignment enumeration enables you specify the alignment of the drawing tip, when you draw a line. The PenType enumeration specifies the pattern a line should be filled with.
- Enumerations related to filling shapes and paths The HatchStyle enumeration specifies fill styles for a HatchBrush. The Blend class specifies a blend pattern for a LinearGradientBrush. The FillMode enumeration specifies the fill style for a GraphicsPath.

Caution

Classes in the System.Drawing.Drawing2D namespace are not supported for use in a Windows or ASP.NET service. Attempting to use these classes in one of these application types may produce unexpected problems, such as diminished service performance and run-time exceptions.

See also