This repository has been archived on 2025-03-23. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
xerobrowser/packages/Win32Interop.Gdi32.1.0.1/lib/Win32Interop.Gdi32.XML
2023-02-20 23:24:10 +13:00

13921 lines
998 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0"?>
<doc>
<assembly>
<name>Win32Interop.Gdi32</name>
</assembly>
<members>
<member name="T:Win32Interop.Enums.AC">
<summary>
The alpha-blending function for source and destination bitmaps, a global alpha value to be applied to the entire source bitmap, and format
information for the source bitmap.
</summary>
</member>
<member name="F:Win32Interop.Enums.AC.AC_SRC_OVER">
<summary>The source bitmap is placed over the destination bitmap based on the alpha values of the source pixels.</summary>
</member>
<member name="F:Win32Interop.Enums.AC.AC_SRC_ALPHA">
<summary>
This flag is set when the bitmap has an Alpha channel (that is, per-pixel alpha). Note that the APIs use premultiplied alpha, which means that
the red, green and blue channel values in the bitmap must be premultiplied with the alpha channel value. For example, if the alpha channel value
is x, the red, green and blue channels must be multiplied by x and divided by 0xff prior to the call.
</summary>
</member>
<member name="T:Win32Interop.Methods.EnumICMProfilesProcCallback">
<summary>
The <see cref="T:Win32Interop.Methods.EnumICMProfilesProcCallback"/> callback is an application-defined callback function that processes color profile data from
<see cref="M:Win32Interop.Methods.Gdi32.EnumICMProfiles(System.IntPtr,Win32Interop.Methods.EnumICMProfilesProcCallback,System.Int32)"/> .
</summary>
<param name="lpszFilename">Pointer to the file name of the color profile.</param>
<param name="lParam">
Data supplied by the application that is passed to the callback function by the <see cref="M:Win32Interop.Methods.Gdi32.EnumICMProfiles(System.IntPtr,Win32Interop.Methods.EnumICMProfilesProcCallback,System.Int32)"/> function.
</param>
</member>
<member name="T:Win32Interop.Methods.EnhMetaFileProc">
<summary>
The <see cref="T:Win32Interop.Methods.EnhMetaFileProc"/> function is an application-defined callback function used with the <see cref="M:Win32Interop.Methods.Gdi32.EnumEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnhMetaFileProc,System.IntPtr,Win32Interop.Structs.RECT@)"/>
function. The <see cref="T:Win32Interop.Methods.EnhMetaFileProc"/> type defines a pointer to this callback function. <see cref="T:Win32Interop.Methods.EnhMetaFileProc"/> is a placeholder
for the application-defined function name.
</summary>
<param name="hDC">
Handle to the device context passed to <see cref="M:Win32Interop.Methods.Gdi32.EnumEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnhMetaFileProc,System.IntPtr,Win32Interop.Structs.RECT@)"/>.
</param>
<param name="lpHTable">
Pointer to a <see cref="T:Win32Interop.Structs.HANDLETABLE"/> structure representing the table of handles associated with the graphics objects (pens, brushes, and so
on) in the metafile. The first entry contains the enhanced-metafile handle.
</param>
<param name="lpEMFR">
Pointer to one of the records in the metafile. This record should not be modified. (If modification is necessary, it should be performed on a
copy of the record.)
</param>
<param name="nObj">Specifies the number of objects with associated handles in the handle table.</param>
<param name="lpData">Pointer to optional data.</param>
<returns>This function must return a nonzero value to continue enumeration; to stop enumeration, it must return zero.</returns>
<remarks>
An application must register the callback function by passing its address to the <see cref="M:Win32Interop.Methods.Gdi32.EnumEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnhMetaFileProc,System.IntPtr,Win32Interop.Structs.RECT@)"/> function.
</remarks>
</member>
<member name="T:Win32Interop.Methods.AbortProc">
<summary>
The <see cref="T:Win32Interop.Methods.AbortProc"/> function is an application-defined callback function used with the <see cref="M:Win32Interop.Methods.Gdi32.SetAbortProc(System.IntPtr,Win32Interop.Methods.AbortProc)"/> function. It is
called when a print job is to be canceled during spooling. The <see cref="T:Win32Interop.Methods.AbortProc"/> type defines a pointer to this callback function.
<see cref="T:Win32Interop.Methods.AbortProc"/> is a placeholder for the application-defined function name.
</summary>
<param name="hdc">A handle to the device context for the print job.</param>
<param name="iError">
Specifies whether an error has occurred. This parameter is zero if no error has occurred; it is SP_OUTOFDISK if Print Manager is currently out of
disk space and more disk space will become available if the application waits.
</param>
<returns>The callback function should return TRUE to continue the print job or FALSE to cancel the print job.</returns>
<remarks>
<para>
Note: This is a blocking or synchronous function and might not return immediately. How quickly this function returns depends on run-time
factors such as network status, print server configuration, and printer driver implementation—factors that are difficult to predict when
writing an application. Calling this function from a thread that manages interaction with the user interface could make the application
appear to be unresponsive.
</para>
<para>
If the <paramref name="iError"/> parameter is SP_OUTOFDISK, the application need not cancel the print job. If it does not cancel the job, it
must yield to Print Manager by calling thePeekMessage or GetMessage function.
</para>
</remarks>
</member>
<member name="T:Win32Interop.Methods.EnumMetaFileProc">
<summary>
<para>
The <see cref="T:Win32Interop.Methods.EnumMetaFileProc"/> function is an application-defined callback function that processes Windows-format metafile records. This
function is called by the <see cref="M:Win32Interop.Methods.Gdi32.EnumMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnumMetaFileProc,System.Int32)"/> function. The <see cref="T:Win32Interop.Methods.EnumMetaFileProc"/> type defines a pointer to this
callback function. <see cref="T:Win32Interop.Methods.EnumMetaFileProc"/> is a placeholder for the application-defined function name.
</para>
<para>
Note: This function is provided only for compatibility with Windows-format metafiles. Enhanced-format metafiles provide superior
functionality and are recommended for new applications. The corresponding function for an enhanced-format metafile is
<see cref="T:Win32Interop.Methods.EnhMetaFileProc"/>.
</para>
</summary>
<param name="hDC">
Handle to the device context passed to <see cref="M:Win32Interop.Methods.Gdi32.EnumMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnumMetaFileProc,System.Int32)"/>.
</param>
<param name="lpHTable">Pointer to a table of handles associated with the graphics objects (pens, brushes, and so on) in the metafile.</param>
<param name="lpMFR">
Pointer to one of the records in the metafile. This record should not be modified. (If modification is necessary, it should be performed on a
copy of the record.)
</param>
<param name="nObj">Specifies the number of objects with associated handles in the handle table.</param>
<param name="lpClientData">Pointer to optional data.</param>
<returns>This function must return a nonzero value to continue enumeration; to stop enumeration, it must return zero.</returns>
<remarks>
<para>
An application must register the callback function by passing its address to the <see cref="M:Win32Interop.Methods.Gdi32.EnumMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnumMetaFileProc,System.Int32)"/> function.
</para>
<para>
<see cref="T:Win32Interop.Methods.EnumMetaFileProc"/> is a placeholder for the application-supplied function name.
</para>
</remarks>
</member>
<member name="T:Win32Interop.Methods.EnumObjectsProc">
<summary>
The <see cref="T:Win32Interop.Methods.EnumObjectsProc"/> function is an application-defined callback function used with the <see cref="M:Win32Interop.Methods.Gdi32.EnumObjects(System.IntPtr,System.Int32,Win32Interop.Methods.EnumObjectsProc,System.Int32)"/> function.
It is used to process the object data. The GOBJENUMPROC type defines a pointer to this callback function. <see cref="T:Win32Interop.Methods.EnumObjectsProc"/> is a
placeholder for the application-defined function name.
</summary>
<param name="lpLogObject">
A pointer to a <see cref="T:Win32Interop.Structs.LOGPEN"/> or <see cref="T:Win32Interop.Structs.LOGBRUSH"/> structure describing the attributes of the object.
</param>
<param name="lpData">
A pointer to the application-defined data passed by the <see cref="M:Win32Interop.Methods.Gdi32.EnumObjects(System.IntPtr,System.Int32,Win32Interop.Methods.EnumObjectsProc,System.Int32)"/> function.
</param>
<returns>
<para>To continue enumeration, the callback function must return a nonzero value. This value is user-defined.</para>
<para>To stop enumeration, the callback function must return zero.</para>
</returns>
<remarks>
An application must register this function by passing its address to the <see cref="M:Win32Interop.Methods.Gdi32.EnumObjects(System.IntPtr,System.Int32,Win32Interop.Methods.EnumObjectsProc,System.Int32)"/> function.
</remarks>
</member>
<member name="T:Win32Interop.Methods.LineDDAProc">
<summary>
The <see cref="T:Win32Interop.Methods.LineDDAProc"/> function is an application-defined callback function used with the <see cref="M:Win32Interop.Methods.Gdi32.LineDDA(System.Int32,System.Int32,System.Int32,System.Int32,Win32Interop.Methods.LineDDAProc,System.Int32)"/> function. It is
used to process coordinates. The <see cref="T:Win32Interop.Methods.LineDDAProc"/> type defines a pointer to this callback function. <see cref="T:Win32Interop.Methods.LineDDAProc"/> is a
placeholder for the application-defined function name.
</summary>
<param name="X">Specifies the x-coordinate, in logical units, of the current point.</param>
<param name="Y">Specifies the y-coordinate, in logical units, of the current point.</param>
<param name="lpData">Pointer to the application-defined data.</param>
<returns>This function does not return a value.</returns>
<remarks>
An application registers a <see cref="T:Win32Interop.Methods.LineDDAProc"/> function by passing its address to the <see cref="M:Win32Interop.Methods.Gdi32.LineDDA(System.Int32,System.Int32,System.Int32,System.Int32,Win32Interop.Methods.LineDDAProc,System.Int32)"/> function.
</remarks>
</member>
<member name="T:Win32Interop.Methods.EnumFontFamExProc">
<summary>
The <see cref="T:Win32Interop.Methods.EnumFontFamExProc"/> function is an application defined callback function used with the <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/>
function. It is used to process the fonts. It is called once for each enumerated font. The FONTENUMPROC type defines a pointer to this callback
function. <see cref="T:Win32Interop.Methods.EnumFontFamExProc"/> is a placeholder for the application defined function name.
</summary>
<param name="lpelfe">
A pointer to an <see cref="T:Win32Interop.Structs.LOGFONT"/> structure that contains information about the logical attributes of the font. To obtain additional
information about the font, you can cast the result as an <see cref="T:Win32Interop.Structs.ENUMLOGFONTEX"/> or <see cref="T:Win32Interop.Structs.ENUMLOGFONTEXDV"/> structure.
</param>
<param name="lpntme">
<para>
A pointer to a structure that contains information about the physical attributes of a font. The function uses the
<see cref="T:Win32Interop.Structs.NEWTEXTMETRICEX"/> structure for TrueType fonts; and the <see cref="T:Win32Interop.Structs.TEXTMETRIC"/> structure for other fonts.
</para>
<para>
This can be an <see cref="T:Win32Interop.Structs.ENUMTEXTMETRIC"/> structure.
</para>
</param>
<param name="FontType">
<para>The type of the font. This parameter can be a combination of these values:</para>
<list type="bullet">
<item>DEVICE_FONTTYPE</item>
<item>RASTER_FONTTYPE</item>
<item>TRUETYPE_FONTTYPE</item>
</list>
</param>
<param name="lParam">
The application-defined data passed by the <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> function.
</param>
<returns>The return value must be a nonzero value to continue enumeration; to stop enumeration, the return value must be zero.</returns>
<remarks>
<para>
An application must register this callback function by passing its address to the <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> function.
</para>
<para>
When the graphics mode on the device context is set to GM_ADVANCED using the <see cref="M:Win32Interop.Methods.Gdi32.SetGraphicsMode(System.IntPtr,System.Int32)"/> function and the
DEVICE_FONTTYPE flag is passed to the FontType parameter, this function returns a list of type 1 and OpenType fonts on the system. When the
graphics mode is not set to GM_ADVANCED, this function returns a list of type 1, OpenType, and TrueType fonts on the system.
</para>
<para>
Unlike the EnumFontFamProc callback function, <see cref="T:Win32Interop.Methods.EnumFontFamExProc"/> receives extended information about a font. The
<see cref="T:Win32Interop.Structs.ENUMLOGFONTEX"/> structure includes the localized name of the script (character set) and the <see cref="T:Win32Interop.Structs.NEWTEXTMETRICEX"/>
structure includes a font-coverage signature.
</para>
</remarks>
</member>
<member name="T:Win32Interop.Methods.Gdi32">
<summary>Collection of native methods in gdi32.dll.</summary>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetEnhMetaFilePaletteEntries(System.IntPtr,System.UInt32,Win32Interop.Structs.PALETTEENTRY[]@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFilePaletteEntries(System.IntPtr,System.UInt32,Win32Interop.Structs.PALETTEENTRY[]@)"/> function retrieves optional palette entries from the specified enhanced metafile.
</summary>
<param name="hemf">A handle to the enhanced metafile.</param>
<param name="cEntries">The number of entries to be retrieved from the optional palette.</param>
<param name="lppe">
A pointer to an array of <see cref="T:Win32Interop.Structs.PALETTEENTRY"/> structures that receives the palette colors. The array must contain at least as many
structures as there are entries specified by the <paramref name="cEntries"/> parameter.
</param>
<returns>
If the array pointer is NULL and the enhanced metafile contains an optional palette, the return value is the number of entries in the enhanced
metafile's palette; if the array pointer is a valid pointer and the enhanced metafile contains an optional palette, the return value is the
number of entries copied; if the metafile does not contain an optional palette, the return value is zero. Otherwise, the return value is
GDI_ERROR.
</returns>
<remarks>
<para>
An application can store an optional palette in an enhanced metafile by calling the <see cref="M:Win32Interop.Methods.Gdi32.CreatePalette(Win32Interop.Structs.LOGPALETTE@)"/> and
<see cref="M:Win32Interop.Methods.Gdi32.SetPaletteEntries(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[])"/> functions before creating the picture and storing it in the metafile. By doing this, the application can
achieve consistent colors when the picture is displayed on a variety of devices.
</para>
<para>
An application that displays a picture stored in an enhanced metafile can call the <see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFilePaletteEntries(System.IntPtr,System.UInt32,Win32Interop.Structs.PALETTEENTRY[]@)"/> function to
determine whether the optional palette exists. If it does, the application can call the <see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFilePaletteEntries(System.IntPtr,System.UInt32,Win32Interop.Structs.PALETTEENTRY[]@)"/> function
a second time to retrieve the palette entries and then create a logical palette (by using the <see cref="M:Win32Interop.Methods.Gdi32.CreatePalette(Win32Interop.Structs.LOGPALETTE@)"/> function), select
it into its device context (by using the <see cref="M:Win32Interop.Methods.Gdi32.SelectPalette(System.IntPtr,System.IntPtr,System.Boolean)"/> function), and then realize it (by using the
<see cref="M:Win32Interop.Methods.Gdi32.RealizePalette(System.IntPtr)"/> function). After the logical palette has been realized, calling the <see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Structs.RECT@)"/> function
displays the picture using its original colors.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateScalableFontResource(System.UInt32,System.String,System.String,System.String)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateScalableFontResource(System.UInt32,System.String,System.String,System.String)"/> function is available for use in the operating systems specified in the Requirements section.
It may be altered or unavailable in subsequent versions.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateScalableFontResource(System.UInt32,System.String,System.String,System.String)"/> function creates a font resource file for a scalable font.
</para>
</summary>
<param name="fdwHidden">
<para>Specifies whether the font is a read-only font. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>0</term>
<description>The font has read/write permission.</description>
</item>
<item>
<term>1</term>
<description>
The font has read-only permission and should be hidden from other applications in the system. When this flag is set, the font is not
enumerated by the <see cref="M:Win32Interop.Methods.Gdi32.EnumFonts(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/> or <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamilies(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/> function.
</description>
</item>
</list>
</param>
<param name="lpszFontRes">
A pointer to a null-terminated string specifying the name of the font resource file to create. If this parameter specifies an existing font
resource file, the function fails.
</param>
<param name="lpszFontFile">
A pointer to a null-terminated string specifying the name of the scalable font file that this function uses to create the
font resource file.
</param>
<param name="lpszCurrentPath">A pointer to a null-terminated string specifying the path to the scalable font file.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
<para>
If <paramref name="lpszFontRes"/> specifies an existing font file, GetLastError returns ERROR_FILE_EXISTS
</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateScalableFontResource(System.UInt32,System.String,System.String,System.String)"/> function is used by applications that install TrueType fonts. An application uses the
<see cref="M:Win32Interop.Methods.Gdi32.CreateScalableFontResource(System.UInt32,System.String,System.String,System.String)"/> function to create a font resource file (typically with a .fot file name extension) and then uses
the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResource(System.String)"/> function to install the font. The TrueType font file (typically with a .ttf file name extension) must be
in the System subdirectory of the Windows directory to be used by the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResource(System.String)"/> function.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateScalableFontResource(System.UInt32,System.String,System.String,System.String)"/> function currently supports only TrueType-technology scalable fonts.
</para>
<para>
When the <paramref name="lpszFontFile"/> parameter specifies only a file name and extension, the <paramref name="lpszCurrentPath"/>
parameter must specify a path. When the <paramref name="lpszFontFile"/> parameter specifies a full path, the
<paramref name="lpszCurrentPath"/> parameter must be NULL or a pointer to NULL.
</para>
<para>
When only a file name and extension are specified in the <paramref name="lpszFontFile"/> parameter and a path is specified in the
<paramref name="lpszCurrentPath"/> parameter, the string in <paramref name="lpszFontFile"/> is copied into the .fot file as the .ttf file
that belongs to this resource. When the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResource(System.String)"/> function is called, the operating system assumes that the .ttf file
has been copied into the System directory (or into the main Windows directory in the case of a network installation). The .ttf file need not
be in this directory when the <see cref="M:Win32Interop.Methods.Gdi32.CreateScalableFontResource(System.UInt32,System.String,System.String,System.String)"/> function is called, because the <paramref name="lpszCurrentPath"/>
parameter contains the directory information. A resource created in this manner does not contain absolute path information and can be used in
any installation.
</para>
<para>
When a path is specified in the <paramref name="lpszFontFile"/> parameter and NULL is specified in the <paramref name="lpszCurrentPath"/>
parameter, the string in <paramref name="lpszFontFile"/> is copied into the .fot file. In this case, when the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResource(System.String)"/>
function is called, the .ttf file must be at the location specified in the <paramref name="lpszFontFile"/> parameter when the
<see cref="M:Win32Interop.Methods.Gdi32.CreateScalableFontResource(System.UInt32,System.String,System.String,System.String)"/> function was called; the <paramref name="lpszCurrentPath"/> parameter is not needed. A resource
created in this manner contains absolute references to paths and drives and does not work if the .ttf file is moved to a different location.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetEnhMetaFileDescription(System.IntPtr,System.UInt32,System.Text.StringBuilder)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFileDescription(System.IntPtr,System.UInt32,System.Text.StringBuilder)"/> function retrieves an optional text description from an enhanced-format metafile and copies the
string to the specified buffer.
</summary>
<param name="hemf">A handle to the enhanced metafile.</param>
<param name="cchBuffer">The size, in characters, of the buffer to receive the data. Only this many characters will be copied.</param>
<param name="lpszDescription">A pointer to a buffer that receives the optional text description.</param>
<returns>
<para>If the optional text description exists and the buffer pointer is NULL, the return value is the length of the text string, in characters.</para>
<para>
If the optional text description exists and the buffer pointer is a valid pointer, the return value is the number of characters copied into
the buffer.
</para>
<para>If the optional text description does not exist, the return value is zero.</para>
<para>If the function fails, the return value is GDI_ERROR.</para>
</returns>
<remarks>
<para>
The optional text description contains two strings, the first identifying the application that created the enhanced metafile and the second
identifying the picture contained in the metafile. The strings are separated by a null character and terminated with two null charactersfor
example, "XYZ Graphics Editor\0Bald Eagle\0\0" where \0 represents the null character.
</para>
<para>
Where text arguments must use Unicode characters, use this function as a wide-character function. Where text arguments must use characters
from the Windows character set, use this function as an ANSI function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateEllipticRgnIndirect(Win32Interop.Structs.RECT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateEllipticRgnIndirect(Win32Interop.Structs.RECT@)"/> function creates an elliptical region.
</summary>
<param name="lprc">
Pointer to a <see cref="T:Win32Interop.Structs.RECT"/> structure that contains the coordinates of the upper-left and lower-right corners of the bounding rectangle of
the ellipse in logical units.
</param>
<returns>
<para>If the function succeeds, the return value is the handle to the region.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
When you no longer need the HRGN object, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>
A bounding rectangle defines the size, shape, and orientation of the region: The long sides of the rectangle define the length of the
ellipse's major axis; the short sides define the length of the ellipse's minor axis; and the center of the rectangle defines the intersection
of the major and minor axes.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.RemoveFontMemResourceEx(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.RemoveFontMemResourceEx(System.IntPtr)"/> function removes the fonts added from a memory image file.
</summary>
<param name="fh">
A handle to the font-resource. This handle is returned by the <see cref="M:Win32Interop.Methods.Gdi32.AddFontMemResourceEx(System.IntPtr,System.UInt32,System.IntPtr,System.UInt32@)"/> function.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero. No extended error information is available.</para>
</returns>
<remarks>
This function removes a font that was added by the <see cref="M:Win32Interop.Methods.Gdi32.AddFontMemResourceEx(System.IntPtr,System.UInt32,System.IntPtr,System.UInt32@)"/> function. To remove the font, specify the same path and
flags as were used in <see cref="M:Win32Interop.Methods.Gdi32.AddFontMemResourceEx(System.IntPtr,System.UInt32,System.IntPtr,System.UInt32@)"/>. This function will only remove the font that is specified by <paramref name="fh"/>.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetSystemPaletteEntries(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[]@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetSystemPaletteEntries(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[]@)"/> function retrieves a range of palette entries from the system palette that is associated with the
specified device context (DC).
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="iStartIndex">The first entry to be retrieved from the system palette.</param>
<param name="nEntries">The number of entries to be retrieved from the system palette.</param>
<param name="lppe">
A pointer to an array of <see cref="T:Win32Interop.Structs.PALETTEENTRY"/> structures to receive the palette entries. The array must contain at least as many
structures as specified by the <paramref name="nEntries"/> parameter. If this parameter is NULL, the function returns the total number of
entries in the palette.
</param>
<returns>
<para>If the function succeeds, the return value is the number of entries retrieved from the palette.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
An application can determine whether a device supports palette operations by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function and specifying the
RASTERCAPS constant.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateDiscardableBitmap(System.IntPtr,System.Int32,System.Int32)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateDiscardableBitmap(System.IntPtr,System.Int32,System.Int32)"/> function creates a discardable bitmap that is compatible with the specified device. The bitmap has
the same bits-per-pixel format and the same color palette as the device. An application can select this bitmap as the current bitmap for a
memory device that is compatible with the specified device.
</para>
<para>
This function is provided only for compatibility with 16-bit versions of Windows. Applications should use the
<see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/> function.
</para>
</summary>
<param name="hdc">A handle to a device context.</param>
<param name="nWidth">The width, in pixels, of the bitmap.</param>
<param name="nHeight">The height, in pixels, of the bitmap.</param>
<returns>
<para>If the function succeeds, the return value is a handle to the compatible bitmap (DDB).</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
When you no longer need the bitmap, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateDIBPatternBrushPt(System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBPatternBrushPt(System.IntPtr,System.UInt32)"/> function creates a logical brush that has the pattern specified by the device-independent bitmap
(DIB).
</summary>
<param name="lpPackedDIB">
A pointer to a packed DIB consisting of a <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure immediately followed by an array of bytes defining the pixels of
the bitmap.
</param>
<param name="iUsage">
<para>
Specifies whether the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure contains a valid color table and,
if so, whether the entries in this color table contain explicit red, green, blue (RGB) values or palette indexes. The
<paramref name="iUsage"/> parameter must be one of the following values.
</para>
<list type="table">
<item>
<term>DIB_PAL_COLORS</term>
<description>
A color table is provided and consists of an array of 16-bit indexes into the logical palette of the device context into which the
brush is to be selected.
</description>
</item>
<item>
<term>DIB_RGB_COLORS</term>
<description>A color table is provided and contains literal RGB values.</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value identifies a logical brush.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>A brush is a bitmap that the system uses to paint the interiors of filled shapes.</para>
<para>
After an application creates a brush by calling <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBPatternBrushPt(System.IntPtr,System.UInt32)"/>, it can select that brush into any device context by
calling the <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function.
</para>
<para>
When you no longer need the brush, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>
ICM: No color is done at brush creation. However, color management is performed when the brush is selected into an ICM-enabled device
context.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetOutlineTextMetrics(System.IntPtr,System.UInt32,Win32Interop.Structs.OUTLINETEXTMETRIC@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetOutlineTextMetrics(System.IntPtr,System.UInt32,Win32Interop.Structs.OUTLINETEXTMETRIC@)"/> function retrieves text metrics for TrueType fonts.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="cbData">The size, in bytes, of the array that receives the text metrics.</param>
<param name="lpOTM">
A pointer to an <see cref="T:Win32Interop.Structs.OUTLINETEXTMETRIC"/> structure. If this parameter is NULL, the function returns the size of the buffer required for
the retrieved metric data.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero or the size of the required buffer.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The <see cref="T:Win32Interop.Structs.OUTLINETEXTMETRIC"/> structure contains most of the text metric information provided for TrueType fonts (including a
<see cref="T:Win32Interop.Structs.TEXTMETRIC"/> structure). The sizes returned in <see cref="T:Win32Interop.Structs.OUTLINETEXTMETRIC"/> are in logical units; they depend on the current
mapping mode.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetNearestPaletteIndex(System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetNearestPaletteIndex(System.IntPtr,System.UInt32)"/> function retrieves the index for the entry in the specified logical palette most closely matching a
specified color value.
</summary>
<param name="hpal">A handle to a logical palette.</param>
<param name="crColor">
A color to be matched. To create a <see cref="T:Win32Interop.Structs.COLORREF"/> color value, use the RGB macro.
</param>
<returns>
<para>If the function succeeds, the return value is the index of an entry in a logical palette.</para>
<para>If the function fails, the return value is CLR_INVALID.</para>
</returns>
<remarks>
<para>
An application can determine whether a device supports palette operations by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function and specifying
the RASTERCAPS constant.
</para>
<para>If the given logical palette contains entries with the PC_EXPLICIT flag set, the return value is undefined.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> function retrieves information about a character string, such as character widths, caret
positioning, ordering within the string, and glyph rendering. The type of information returned depends on the <paramref name="dwFlags"/>
parameter and is based on the currently selected font in the specified display context. The function copies the information to the specified
<see cref="T:Win32Interop.Structs.GCP_RESULTS"/> structure or to one or more arrays specified by the structure.
</para>
<para>
Although this function was once adequate for working with character strings, a need to work with an increasing number of languages and
scripts has rendered it obsolete. It has been superseded by the functionality of the Uniscribe module. For more information, see Uniscribe.
</para>
<para>
It is recommended that an application use the <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> function to determine whether the GCP_DIACRITIC, GCP_DBCS,
GCP_USEKERNING, GCP_LIGATE, GCP_REORDER, GCP_GLYPHSHAPE, and GCP_KASHIDA values are valid for the currently selected font. If not valid,
<see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> ignores the value.
</para>
<para>The GCP_NODIACRITICS value is no longer defined and should not be used.</para>
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpString">
A pointer to the character string to process. The string does not need to be zero-terminated, since <paramref name="nCount"/> specifies the
length of the string.
</param>
<param name="nCount">
The length of the string pointed to by <paramref name="lpString"/>.
</param>
<param name="nMaxExtent">
The maximum extent (in logical units) to which the string is processed. Characters that, if processed, would exceed this extent are ignored.
Computations for any required ordering or glyph arrays apply only to the included characters. This parameter is used only if the GCP_MAXEXTENT
value is specified in the <paramref name="dwFlags"/> parameter. As the function processes the input string, each character and its extent is
added to the output, extent, and other arrays only if the total extent has not yet exceeded the maximum. Once the limit is reached, processing
will stop.
</param>
<param name="lpResults">
A pointer to a <see cref="T:Win32Interop.Structs.GCP_RESULTS"/> structure that receives the results of the function.
</param>
<param name="dwFlags">
<para>Specifies how to process the string into the required arrays. This parameter can be one or more of the following values.</para>
<list type="table">
<item>
<term>GCP_CLASSIN</term>
<description>
Specifies that the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpClass"/> array contains preset classifications for characters. The classifications may
be the same as on output. If the particular classification for a character is not known, the corresponding location in the array must
be set to zero. for more information about the classifications, see GCP_RESULTS. This is useful only if
<see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> returned the GCP_REORDER flag.
</description>
</item>
<item>
<term>GCP_DIACRITIC</term>
<description>
<para>
Determines how diacritics in the string are handled. If this value is not set, diacritics are treated as zero-width characters.
For example, a Hebrew string may contain diacritics, but you may not want to display them.
</para>
<para>
Use <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> to determine whether a font supports diacritics. If it does, you can use or not use the
GCP_DIACRITIC flag in the call to <see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/>, depending on the needs of your application.
</para>
</description>
</item>
<item>
<term>GCP_DISPLAYZWG</term>
<description>
For languages that need reordering or different glyph shapes depending on the positions of the characters within a word,
nondisplayable characters often appear in the code page. For example, in the Hebrew code page, there are Left-To-Right and
Right-To-Left markers, to help determine the final positioning of characters within the output strings. Normally these are not
displayed and are removed from the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpGlyphs"/> and <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpDX"/> arrays. You can use the
GCP_DISPLAYZWG flag to display these characters.
</description>
</item>
<item>
<term>GCP_GLYPHSHAPE</term>
<description>
Specifies that some or all characters in the string are to be displayed using shapes other than the standard shapes defined in the
currently selected font for the current code page. Some languages, such as Arabic, cannot support glyph creation unless this value is
specified. As a general rule, if <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> returns this value for a string, this value must be used with
<see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/>.
</description>
</item>
<item>
<term>GCP_JUSTIFY</term>
<description>
Adjusts the extents in the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpDX"/> array so that the string length is the same as
<paramref name="nMaxExtent"/>. GCP_JUSTIFY may only be used in conjunction with GCP_MAXEXTENT.
</description>
</item>
<item>
<term>GCP_KASHIDA</term>
<description>
<para>
Use Kashidas as well as, or instead of, adjusted extents to modify the length of the string so that it is equal to the value
specified by <paramref name="nMaxExtent"/>. In the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpDX"/> array, a Kashida is indicated by a negative
justification index. GCP_KASHIDA may be used only in conjunction with GCP_JUSTIFY and only if the font (and language) support
Kashidas. Use <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> to determine whether the current font supports Kashidas.
</para>
<para>
Using Kashidas to justify the string can result in the number of glyphs required being greater than the number of characters in
the input string. Because of this, when Kashidas are used, the application cannot assume that setting the arrays to be the size
of the input string will be sufficient. (The maximum possible will be approximately dxPageWidth/dxAveCharWidth, where dxPageWidth
is the width of the document and dxAveCharWidth is the average character width as returned from a <see cref="M:Win32Interop.Methods.Gdi32.GetTextMetrics(System.IntPtr,Win32Interop.Structs.TEXTMETRIC@)"/>
call).
</para>
<para>
Note that just because <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> returns the GCP_KASHIDA flag does not mean that it has to be used in
the call to <see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/>, just that the option is available.
</para>
</description>
</item>
<item>
<term>GCP_LIGATE</term>
<description>
<para>
Use ligations wherever characters ligate. A ligation occurs where one glyph is used for two or more characters. For example, the
letters a and e can ligate to ?. For this to be used, however, both the language support and the font must support the required
glyphs (the example will not be processed by default in English).
</para>
<para>
Use <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> to determine whether the current font supports ligation. If it does and a specific maximum
is required for the number of characters that will ligate, set the number in the first element of the
<see cref="F:Win32Interop.Structs.GCP_RESULTS.lpGlyphs"/>
array. If normal ligation is required, set this value to zero. If GCP_LIGATE is not specified, no ligation will take place. See
GCP_RESULTS for more information.
</para>
<para>
If the GCP_REORDER value is usually required for the character set but is not specified, the output will be meaningless unless
the string being passed in is already in visual ordering (that is, the result that gets put into lpGcpResults-&gt;lpOutString in one
call to <see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> is the input string of a second call).
</para>
<para>
Note that just because <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> returns the GCP_LIGATE flag does not mean that it has to be used in the
call to <see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/>, just that the option is available.
</para>
</description>
</item>
<item>
<term>GCP_MAXEXTENT</term>
<description>
Compute extents of the string only as long as the resulting extent, in logical units, does not exceed the values specified by the
<paramref name="nMaxExtent"/> parameter.
</description>
</item>
<item>
<term>GCP_NEUTRALOVERRIDE</term>
<description>
Certain languages only. Override the normal handling of neutrals and treat them as strong characters that match the strings reading
order. Useful only with the GCP_REORDER flag.
</description>
</item>
<item>
<term>GCP_NUMERICOVERRIDE</term>
<description>
Certain languages only. Override the normal handling of numerics and treat them as strong characters that match the strings reading
order. Useful only with the GCP_REORDER flag.
</description>
</item>
<item>
<term>GCP_NUMERICSLATIN</term>
<description>
Arabic/Thai only. Use standard Latin glyphs for numbers and override the system default. To determine if this option is available in
the language of the font, use GetStringTypeEx to see if the language supports more than one number format.
</description>
</item>
<item>
<term>GCP_NUMERICSLOCAL</term>
<description>
Arabic/Thai only. Use local glyphs for numeric characters and override the system default. To determine if this option is available
in the language of the font, use GetStringTypeEx to see if the language supports more than one number format.
</description>
</item>
<item>
<term>GCP_REORDER</term>
<description>
<para>
Reorder the string. Use for languages that are not SBCS and left-to-right reading order. If this value is not specified, the
string is assumed to be in display order already.
</para>
<para>
If this flag is set for Semitic languages and the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpClass"/> array is used, the first two elements of the
array are used to specify the reading order beyond the bounds of the string. GCP_CLASS_PREBOUNDRTL and GCP_CLASS_PREBOUNDLTR can
be used to set the order. If no preset order is required, set the values to zero. These values can be combined with other values
if the GCPCLASSIN flag is set.
</para>
<para>
If the GCP_REORDER value is not specified, the <paramref name="lpString"/> parameter is taken to be visual ordered for languages
where this is used, and the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpOutString"/> and <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpOrder"/> fields are ignored.
</para>
<para>
Use <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> to determine whether the current font supports reordering.
</para>
</description>
</item>
<item>
<term>GCP_SYMSWAPOFF</term>
<description>
Semitic languages only. Specifies that swappable characters are not reset. For example, in a right-to-left string, the '('
and ')' are not reversed.
</description>
</item>
<item>
<term>GCP_USEKERNING</term>
<description>
<para>
Use kerning pairs in the font (if any) when creating the widths arrays. Use <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> to determine
whether the current font supports kerning pairs.
</para>
<para>
Note that just because <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> returns the GCP_USEKERNING flag does not mean that it has to be used in
the call to <see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/>, just that the option is available. Most TrueType fonts have a kerning table,
but you do not have to use it.
</para>
</description>
</item>
</list>
<para>
It is recommended that an application use the <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> function to determine whether the GCP_DIACRITIC, GCP_DBCS,
GCP_USEKERNING, GCP_LIGATE, GCP_REORDER, GCP_GLYPHSHAPE, and GCP_KASHIDA values are valid for the currently selected font. If not valid,
<see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> ignores the value.
</para>
<para>The GCP_NODIACRITICS value is no longer defined and should not be used.</para>
</param>
<returns>
<para>
If the function succeeds, the return value is the width and height of the string in logical units. The width is the low-order word and the
height is the high-order word.
</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> ensures that an application can correctly process text regardless of the international setting and type
of fonts available. Applications use this function before using the <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> function and in place of the
<see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint32(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> function (and occasionally in place of the <see cref="M:Win32Interop.Methods.Gdi32.GetCharWidth32(System.IntPtr,System.UInt32,System.UInt32,System.Int32[]@)"/> and
<see cref="M:Win32Interop.Methods.Gdi32.GetCharABCWidths(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.ABC@)"/> functions).
</para>
<para>
Using <see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> to retrieve intercharacter spacing and index arrays is not always necessary unless justification
or kerning is required. For non-Latin fonts, applications can improve the speed at which the <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> function renders text
by using <see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> to retrieve the intercharacter spacing and index arrays before calling
<see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/>. This is especially useful when rendering the same text repeatedly or when using intercharacter spacing to position
the caret. If the<see cref="F:Win32Interop.Structs.GCP_RESULTS.lpGlyphs"/> output array is used in the call to <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/>, the ETO_GLYPH_INDEX flag
must be set.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> checks the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpOrder"/>, <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpDX"/>,
<see cref="F:Win32Interop.Structs.GCP_RESULTS.lpCaretPos"/>, <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpOutString"/>, and <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpGlyphs"/> members of the
<see cref="T:Win32Interop.Structs.GCP_RESULTS"/> structure and fills the corresponding arrays if these members are not set to NULL. If
<see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> cannot fill an array, it sets the corresponding member to NULL. To ensure retrieval of valid
information, the application is responsible for setting the member to a valid address before calling the function and for checking the value
of the member after the call. If the GCP_JUSTIFY or GCP_USEKERNING values are specified, the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpDX"/> and/or
<see cref="F:Win32Interop.Structs.GCP_RESULTS.lpCaretPos"/> members must have valid addresses.
</para>
<para>
Note that the glyph indexes returned in GCP_RESULTS.lpGlyphs are specific to the current font in the device context and should only be used
to draw text in the device context while that font remains selected.
</para>
<para>
When computing justification, if the trailing characters in the string are spaces, the function reduces the length of the string and removes
the spaces prior to computing the justification. If the array consists of only spaces, the function returns an error.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> expects an <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpDX"/> entry for each byte of a DBCS string, whereas
<see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/>
assigns an <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpDX"/> entry for each glyph. To correct this mismatch when using this combination of functions, either
use <see cref="M:Win32Interop.Methods.Gdi32.GetGlyphIndices(System.IntPtr,System.String,System.Int32,System.UInt16[]@,System.UInt32)"/> or expand the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpDX"/> array with zero-width entries for the corresponding second
byte of a DBCS byte pair.
</para>
<para>
If the logical width is less than the width of the leading character in the input string, GCP_RESULTS.nMaxFit returns a bad value. For this
case, call <see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> for glyph indexes and the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpDX"/> array. Then use the
<see cref="F:Win32Interop.Structs.GCP_RESULTS.lpDX"/> array to do the extent calculation using the advance width of each character, where
<see cref="F:Win32Interop.Structs.GCP_RESULTS.nMaxFit"/> is the number of characters whose glyph indexes advance width is less than the width of the leading
character.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetCharABCWidthsFloat(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.ABCFloat[])">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetCharABCWidthsFloat(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.ABCFloat[])"/> function retrieves the widths, in logical units, of consecutive characters in a specified range from the
current font.
</summary>
<param name="hdc">Handle to the device context.</param>
<param name="iFirstChar">Specifies the code point of the first character in the group of consecutive characters where the ABC widths are sought.</param>
<param name="iLastChar">
Specifies the code point of the last character in the group of consecutive characters where the ABC widths are sought. This range is inclusive.
An error is returned if the specified last character precedes the specified first character.
</param>
<param name="lpABCF">
Pointer to an array of <see cref="T:Win32Interop.Structs.ABCFLOAT"/> structures that receives the character widths, in logical units.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
Unlike the <see cref="M:Win32Interop.Methods.Gdi32.GetCharABCWidths(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.ABC@)"/> function that returns widths only for TrueType fonts, the <see cref="M:Win32Interop.Methods.Gdi32.GetCharABCWidthsFloat(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.ABCFloat[])"/>
function retrieves widths for any font. The widths returned by this function are in the IEEE floating-point format.
</para>
<para>
If the current world-to-device transformation is not identified, the returned widths may be non-integer values, even if the corresponding
values in the device space are integers.
</para>
<para>
A spacing is the distance added to the current position before placing the glyph. B spacing is the width of the black part of the glyph. C
spacing is the distance added to the current position to provide white space to the right of the glyph. The total advanced width is specified
by A+B+C.
</para>
<para>The ABC spaces are measured along the character base line of the selected font.</para>
<para>The ABC widths of the default character are used for characters outside the range of the currently selected font.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetAspectRatioFilterEx(System.IntPtr,Win32Interop.Structs.SIZE@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetAspectRatioFilterEx(System.IntPtr,Win32Interop.Structs.SIZE@)"/> function retrieves the setting for the current aspect-ratio filter.
</summary>
<param name="hdc">Handle to a device context.</param>
<param name="lpAspectRatio">
Pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure that receives the current aspect-ratio filter.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>The aspect ratio is the ratio formed by the width and height of a pixel on a specified device.</para>
<para>
The system provides a special filter, the aspect-ratio filter, to select fonts that were designed for a particular device. An application can
specify that the system should only retrieve fonts matching the specified aspect ratio by calling the <see cref="M:Win32Interop.Methods.Gdi32.SetMapperFlags(System.IntPtr,System.UInt32)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/> function creates a bitmap compatible with the device that is associated with the specified device
context.
</summary>
<param name="hdc">A handle to a device context.</param>
<param name="nWidth">The bitmap width, in pixels.</param>
<param name="nHeight">The bitmap height, in pixels.</param>
<returns>
<para>If the function succeeds, the return value is a handle to the compatible bitmap (DDB).</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
The color format of the bitmap created by the <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/> function matches the color format of the device
identified by the <paramref name="hdc"/> parameter. This bitmap can be selected into any memory device context that is compatible with the
original device.
</para>
<para>
Because memory device contexts allow both color and monochrome bitmaps, the format of the bitmap returned by the
<see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/> function differs when the specified device context is a memory device context. However, a compatible
bitmap that was created for a nonmemory device context always possesses the same color format and uses the same color palette as the
specified device context.
</para>
<para>
Note: When a memory device context is created, it initially has a 1-by-1 monochrome bitmap selected into it. If this memory device context is
used in <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/>, the bitmap that is created is a monochrome bitmap. To create a color bitmap, use the HDC that
was used to create the memory device context, as shown in the following code:
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetTextCharacterExtra(System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetTextCharacterExtra(System.IntPtr,System.Int32)"/> function sets the intercharacter spacing. Intercharacter spacing is added to each character, including
break characters, when the system writes a line of text.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nCharExtra">
The amount of extra space, in logical units, to be added to each character. If the current mapping mode is not MM_TEXT, the
<paramref name="nCharExtra"/> parameter is transformed and rounded to the nearest pixel.
</param>
<returns>
<para>If the function succeeds, the return value is the previous intercharacter spacing.</para>
<para>If the function fails, the return value is 0x80000000.</para>
</returns>
<remarks>
<para>
This function is supported mainly for compatibility with existing applications. New applications should generally avoid calling this
function, because it is incompatible with complex scripts (scripts that require text shaping; Arabic script is an example of this).
</para>
<para>
The recommended approach is that instead of calling this function and then <see cref="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)"/>, applications should call
<see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> and use its lpDx parameter to supply widths.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.RemoveFontResourceEx(System.String,System.UInt32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.RemoveFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function removes the fonts in the specified file from the system font table.
</summary>
<param name="lpFileName">A pointer to a null-terminated string that names a font resource file.</param>
<param name="fl">
The characteristics of the font to be removed from the system. In order for the font to be removed, the flags used must be the same as when the
font was added with the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function. See the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function for more information.
</param>
<param name="pdv">Reserved. Must be zero.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero. No extended error information is available.</para>
</returns>
<remarks>
This function will only remove the font if the flags specified are the same as when then font was added with the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResourceEx(System.String,System.UInt32,System.IntPtr)"/>
function.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFileRecord(System.IntPtr,Win32Interop.Structs.HANDLETABLE[],Win32Interop.Structs.ENHMETARECORD@,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFileRecord(System.IntPtr,Win32Interop.Structs.HANDLETABLE[],Win32Interop.Structs.ENHMETARECORD@,System.UInt32)"/> function plays an enhanced-metafile record by executing the graphics device interface (GDI) functions
identified by the record.
</summary>
<param name="hdc">
A handle to the device context passed to the <see cref="M:Win32Interop.Methods.Gdi32.EnumEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnhMetaFileProc,System.IntPtr,Win32Interop.Structs.RECT@)"/> function.
</param>
<param name="lpHandletable">
A pointer to a table of handles to GDI objects used when playing the metafile. The first entry in this table contains the
enhanced-metafile handle.
</param>
<param name="lpEnhMetaRecord">A pointer to the enhanced-metafile record to be played.</param>
<param name="nHandles">The number of handles in the handle table.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>This is an enhanced-metafile function.</para>
<para>
An application typically uses <see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFileRecord(System.IntPtr,Win32Interop.Structs.HANDLETABLE[],Win32Interop.Structs.ENHMETARECORD@,System.UInt32)"/> in conjunction with the <see cref="M:Win32Interop.Methods.Gdi32.EnumEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnhMetaFileProc,System.IntPtr,Win32Interop.Structs.RECT@)"/> function to process
and play an enhanced-format metafile one record at a time.
</para>
<para>
The <paramref name="hdc"/>, <paramref name="lpHandletable"/>, and <paramref name="nHandles"/> parameters must be exactly those passed to
the <see cref="T:Win32Interop.Methods.EnhMetaFileProc"/> callback procedure by the <see cref="M:Win32Interop.Methods.Gdi32.EnumEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnhMetaFileProc,System.IntPtr,Win32Interop.Structs.RECT@)"/> function.
</para>
<para>
If <see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFileRecord(System.IntPtr,Win32Interop.Structs.HANDLETABLE[],Win32Interop.Structs.ENHMETARECORD@,System.UInt32)"/> does not recognize a record, it ignores the record and returns TRUE.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint32(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint32(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> function computes the width and height of the specified string of text.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpString">
A pointer to a buffer that specifies the text string. The string does not need to be null-terminated, because the <paramref name="c"/> parameter
specifies the length of the string.
</param>
<param name="c">
The length of the string pointed to by <paramref name="lpString"/>.
</param>
<param name="lpSize">
A pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure that receives the dimensions of the string, in logical units.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint32(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> function uses the currently selected font to compute the dimensions of the string. The width and
height, in logical units, are computed without considering any clipping.
</para>
<para>Because some devices kern characters, the sum of the extents of the characters in a string may not be equal to the extent of the string.</para>
<para>
The calculated string width takes into account the intercharacter spacing set by the <see cref="M:Win32Interop.Methods.Gdi32.SetTextCharacterExtra(System.IntPtr,System.Int32)"/> function and the
justification set by <see cref="M:Win32Interop.Methods.Gdi32.SetTextJustification(System.IntPtr,System.Int32,System.Int32)"/>. This is true for both displaying on a screen and for printing. However, if lpDx is
set in <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/>, <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint32(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> does not take into account either intercharacter spacing or
justification. In addition, for EMF, the print result always takes both intercharacter spacing and justification into account.
</para>
<para>
When dealing with text displayed on a screen, the calculated string width takes into account the intercharacter spacing set by the
<see cref="M:Win32Interop.Methods.Gdi32.SetTextCharacterExtra(System.IntPtr,System.Int32)"/> function and the justification set by <see cref="M:Win32Interop.Methods.Gdi32.SetTextJustification(System.IntPtr,System.Int32,System.Int32)"/>. However, if lpDx is set in
<see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/>, <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint32(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> does not take into account either intercharacter spacing or justification.
However, when printing with EMF:
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetTextExtentExPoint(System.IntPtr,System.String,System.Int32,System.Int32,System.IntPtr,System.IntPtr,Win32Interop.Structs.SIZE@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentExPoint(System.IntPtr,System.String,System.Int32,System.Int32,System.IntPtr,System.IntPtr,Win32Interop.Structs.SIZE@)"/> function retrieves the number of characters in a specified string that will fit within a specified space
and fills an array with the text extent for each of those characters. (A text extent is the distance between the beginning of the space and a
character that will fit in the space.) This information is useful for word-wrapping calculations.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpszStr">A pointer to the null-terminated string for which extents are to be retrieved.</param>
<param name="cchString">
The number of characters in the string pointed to by the <paramref name="lpszStr"/> parameter. For an ANSI call it specifies the string length
in bytes and for a Unicode it specifies the string length in WORDs. Note that for the ANSI function, characters in SBCS code pages take one byte
each, while most characters in DBCS code pages take two bytes; for the Unicode function, most currently defined Unicode characters (those in the
Basic Multilingual Plane (BMP)) are one WORD while Unicode surrogates are two WORDs.
</param>
<param name="nMaxExtent">The maximum allowable width, in logical units, of the formatted string.</param>
<param name="lpnFit">
A pointer to an integer that receives a count of the maximum number of characters that will fit in the space specified by the
<paramref name="nMaxExtent"/> parameter. When the <paramref name="lpnFit"/> parameter is NULL, the <paramref name="nMaxExtent"/> parameter is
ignored.
</param>
<param name="alpDx">
<para>
A pointer to an array of integers that receives partial string extents. Each element in the array gives the distance, in logical units,
between the beginning of the string and one of the characters that fits in the space specified by the <paramref name="nMaxExtent"/>
parameter. This array must have at least as many elements as characters specified by the <paramref name="cchString"/> parameter because the
entire array is used internally. The function fills the array with valid extents for as many characters as are specified by the
<paramref name="lpnFit"/> parameter. Any values in the rest of the array should be ignored. If <paramref name="alpDx"/> is NULL, the
function does not compute partial string widths.
</para>
<para>
For complex scripts, where a sequence of characters may be represented by any number of glyphs, the values in the <paramref name="alpDx"/>
array up to the number specified by the <paramref name="lpnFit"/> parameter match one-to-one with code points. Again, you should ignore the
rest of the values in the <paramref name="alpDx"/> array.
</para>
</param>
<param name="lpSize">
A pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure that receives the dimensions of the string, in logical units. This parameter cannot be NULL.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
If both the <paramref name="lpnFit"/> and <paramref name="alpDx"/> parameters are NULL, calling the <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentExPoint(System.IntPtr,System.String,System.Int32,System.Int32,System.IntPtr,System.IntPtr,Win32Interop.Structs.SIZE@)"/>
function is equivalent to calling the <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> function.
</para>
<para>
For the ANSI version of <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentExPoint(System.IntPtr,System.String,System.Int32,System.Int32,System.IntPtr,System.IntPtr,Win32Interop.Structs.SIZE@)"/>, the <paramref name="alpDx"/> array has the same number of INT values as there
are bytes in <paramref name="lpszStr"/>. The INT values that correspond to the two bytes of a DBCS character are each the extent of the
entire composite character.
</para>
<para>
Note, the <paramref name="alpDx"/> values for <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentExPoint(System.IntPtr,System.String,System.Int32,System.Int32,System.IntPtr,System.IntPtr,Win32Interop.Structs.SIZE@)"/> are not the same as the lpDx values for
<see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/>. To use the <paramref name="alpDx"/> values in <paramref name="alpDx"/>, you must first process them.
</para>
<para>
When this function returns the text extent, it assumes that the text is horizontal, that is, that the escapement is always 0. This is true
for both the horizontal and vertical measurements of the text. Even if you use a font that specifies a nonzero escapement, this function
doesn't use the angle while it computes the text extent. The app must convert it explicitly. However, when the graphics mode is set to
GM_ADVANCED and the character orientation is 90 degrees from the print orientation, the values that this function return do not follow this
rule. When the character orientation and the print orientation match for a given string, this function returns the dimensions of the string
in the <see cref="T:Win32Interop.Structs.SIZE"/> structure as { cx : 116, cy : 18 }. When the character orientation and the print orientation are 90 degrees apart
for the same string, this function returns the dimensions of the string in the <see cref="T:Win32Interop.Structs.SIZE"/> structure as { cx : 18, cy : 116 }.
</para>
<para>
This function returns the extent of each successive character in a string. When these are rounded to logical units, you get different results
than what is returned from the <see cref="M:Win32Interop.Methods.Gdi32.GetCharWidth(System.IntPtr,System.UInt32,System.UInt32,System.Int32[]@)"/>, which returns the width of each individual character rounded to logical units.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetTextExtentExPointI(System.IntPtr,System.UInt16[],System.Int32,System.Int32,System.IntPtr,System.IntPtr,Win32Interop.Structs.SIZE@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentExPointI(System.IntPtr,System.UInt16[],System.Int32,System.Int32,System.IntPtr,System.IntPtr,Win32Interop.Structs.SIZE@)"/> function retrieves the number of characters in a specified string that will fit within a specified space
and fills an array with the text extent for each of those characters. (A text extent is the distance between the beginning of the space and a
character that will fit in the space.) This information is useful for word-wrapping calculations.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="pgiIn">A pointer to an array of glyph indices for which extents are to be retrieved.</param>
<param name="cgi">
The number of glyphs in the array pointed to by the <paramref name="pgiIn"/> parameter.
</param>
<param name="nMaxExtent">The maximum allowable width, in logical units, of the formatted string.</param>
<param name="lpnFit">
A pointer to an integer that receives a count of the maximum number of characters that will fit in the space specified by the
<paramref name="nMaxExtent"/> parameter. When the <paramref name="lpnFit"/> parameter is NULL, the <paramref name="nMaxExtent"/> parameter is
ignored.
</param>
<param name="alpDx">
A pointer to an array of integers that receives partial glyph extents. Each element in the array gives the distance, in logical units, between
the beginning of the glyph indices array and one of the glyphs that fits in the space specified by the <paramref name="nMaxExtent"/> parameter.
Although this array should have at least as many elements as glyph indices specified by the <paramref name="cgi"/> parameter, the function fills
the array with extents only for as many glyph indices as are specified by the <paramref name="lpnFit"/> parameter. If <paramref name="lpnFit"/>
is NULL, the function does not compute partial string widths.
</param>
<param name="lpSize">
A pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure that receives the dimensions of the glyph indices array, in logical units. This value cannot be
NULL.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
If both the <paramref name="lpnFit"/> and <paramref name="alpDx"/> parameters are NULL, calling the <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentExPointI(System.IntPtr,System.UInt16[],System.Int32,System.Int32,System.IntPtr,System.IntPtr,Win32Interop.Structs.SIZE@)"/>
function is equivalent to calling the <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPointI(System.IntPtr,System.UInt16[],System.Int32,Win32Interop.Structs.SIZE@)"/> function.
</para>
<para>
When this function returns the text extent, it assumes that the text is horizontal, that is, that the escapement is always 0. This is true
for both the horizontal and vertical measurements of the text. Even if you use a font that specifies a nonzero escapement, this function
doesn't use the angle while it computes the text extent. The app must convert it explicitly. However, when the graphics mode is set to
GM_ADVANCED and the character orientation is 90 degrees from the print orientation, the values that this function return do not follow this
rule. When the character orientation and the print orientation match for a given string, this function returns the dimensions of the string
in the <see cref="T:Win32Interop.Structs.SIZE"/> structure as { cx : 116, cy : 18 }. When the character orientation and the print orientation are 90 degrees apart
for the same string, this function returns the dimensions of the string in the <see cref="T:Win32Interop.Structs.SIZE"/> structure as { cx : 18, cy : 116 }.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetTextCharacterExtra(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextCharacterExtra(System.IntPtr)"/> function retrieves the current intercharacter spacing for the specified device context.
</summary>
<param name="hdc">Handle to the device context.</param>
<returns>
<para>If the function succeeds, the return value is the current intercharacter spacing, in logical coordinates.</para>
<para>If the function fails, the return value is 0x8000000.</para>
</returns>
<remarks>
The intercharacter spacing defines the extra space, in logical units along the base line, that the <see cref="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)"/> or
<see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> functions add to each character as a line is written. The spacing is used to expand lines of text.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateRectRgnIndirect(Win32Interop.Structs.RECT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateRectRgnIndirect(Win32Interop.Structs.RECT@)"/> function creates a rectangular region.
</summary>
<param name="lprc">
Pointer to a <see cref="T:Win32Interop.Structs.RECT"/> structure that contains the coordinates of the upper-left and lower-right corners of the rectangle that defines
the region in logical units.
</param>
<returns>
<para>If the function succeeds, the return value is the handle to the region.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
When you no longer need the HRGN object, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>Region coordinates are represented as 27-bit signed integers.</para>
<para>The region will be exclusive of the bottom and right edges.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateHalftonePalette(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateHalftonePalette(System.IntPtr)"/> function creates a halftone palette for the specified device context (DC).
</summary>
<param name="hdc">A handle to the device context.</param>
<returns>
<para>If the function succeeds, the return value is a handle to a logical halftone palette.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
An application should create a halftone palette when the stretching mode of a device context is set to HALFTONE. The logical halftone palette
returned by <see cref="M:Win32Interop.Methods.Gdi32.CreateHalftonePalette(System.IntPtr)"/> should then be selected and realized into the device context before the
<see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> or <see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/> function is called.
</para>
<para>
When you no longer need the palette, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateFontIndirectEx(Win32Interop.Structs.ENUMLOGFONTEXDV@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirectEx(Win32Interop.Structs.ENUMLOGFONTEXDV@)"/> function specifies a logical font that has the characteristics in the specified structure. The font can
subsequently be selected as the current font for any device context.
</summary>
<param name="penumlfex">
<para>
Pointer to an <see cref="T:Win32Interop.Structs.ENUMLOGFONTEXDV"/> structure that defines the characteristics of a multiple master font.
</para>
<para>
Note, this function ignores the <see cref="F:Win32Interop.Structs.ENUMLOGFONTEXDV.elfDesignVector"/> member in <see cref="T:Win32Interop.Structs.ENUMLOGFONTEXDV"/>.
</para>
</param>
<returns>
<para>
If the function succeeds, the return value is the handle to the new <see cref="T:Win32Interop.Structs.ENUMLOGFONTEXDV"/> structure.
</para>
<para>If the function fails, the return value is zero. No extended error information is available.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirectEx(Win32Interop.Structs.ENUMLOGFONTEXDV@)"/> function creates a logical font with the characteristics specified in the
<see cref="T:Win32Interop.Structs.ENUMLOGFONTEXDV"/> structure. When this font is selected by using the <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function, GDI's font mapper
attempts to match the logical font with an existing physical font. If it fails to find an exact match, it provides an alternative whose
characteristics match as many of the requested characteristics as possible.
</para>
<para>
When you no longer need the font, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>
The font mapper for <see cref="M:Win32Interop.Methods.Gdi32.CreateFont(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.String)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirect(Win32Interop.Structs.LOGFONT@)"/>, and <see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirectEx(Win32Interop.Structs.ENUMLOGFONTEXDV@)"/> recognizes both the
English and the localized typeface name, regardless of locale.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateDIBPatternBrush(System.IntPtr,System.UInt32)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBPatternBrush(System.IntPtr,System.UInt32)"/> function creates a logical brush that has the pattern specified by the specified device-independent
bitmap (DIB). The brush can subsequently be selected into any device context that is associated with a device that supports raster
operations.
</para>
<para></para>
<para>
This function is provided only for compatibility with 16-bit versions of Windows. Applications should use the
<see cref="M:Win32Interop.Methods.Gdi32.CreateDIBPatternBrushPt(System.IntPtr,System.UInt32)"/> function.
</para>
</summary>
<param name="hglbDIBPacked">
A handle to a global memory object containing a packed DIB, which consists of a <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure immediately followed by an
array of bytes defining the pixels of the bitmap.
</param>
<param name="fuColorSpec">
<para>
Specifies whether the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure is initialized and, if so,
whether this member contains explicit red, green, blue (RGB) values or indexes into a logical palette. The <paramref name="fuColorSpec"/>
parameter must be one of the following values.
</para>
<list type="table">
<item>
<term>DIB_PAL_COLORS</term>
<description>
A color table is provided and consists of an array of 16-bit indexes into the logical palette of the device context into which the
brush is to be selected.
</description>
</item>
<item>
<term>DIB_RGB_COLORS</term>
<description>A color table is provided and contains literal RGB values.</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value identifies a logical brush.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
When an application selects a two-color DIB pattern brush into a monochrome device context, the system does not acknowledge the colors
specified in the DIB; instead, it displays the pattern brush using the current background and foreground colors of the device context. Pixels
mapped to the first color of the DIB (offset 0 in the DIB color table) are displayed using the foreground color; pixels mapped to the second
color (offset 1 in the color table) are displayed using the background color.
</para>
<para>
When you no longer need the brush, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>
ICM: No color is done at brush creation. However, color management is performed when the brush is selected into an ICM-enabled device
context.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.TranslateCharsetInfo(System.UInt32@,Win32Interop.Structs.CHARSETINFO@,System.UInt32)">
<summary>Translates character set information and sets all members of a destination structure to appropriate values.</summary>
<param name="lpSrc">
Pointer to the <see cref="F:Win32Interop.Structs.FONTSIGNATURE.fsCsb"/> member of a <see cref="T:Win32Interop.Structs.FONTSIGNATURE"/> structure if <paramref name="dwFlags"/> is set to
TCI_SRCFONTSIG. Otherwise, this parameter is set to a DWORD value indicating the source.
</param>
<param name="lpCs">
Pointer to a <see cref="T:Win32Interop.Structs.CHARSETINFO"/> structure that receives the translated character set information.
</param>
<param name="dwFlags">
<para>Flags specifying how to perform the translation. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>TCI_SRCCHARSET</term>
<description>Source contains the character set value in the low word, and 0 in the high word.</description>
</item>
<item>
<term>TCI_SRCCODEPAGE</term>
<description>Source is a code page identifier in the low word and 0 in the high word.</description>
</item>
<item>
<term>TCI_SRCFONTSIG</term>
<description>
<para>
Source is the code page bitfield portion of a <see cref="T:Win32Interop.Structs.FONTSIGNATURE"/> structure. On input this should have only one Windows
code-page bit set, either for an ANSI code page value or for a common ANSI and OEM value (for OEM values, bits 32-63 must be
clear). On output, this has only one bit set.
</para>
<para>
If the TCI_SRCFONTSIG value is given, the <paramref name="lpSrc"/> parameter must be the address of the code-page bitfield. If
any other TCI_ value is given, the <paramref name="lpSrc"/> parameter must be a value not an address.
</para>
</description>
</item>
<item>
<term>TCI_SRCLOCALE</term>
<description>
Windows 2000: Source is the locale identifier (LCID) or language identifier of the keyboard layout. If it is a language identifier,
the value is in the low word.
</description>
</item>
</list>
</param>
<returns>Returns a nonzero value if successful, or 0 otherwise. To get extended error information, the application can call GetLastError.</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetTextJustification(System.IntPtr,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetTextJustification(System.IntPtr,System.Int32,System.Int32)"/> function specifies the amount of space the system should add to the break characters in a string of text.
The space is added when an application calls the <see cref="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)"/> or <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> functions.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nBreakExtra">
The total extra space, in logical units, to be added to the line of text. If the current mapping mode is not MM_TEXT, the value identified by the
<paramref name="nBreakExtra"/> parameter is transformed and rounded to the nearest pixel.
</param>
<param name="nBreakCount">The number of break characters in the line.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The break character is usually the space character (ASCII 32), but it may be defined by a font as some other character. The
<see cref="M:Win32Interop.Methods.Gdi32.GetTextMetrics(System.IntPtr,Win32Interop.Structs.TEXTMETRIC@)"/> function can be used to retrieve a font's break character.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)"/> function distributes the specified extra space evenly among the break characters in the line.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint32(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> function is always used with the <see cref="M:Win32Interop.Methods.Gdi32.SetTextJustification(System.IntPtr,System.Int32,System.Int32)"/> function. Sometimes the
<see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint32(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> function takes justification into account when computing the width of a specified line before
justification, and sometimes it does not. For more details on this, see <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint32(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/>. This width must be known before
an appropriate <paramref name="nBreakExtra"/> value can be computed.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.SetTextJustification(System.IntPtr,System.Int32,System.Int32)"/> can be used to justify a line that contains multiple strings in different fonts. In this case, each
string must be justified separately.
</para>
<para>
Because rounding errors can occur during justification, the system keeps a running error term that defines the current error value. When
justifying a line that contains multiple runs, <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> automatically uses this error term when it computes the
extent of the next run, allowing <see cref="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)"/> to blend the error into the new run. After each line has been justified, this error
term must be cleared to prevent it from being incorporated into the next line. The term can be cleared by calling
<see cref="M:Win32Interop.Methods.Gdi32.SetTextJustification(System.IntPtr,System.Int32,System.Int32)"/> with <paramref name="nBreakExtra"/> set to zero.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetBitmapDimensionEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetBitmapDimensionEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function assigns preferred dimensions to a bitmap. These dimensions can be used by applications; however,
they are not used by the system.
</summary>
<param name="hBitmap">A handle to the bitmap. The bitmap cannot be a DIB-section bitmap.</param>
<param name="nWidth">The width, in 0.1-millimeter units, of the bitmap.</param>
<param name="nHeight">The height, in 0.1-millimeter units, of the bitmap.</param>
<param name="lpSize">
A pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure to receive the previous dimensions of the bitmap. This pointer can be NULL.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
An application can retrieve the dimensions assigned to a bitmap with the <see cref="M:Win32Interop.Methods.Gdi32.SetBitmapDimensionEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function by calling the
<see cref="M:Win32Interop.Methods.Gdi32.GetBitmapDimensionEx(System.IntPtr,Win32Interop.Structs.SIZE@)"/> function.
</para>
<para>
The bitmap identified by <paramref name="hBitmap"/> cannot be a DIB section, which is a bitmap created by the
<see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/> function. If the bitmap is a DIB section, the <see cref="M:Win32Interop.Methods.Gdi32.SetBitmapDimensionEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function fails.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ModifyWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ModifyWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@,System.UInt32)"/> function changes the world transformation for a device context using the specified mode.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpXform">
A pointer to an <see cref="T:Win32Interop.Structs.XFORM"/> structure used to modify the world transformation for the given device context.
</param>
<param name="iMode">
<para>Specifies how the transformation data modifies the current world transformation. This parameter must be one of the following values.</para>
<list type="table">
<item>
<term>MWT_IDENTITY</term>
<description>
Resets the current world transformation by using the identity matrix. If this mode is specified, the <see cref="T:Win32Interop.Structs.XFORM"/> structure
pointed to by <paramref name="lpXform"/> is ignored.
</description>
</item>
<item>
<term>MWT_LEFTMULTIPLY</term>
<description>
Multiplies the current transformation by the data in the <see cref="T:Win32Interop.Structs.XFORM"/> structure. (The data in the <see cref="T:Win32Interop.Structs.XFORM"/>
structure becomes the left multiplicand, and the data for the current transformation becomes the right multiplicand.)
</description>
</item>
<item>
<term>MWT_RIGHTMULTIPLY</term>
<description>
Multiplies the current transformation by the data in the <see cref="T:Win32Interop.Structs.XFORM"/> structure. (The data in the <see cref="T:Win32Interop.Structs.XFORM"/>
structure becomes the right multiplicand, and the data for the current transformation becomes the left multiplicand.)
</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The <see cref="M:Win32Interop.Methods.Gdi32.ModifyWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@,System.UInt32)"/> function will fail unless graphics mode for the specified device context has been set to GM_ADVANCED by
previously calling the <see cref="M:Win32Interop.Methods.Gdi32.SetGraphicsMode(System.IntPtr,System.Int32)"/> function. Likewise, it will not be possible to reset the graphics mode for the device
context to the default GM_COMPATIBLE mode, unless world transform has first been reset to the default identity transform by calling
<see cref="M:Win32Interop.Methods.Gdi32.SetWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@)"/> or <see cref="M:Win32Interop.Methods.Gdi32.ModifyWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@,System.UInt32)"/>.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetFontUnicodeRanges(System.IntPtr,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetFontUnicodeRanges(System.IntPtr,System.IntPtr)"/> function returns information about which Unicode characters are supported by a font. The information is
returned as a <see cref="T:Win32Interop.Structs.GLYPHSET"/> structure.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpgs">
A pointer to a <see cref="T:Win32Interop.Structs.GLYPHSET"/> structure that receives the glyph set information. If this parameter is NULL, the function returns the
size of the <see cref="T:Win32Interop.Structs.GLYPHSET"/> structure required to store the information.
</param>
<returns>
<para>
If the function succeeds, it returns number of bytes written to the GLYPHSET structure or, if the <paramref name="lpgs"/> parameter is NULL,
it returns the size of the GLYPHSET structure required to store the information.
</para>
<para>If the function fails, it returns zero. No extended error information is available.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetEnhMetaFileHeader(System.IntPtr,System.UInt32,Win32Interop.Structs.ENHMETAHEADER@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFileHeader(System.IntPtr,System.UInt32,Win32Interop.Structs.ENHMETAHEADER@)"/> function retrieves the record containing the header for the specified enhanced-format metafile.
</summary>
<param name="hemf">A handle to the enhanced metafile for which the header is to be retrieved.</param>
<param name="cbBuffer">The size, in bytes, of the buffer to receive the data. Only this many bytes will be copied.</param>
<param name="lpemh">
A pointer to an <see cref="T:Win32Interop.Structs.ENHMETAHEADER"/> structure that receives the header record. If this parameter is NULL, the function returns the size
of the header record.
</param>
<returns>
If the function succeeds and the structure pointer is NULL, the return value is the size of the record that contains the header; if the structure
pointer is a valid pointer, the return value is the number of bytes copied. Otherwise, it is zero.
</returns>
<remarks>
<para>
An enhanced-metafile header contains such information as the metafile's size, in bytes; the dimensions of the picture stored in the metafile;
the number of records stored in the metafile; the offset to the optional text description; the size of the optional palette, and the
resolution of the device on which the picture was created.
</para>
<para>The record that contains the enhanced-metafile header is always the first record in the metafile.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetCurrentPositionEx(System.IntPtr,Win32Interop.Structs.POINT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetCurrentPositionEx(System.IntPtr,Win32Interop.Structs.POINT@)"/> function retrieves the current position in logical coordinates.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpPoint">
A pointer to a <see cref="T:Win32Interop.Structs.POINT"/> structure that receives the logical coordinates of the current position.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetBitmapDimensionEx(System.IntPtr,Win32Interop.Structs.SIZE@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetBitmapDimensionEx(System.IntPtr,Win32Interop.Structs.SIZE@)"/> function retrieves the dimensions of a compatible bitmap. The retrieved dimensions must have been set by
the <see cref="M:Win32Interop.Methods.Gdi32.SetBitmapDimensionEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function.
</summary>
<param name="hBitmap">A handle to a compatible bitmap (DDB).</param>
<param name="lpDimension">
A pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure to receive the bitmap dimensions. For more information, see Remarks.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The function returns a data structure that contains fields for the height and width of the bitmap, in .01-mm units. If those dimensions have not
yet been set, the structure that is returned will have zeros in those fields.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreatePolyPolygonRgn(Win32Interop.Structs.POINT@,System.Int32@,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreatePolyPolygonRgn(Win32Interop.Structs.POINT@,System.Int32@,System.Int32,System.Int32)"/> function creates a region consisting of a series of polygons. The polygons can overlap.
</summary>
<param name="lppt">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures that define the vertices of the polygons in logical units. The polygons are specified
consecutively. Each polygon is presumed closed and each vertex is specified only once.
</param>
<param name="lpPolyCounts">
A pointer to an array of integers, each of which specifies the number of points in one of the polygons in the array pointed to by
<paramref name="lppt"/>.
</param>
<param name="nCount">
The total number of integers in the array pointed to by <paramref name="lpPolyCounts"/>.
</param>
<param name="fnPolyFillMode">
<para>The fill mode used to determine which pixels are in the region. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>ALTERNATE</term>
<description>Selects alternate mode (fills area between odd-numbered and even-numbered polygon sides on each scan line).</description>
</item>
<item>
<term>WINDING</term>
<description>Selects winding mode (fills any region with a nonzero winding value).</description>
</item>
</list>
<para>
For more information about these modes, see the <see cref="M:Win32Interop.Methods.Gdi32.SetPolyFillMode(System.IntPtr,System.Int32)"/> function.
</para>
</param>
<returns>
<para>If the function succeeds, the return value is the handle to the region.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
When you no longer need the HRGN object, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>Region coordinates are represented as 27-bit signed integers.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateBitmapIndirect(Win32Interop.Structs.BITMAP@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmapIndirect(Win32Interop.Structs.BITMAP@)"/> function creates a bitmap with the specified width, height, and color format (color planes and
bits-per-pixel).
</summary>
<param name="lpbm">
A pointer to a <see cref="T:Win32Interop.Structs.BITMAP"/> structure that contains information about the bitmap. If an application sets the
<see cref="F:Win32Interop.Structs.BITMAP.bmWidth"/> or <see cref="F:Win32Interop.Structs.BITMAP.bmHeight"/> members to zero, <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmapIndirect(Win32Interop.Structs.BITMAP@)"/> returns the handle to a
1-by-1 pixel, monochrome bitmap.
</param>
<returns>
<para>If the function succeeds, the return value is a handle to the bitmap.</para>
<para>If the function fails, the return value is NULL.</para>
<para>This function can return the following values.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmapIndirect(Win32Interop.Structs.BITMAP@)"/> function creates a device-dependent bitmap.
</para>
<para>
After a bitmap is created, it can be selected into a device context by calling the <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function. However, the bitmap
can only be selected into a device context if the bitmap and the DC have the same format.
</para>
<para>
While the <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmapIndirect(Win32Interop.Structs.BITMAP@)"/> function can be used to create color bitmaps, for performance reasons applications should use
<see cref="M:Win32Interop.Methods.Gdi32.CreateBitmapIndirect(Win32Interop.Structs.BITMAP@)"/> to create monochrome bitmaps and <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/> to create color bitmaps. Whenever
a color bitmap from <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmapIndirect(Win32Interop.Structs.BITMAP@)"/> is selected into a device context, the system must ensure that the bitmap matches the
format of the device context it is being selected into. Because <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/> takes a device context, it returns a
bitmap that has the same format as the specified device context. Thus, subsequent calls to <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> are faster with a
color bitmap from <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/> than with a color bitmap returned from <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmapIndirect(Win32Interop.Structs.BITMAP@)"/>.
</para>
<para>
If the bitmap is monochrome, zeros represent the foreground color and ones represent the background color for the destination device
context.
</para>
<para>
When you no longer need the bitmap, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.AddFontMemResourceEx(System.IntPtr,System.UInt32,System.IntPtr,System.UInt32@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.AddFontMemResourceEx(System.IntPtr,System.UInt32,System.IntPtr,System.UInt32@)"/> function adds the font resource from a memory image to the system.
</summary>
<param name="pbFont">A pointer to a font resource.</param>
<param name="cbFont">
The number of bytes in the font resource that is pointed to by <paramref name="pbFont"/>.
</param>
<param name="pdv">Reserved. Must be 0.</param>
<param name="pcFonts">A pointer to a variable that specifies the number of fonts installed.</param>
<returns>
If the function succeeds, the return value specifies the handle to the font added. This handle uniquely identifies the fonts that were installed
on the system. If the function fails, the return value is zero. No extended error information is available.
</returns>
<remarks>
<para>
This function allows an application to get a font that is embedded in a document or a webpage. A font that is added by
<see cref="M:Win32Interop.Methods.Gdi32.AddFontMemResourceEx(System.IntPtr,System.UInt32,System.IntPtr,System.UInt32@)"/> is always private to the process that made the call and is not enumerable.
</para>
<para>
A memory image can contain more than one font. When this function succeeds, <paramref name="pcFonts"/> is a pointer to a DWORD whose value
is the number of fonts added to the system as a result of this call. For example, this number could be 2 for the vertical and horizontal
faces of an Asian font.
</para>
<para>
When the function succeeds, the caller of this function can free the memory pointed to by <paramref name="pbFont"/> because the system has
made its own copy of the memory. To remove the fonts that were installed, call <see cref="M:Win32Interop.Methods.Gdi32.RemoveFontMemResourceEx(System.IntPtr)"/>. However, when the
process goes away, the system will unload the fonts even if the process did not call RemoveFontMemResource.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetSystemPaletteUse(System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetSystemPaletteUse(System.IntPtr,System.UInt32)"/> function allows an application to specify whether the system palette contains 2 or 20 static colors. The
default system palette contains 20 static colors. (Static colors cannot be changed when an application realizes a logical palette.)
</summary>
<param name="hdc">A handle to the device context. This device context must refer to a device that supports color palettes.</param>
<param name="uUsage">
<para>The new use of the system palette. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>SYSPAL_NOSTATIC</term>
<description>The system palette contains two static colors (black and white).</description>
</item>
<item>
<term>SYSPAL_NOSTATIC256</term>
<description>The system palette contains no static colors.</description>
</item>
<item>
<term>SYSPAL_STATIC</term>
<description>The system palette contains static colors that will not change when an application realizes its logical palette.</description>
</item>
</list>
</param>
<returns>
<para>
If the function succeeds, the return value is the previous system palette. It can be either SYSPAL_NOSTATIC, SYSPAL_NOSTATIC256, or
SYSPAL_STATIC.
</para>
<para>If the function fails, the return value is SYSPAL_ERROR.</para>
</returns>
<remarks>
<para>
An application can determine whether a device supports palette operations by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function and specifying
the RASTERCAPS constant.
</para>
<para>
When an application window moves to the foreground and the SYSPAL_NOSTATIC value is set, the application must call the
<see cref="M:Win32Interop.Methods.User32.GetSysColor(System.Int32)"/> function to save the current system colors setting. It must also call <see cref="M:Win32Interop.Methods.User32.SetSysColors(System.Int32,System.Int32[],System.UInt32[])"/> to
set reasonable values using only black and white. When the application returns to the background or terminates, the previous system colors
must be restored.
</para>
<para>If the function returns SYSPAL_ERROR, the specified device context is invalid or does not support color palettes.</para>
<para>An application must call this function only when its window is maximized and has the input focus.</para>
<para>
If an application calls <see cref="M:Win32Interop.Methods.Gdi32.SetSystemPaletteUse(System.IntPtr,System.UInt32)"/> with <paramref name="uUsage"/> set to SYSPAL_NOSTATIC, the system continues to
set aside two entries in the system palette for pure white and pure black, respectively.
</para>
<para>
After calling this function with <paramref name="uUsage"/> set to SYSPAL_NOSTATIC, an application must take the following steps:
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.RemoveFontResource(System.String)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.RemoveFontResource(System.String)"/> function removes the fonts in the specified file from the system font table.
</para>
<para>
If the font was added using the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function, you must use the <see cref="M:Win32Interop.Methods.Gdi32.RemoveFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function.
</para>
</summary>
<param name="lpFileName">A pointer to a null-terminated string that names a font resource file.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
An application that adds or removes fonts from the system font table should notify other windows of the change by sending a
<see cref="F:Win32Interop.Enums.WM.WM_FONTCHANGE"/> message to all top-level windows in the system. The application sends this message by calling the
<see cref="M:Win32Interop.Methods.User32.SendMessage(System.IntPtr,System.UInt32,System.IntPtr,System.IntPtr)"/> function with the hwnd parameter set to HWND_BROADCAST.
</para>
<para>If there are outstanding references to a font, the associated resource remains loaded until no device context is using it.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.OffsetViewportOrgEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.OffsetViewportOrgEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function modifies the viewport origin for a device context using the specified horizontal and vertical
offsets.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nXOffset">The horizontal offset, in device units.</param>
<param name="nYOffset">The vertical offset, in device units.</param>
<param name="lpPoint">
A pointer to a <see cref="T:Win32Interop.Structs.POINT"/> structure. The previous viewport origin, in device units, is placed in this structure. If
<paramref name="lpPoint"/> is NULL, the previous viewport origin is not returned.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>The new origin is the sum of the current origin and the horizontal and vertical offsets.</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> function computes the width and height of the specified string of text.
</para>
<para></para>
<para>
Note: This function is provided only for compatibility with 16-bit versions of Windows. Applications should call the
<see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint32(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> function, which provides more accurate results.
</para>
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpString">
A pointer to the string that specifies the text. The string does not need to be zero-terminated, since <paramref name="cbString"/> specifies the
length of the string.
</param>
<param name="cbString">
The length of the string pointed to by <paramref name="lpString"/>.
</param>
<param name="lpSize">
A pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure that receives the dimensions of the string, in logical units.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> function uses the currently selected font to compute the dimensions of the string. The width and
height, in logical units, are computed without considering any clipping. Also, this function assumes that the text is horizontal, that is,
that the escapement is always 0. This is true for both the horizontal and vertical measurements of the text. Even if using a font specifying
a nonzero escapement, this function will not use the angle while computing the text extent. The application must convert it explicitly.
</para>
<para>Because some devices kern characters, the sum of the extents of the characters in a string may not be equal to the extent of the string.</para>
<para>
The calculated string width takes into account the intercharacter spacing set by the <see cref="M:Win32Interop.Methods.Gdi32.SetTextCharacterExtra(System.IntPtr,System.Int32)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetTextExtentPointI(System.IntPtr,System.UInt16[],System.Int32,Win32Interop.Structs.SIZE@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPointI(System.IntPtr,System.UInt16[],System.Int32,Win32Interop.Structs.SIZE@)"/> function computes the width and height of the specified array of glyph indices.
</summary>
<param name="hdc">Handle to the device context.</param>
<param name="pgiIn">Pointer to array of glyph indices.</param>
<param name="cgi">Specifies the number of glyph indices.</param>
<param name="lpSize">
Pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure that receives the dimensions of the string, in logical units.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPointI(System.IntPtr,System.UInt16[],System.Int32,Win32Interop.Structs.SIZE@)"/> function uses the currently selected font to compute the dimensions of the array of glyph indices. The
width and height, in logical units, are computed without considering any clipping.
</para>
<para>
When this function returns the text extent, it assumes that the text is horizontal, that is, that the escapement is always 0. This is true
for both the horizontal and vertical measurements of the text. Even if you use a font that specifies a nonzero escapement, this function
doesn't use the angle while it computes the text extent. The app must convert it explicitly. However, when the graphics mode is set to
GM_ADVANCED and the character orientation is 90 degrees from the print orientation, the values that this function return do not follow this
rule. When the character orientation and the print orientation match for a given string, this function returns the dimensions of the string
in the <see cref="T:Win32Interop.Structs.SIZE"/> structure as { cx : 116, cy : 18 }. When the character orientation and the print orientation are 90 degrees apart
for the same string, this function returns the dimensions of the string in the <see cref="T:Win32Interop.Structs.SIZE"/> structure as { cx : 18, cy : 116 }.
</para>
<para>
Because some devices kern characters, the sum of the extents of the individual glyph indices may not be equal to the extent of the entire
array of glyph indices.
</para>
<para>
The calculated string width takes into account the intercharacter spacing set by the <see cref="M:Win32Interop.Methods.Gdi32.SetTextCharacterExtra(System.IntPtr,System.Int32)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetSystemPaletteUse(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetSystemPaletteUse(System.IntPtr)"/> function retrieves the current state of the system (physical) palette for the specified device context
(DC).
</summary>
<param name="hdc">A handle to the device context.</param>
<returns>If the function succeeds, the return value is the current state of the system palette. This parameter can be one of the following values.</returns>
<remarks>
<para>
By default, the system palette contains 20 static colors that are not changed when an application realizes its logical palette. An
application can gain access to most of these colors by calling the <see cref="M:Win32Interop.Methods.Gdi32.SetSystemPaletteUse(System.IntPtr,System.UInt32)"/> function.
</para>
<para>
The device context identified by the <paramref name="hdc"/> parameter must represent a device that supports color palettes.
</para>
<para>
An application can determine whether a device supports color palettes by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function and specifying the
RASTERCAPS constant.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> function returns information about the currently selected font for the specified display context.
Applications typically use this information and the <see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> function to prepare a character string for display.
</summary>
<param name="hdc">Handle to a display device context.</param>
<returns>
The return value identifies characteristics of the currently selected font. The function returns 0 if the font is "normalized" and can be treated
as a simple Latin font; it returns GCP_ERROR if an error occurs. Otherwise, the function returns a combination of the following values.
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> function enumerates all uniquely-named fonts in the system that match the font characteristics specified by
the <see cref="T:Win32Interop.Structs.LOGFONT"/> structure. <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> enumerates fonts based on typeface name, character set, or both.
</summary>
<param name="hdc">A handle to the device context from which to enumerate the fonts.</param>
<param name="lpLogfont">
<para>
A pointer to a <see cref="T:Win32Interop.Structs.LOGFONT"/> structure that contains information about the fonts to enumerate. The function examines the following
members.
</para>
<list type="table">
<item>
<term>lfCharSet</term>
<description></description>
</item>
<item>
<term>lfFaceName</term>
<description></description>
</item>
<item>
<term>lfPitchAndFamily</term>
<description></description>
</item>
</list>
</param>
<param name="lpEnumFontFamExProc">
A pointer to the application defined callback function. For more information, see the <see cref="T:Win32Interop.Methods.EnumFontFamExProc"/> function.
</param>
<param name="lParam">An application defined value. The function passes this value to the callback function along with font information.</param>
<param name="dwFlags">This parameter is not used and must be zero.</param>
<returns>
The return value is the last value returned by the callback function. This value depends on which font families are available for the specified
device.
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> function does not use tagged typeface names to identify character sets. Instead, it always passes the
correct typeface name and a separate character set value to the callback function. The function enumerates fonts based on the values of the
<see cref="F:Win32Interop.Structs.LOGFONT.lfCharSet"/> and <see cref="F:Win32Interop.Structs.LOGFONT.lfFaceName"/> members in the <see cref="T:Win32Interop.Structs.LOGFONT"/> structure.
</para>
<para>
As with <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamilies(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/>, <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> enumerates all font styles. Not all styles of a font cover the
same character sets. For example, Fontorama Bold might contain ANSI, Greek, and Cyrillic characters, but Fontorama Italic might contain only
ANSI characters. For this reason, it's best not to assume that a specified font covers a specific character set, even if it is the ANSI
character set. The following table shows the results of various combinations of values for <see cref="F:Win32Interop.Structs.LOGFONT.lfCharSet"/> and
<see cref="F:Win32Interop.Structs.LOGFONT.lfFaceName"/>.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.DescribePixelFormat(System.IntPtr,System.Int32,System.UInt32,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)">
<summary>
<para>Applies to: desktop apps only</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.DescribePixelFormat(System.IntPtr,System.Int32,System.UInt32,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)"/> function obtains information about the pixel format identified by <paramref name="iPixelFormat"/> of
the device associated with <paramref name="hdc"/>. The function sets the members of the <see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/> structure
pointed to by <paramref name="ppfd"/> with that pixel format data.
</para>
</summary>
<param name="hdc">Specifies the device context.</param>
<param name="iPixelFormat">
Index that specifies the pixel format. The pixel formats that a device context supports are identified by positive
one-based integer indexes.
</param>
<param name="nBytes">
The size, in bytes, of the structure pointed to by <paramref name="ppfd"/>. The <see cref="M:Win32Interop.Methods.Gdi32.DescribePixelFormat(System.IntPtr,System.Int32,System.UInt32,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)"/> function stores no more than
<paramref name="nBytes"/> bytes of data to that structure. Set this value to sizeof(<see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/>).
</param>
<param name="ppfd">
Pointer to a <see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/> structure whose members the function sets with pixel format data. The function stores the
number of bytes copied to the structure in the structure's <see cref="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.nSize"/> member. If, upon entry,
<paramref name="ppfd"/> is NULL, the function writes no data to the structure. This is useful when you only want to obtain the maximum pixel
format index of a device context.
</param>
<returns>
<para>
If the function succeeds, the return value is the maximum pixel format index of the device context. In addition, the function sets the
members of the <see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/> structure pointed to by <paramref name="ppfd"/> according to the specified pixel format.
</para>
<para>If the function fails, the return value is zero. To get extended error information, call GetLastError.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateFontIndirect(Win32Interop.Structs.LOGFONT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirect(Win32Interop.Structs.LOGFONT@)"/> function creates a logical font that has the specified characteristics. The font can subsequently be
selected as the current font for any device context.
</summary>
<param name="lplf">
A pointer to a <see cref="T:Win32Interop.Structs.LOGFONT"/> structure that defines the characteristics of the logical font.
</param>
<returns>
<para>If the function succeeds, the return value is a handle to a logical font.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirect(Win32Interop.Structs.LOGFONT@)"/> function creates a logical font with the characteristics specified in the <see cref="T:Win32Interop.Structs.LOGFONT"/>
structure. When this font is selected by using the <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function, GDI's font mapper attempts to match the logical font
with an existing physical font. If it fails to find an exact match, it provides an alternative whose characteristics match as many of the
requested characteristics as possible.
</para>
<para>
To get the appropriate font on different language versions of the OS, call <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> with the desired font
characteristics in the <see cref="T:Win32Interop.Structs.LOGFONT"/> structure, retrieve the appropriate typeface name, and create the font using
<see cref="M:Win32Interop.Methods.Gdi32.CreateFont(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.String)"/> or <see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirect(Win32Interop.Structs.LOGFONT@)"/>.
</para>
<para>
When you no longer need the font, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>
The fonts for many East Asian languages have two typeface names: an English name and a localized name. <see cref="M:Win32Interop.Methods.Gdi32.CreateFont(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.String)"/> and
<see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirect(Win32Interop.Structs.LOGFONT@)"/> take the localized typeface name only on a system locale that matches the language, while they take the
English typeface name on all other system locales. The best method is to try one name and, on failure, try the other. Note that
<see cref="M:Win32Interop.Methods.Gdi32.EnumFonts(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/>, <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamilies(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/>, and <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> return the English typeface name if the
system locale does not match the language of the font.
</para>
<para>
The font mapper for <see cref="M:Win32Interop.Methods.Gdi32.CreateFont(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.String)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirect(Win32Interop.Structs.LOGFONT@)"/>, and <see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirectEx(Win32Interop.Structs.ENUMLOGFONTEXDV@)"/> recognizes both the
English and the localized typeface name, regardless of locale.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateBrushIndirect(Win32Interop.Structs.LOGBRUSH@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateBrushIndirect(Win32Interop.Structs.LOGBRUSH@)"/> function creates a logical brush that has the specified style, color, and pattern.
</summary>
<param name="lplb">
A pointer to a <see cref="T:Win32Interop.Structs.LOGBRUSH"/> structure that contains information about the brush.
</param>
<returns>
<para>If the function succeeds, the return value identifies a logical brush.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>A brush is a bitmap that the system uses to paint the interiors of filled shapes.</para>
<para>
After an application creates a brush by calling <see cref="M:Win32Interop.Methods.Gdi32.CreateBrushIndirect(Win32Interop.Structs.LOGBRUSH@)"/>, it can select it into any device context by calling the
<see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function.
</para>
<para>
A brush created by using a monochrome bitmap (one color plane, one bit per pixel) is drawn using the current text and background colors.
Pixels represented by a bit set to 0 are drawn with the current text color; pixels represented by a bit set to 1 are drawn with the current
background color.
</para>
<para>
When you no longer need the brush, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>
ICM: No color is done at brush creation. However, color management is performed when the brush is selected into an ICM-enabled device
context.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ColorCorrectPalette(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ColorCorrectPalette(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32)"/> function corrects the entries of a palette using the WCS 1.0 parameters in the specified device context.
</summary>
<param name="hDC">Specifies a device context whose WCS parameters to use.</param>
<param name="hPalette">Specifies the handle to the palette to be color corrected.</param>
<param name="dwFirstEntry">Specifies the first entry in the palette to be color corrected.</param>
<param name="dwNumOfEntries">Specifies the number of entries to color correct.</param>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetWinMetaFileBits(System.UInt32,System.IntPtr,System.IntPtr,Win32Interop.Structs.METAFILEPICT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetWinMetaFileBits(System.UInt32,System.IntPtr,System.IntPtr,Win32Interop.Structs.METAFILEPICT@)"/> function converts a metafile from the older Windows format to the new enhanced format and stores the new
metafile in memory.
</summary>
<param name="cbBuffer">The size, in bytes, of the buffer that contains the Windows-format metafile.</param>
<param name="lpbBuffer">
A pointer to a buffer that contains the Windows-format metafile data. (It is assumed that the data was obtained by using the
<see cref="M:Win32Interop.Methods.Gdi32.GetMetaFileBitsEx(System.IntPtr,System.UInt32,System.IntPtr)"/> or <see cref="M:Win32Interop.Methods.Gdi32.GetWinMetaFileBits(System.IntPtr,System.UInt32,System.IntPtr,System.Int32,System.IntPtr)"/> function.)
</param>
<param name="hdcRef">A handle to a reference device context.</param>
<param name="lpmfp">
A pointer to a <see cref="T:Win32Interop.Structs.METAFILEPICT"/> structure that contains the suggested size of the metafile picture and the mapping mode that was used
when the picture was created.
</param>
<returns>
<para>If the function succeeds, the return value is a handle to a memory-based enhanced metafile.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
Windows uses the reference device context's resolution data and the data in the <see cref="T:Win32Interop.Structs.METAFILEPICT"/> structure to scale a picture. If
the <paramref name="hdcRef"/> parameter is NULL, the system uses resolution data for the current output device. If the
<paramref name="lpmfp"/> parameter is NULL, the system uses the MM_ANISOTROPIC mapping mode to scale the picture so that it fits the entire
device surface. The <see cref="F:Win32Interop.Structs.METAFILEPICT.hMF"/> member of the <see cref="T:Win32Interop.Structs.METAFILEPICT"/> structure is not used.
</para>
<para>
When the application no longer needs the enhanced metafile handle, it should delete it by calling the <see cref="M:Win32Interop.Methods.Gdi32.DeleteEnhMetaFile(System.IntPtr)"/>
function.
</para>
<para>The handle returned by this function can be used with other enhanced-metafile functions.</para>
<para>
If the reference device context is not identical to the device in which the metafile was originally created, some GDI functions that use
device units may not draw the picture correctly.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetEnhMetaFileBits(System.UInt32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetEnhMetaFileBits(System.UInt32,System.IntPtr)"/> function creates a memory-based enhanced-format metafile from the specified data.
</summary>
<param name="cbBuffer">Specifies the size, in bytes, of the data provided.</param>
<param name="lpData">
Pointer to a buffer that contains enhanced-metafile data. (It is assumed that the data in the buffer was obtained by calling the
<see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFileBits(System.IntPtr,System.UInt32,System.IntPtr)"/> function.)
</param>
<returns>
<para>If the function succeeds, the return value is a handle to a memory-based enhanced metafile.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
When the application no longer needs the enhanced-metafile handle, it should delete the handle by calling the
<see cref="M:Win32Interop.Methods.Gdi32.DeleteEnhMetaFile(System.IntPtr)"/> function.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.SetEnhMetaFileBits(System.UInt32,System.IntPtr)"/> function does not accept metafile data in the Windows format. To import Windows-format metafiles, use
the <see cref="M:Win32Interop.Methods.Gdi32.SetWinMetaFileBits(System.UInt32,System.IntPtr,System.IntPtr,Win32Interop.Structs.METAFILEPICT@)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetDeviceGammaRamp(System.IntPtr,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetDeviceGammaRamp(System.IntPtr,System.IntPtr)"/> function sets the gamma ramp on direct color display boards having drivers that support downloadable gamma
ramps in hardware.
</summary>
<param name="hDC">Specifies the device context of the direct color display board in question.</param>
<param name="lpRamp">
Pointer to a buffer containing the gamma ramp to be set. The gamma ramp is specified in three arrays of 256 WORD elements each, which contain the
mapping between RGB values in the frame buffer and digital-analog-converter (DAC) values. The sequence of the arrays is red, green, blue. The RGB
values must be stored in the most significant bits of each WORD to increase DAC independence.
</param>
<remarks>
Direct color display modes do not use color lookup tables and are usually 16, 24, or 32 bit. Not all direct color video boards support loadable
gamma ramps. <see cref="M:Win32Interop.Methods.Gdi32.SetDeviceGammaRamp(System.IntPtr,System.IntPtr)"/> succeeds only for devices with drivers that support downloadable gamma ramps in hardware.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetColorAdjustment(System.IntPtr,Win32Interop.Structs.COLORADJUSTMENT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetColorAdjustment(System.IntPtr,Win32Interop.Structs.COLORADJUSTMENT@)"/> function sets the color adjustment values for a device context (DC) using the specified values.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpca">
A pointer to a <see cref="T:Win32Interop.Structs.COLORADJUSTMENT"/> structure containing the color adjustment values.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The color adjustment values are used to adjust the input color of the source bitmap for calls to the <see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> and
<see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/> functions when HALFTONE mode is set.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ScaleViewportExtEx(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ScaleViewportExtEx(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr)"/> function modifies the viewport for a device context using the ratios formed by the specified multiplicands
and divisors.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="Xnum">The amount by which to multiply the current horizontal extent.</param>
<param name="Xdenom">The amount by which to divide the current horizontal extent.</param>
<param name="Ynum">The amount by which to multiply the current vertical extent.</param>
<param name="Ydenom">The amount by which to divide the current vertical extent.</param>
<param name="lpSize">
A pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure that receives the previous viewport extents, in device units. If <paramref name="lpSize"/> is NULL,
this parameter is not used.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>The viewport extents are modified as follows:</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PlayMetaFileRecord(System.IntPtr,Win32Interop.Structs.HANDLETABLE[],Win32Interop.Structs.METARECORD@,System.UInt32)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.PlayMetaFileRecord(System.IntPtr,Win32Interop.Structs.HANDLETABLE[],Win32Interop.Structs.METARECORD@,System.UInt32)"/> function plays a Windows-format metafile record by executing the graphics device interface (GDI)
function contained within that record.
</para>
<para>
Note: This function is provided only for compatibility with Windows-format metafiles. Enhanced-format metafiles provide superior
functionality and are recommended for new applications. The corresponding function for an enhanced-format metafile is
<see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFileRecord(System.IntPtr,Win32Interop.Structs.HANDLETABLE[],Win32Interop.Structs.ENHMETARECORD@,System.UInt32)"/>.
</para>
</summary>
<param name="hdc">A handle to a device context.</param>
<param name="lpHandletable">
A pointer to a <see cref="T:Win32Interop.Structs.HANDLETABLE"/> structure representing the table of handles to GDI objects used when playing the metafile.
</param>
<param name="lpMetaRecord">A pointer to the Windows-format metafile record.</param>
<param name="nHandles">The number of handles in the handle table.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
To convert a Windows-format metafile into an enhanced-format metafile, use the <see cref="M:Win32Interop.Methods.Gdi32.SetWinMetaFileBits(System.UInt32,System.IntPtr,System.IntPtr,Win32Interop.Structs.METAFILEPICT@)"/> function.
</para>
<para>
An application typically uses <see cref="M:Win32Interop.Methods.Gdi32.PlayMetaFileRecord(System.IntPtr,Win32Interop.Structs.HANDLETABLE[],Win32Interop.Structs.METARECORD@,System.UInt32)"/> in conjunction with the <see cref="M:Win32Interop.Methods.Gdi32.EnumMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnumMetaFileProc,System.Int32)"/> function to process and
play a Windows-format metafile one record at a time.
</para>
<para>
The <paramref name="lpHandletable"/> and <paramref name="nHandles"/> parameters must be identical to those passed to the
<see cref="T:Win32Interop.Methods.EnumMetaFileProc"/> callback procedure by <see cref="M:Win32Interop.Methods.Gdi32.EnumMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnumMetaFileProc,System.Int32)"/>.
</para>
<para>
If the <see cref="M:Win32Interop.Methods.Gdi32.PlayMetaFileRecord(System.IntPtr,Win32Interop.Structs.HANDLETABLE[],Win32Interop.Structs.METARECORD@,System.UInt32)"/> function does not recognize a record, it ignores the record and returns TRUE.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetWinMetaFileBits(System.IntPtr,System.UInt32,System.IntPtr,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetWinMetaFileBits(System.IntPtr,System.UInt32,System.IntPtr,System.Int32,System.IntPtr)"/> function converts the enhanced-format records from a metafile into Windows-format records and stores the
converted records in the specified buffer.
</summary>
<param name="hemf">A handle to the enhanced metafile.</param>
<param name="cbBuffer">The size, in bytes, of the buffer into which the converted records are to be copied.</param>
<param name="lpbBuffer">
A pointer to the buffer that receives the converted records. If <paramref name="lpbBuffer"/> is NULL, <see cref="M:Win32Interop.Methods.Gdi32.GetWinMetaFileBits(System.IntPtr,System.UInt32,System.IntPtr,System.Int32,System.IntPtr)"/> returns
the number of bytes required to store the converted metafile records.
</param>
<param name="fnMapMode">The mapping mode to use in the converted metafile.</param>
<param name="hdcRef">A handle to the reference device context.</param>
<returns>
<para>
If the function succeeds and the buffer pointer is NULL, the return value is the number of bytes required to store the converted records; if
the function succeeds and the buffer pointer is a valid pointer, the return value is the size of the metafile data in bytes.
</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
This function converts an enhanced metafile into a Windows-format metafile so that its picture can be displayed in an application that
recognizes the older format.
</para>
<para>The system uses the reference device context to determine the resolution of the converted metafile.</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetWinMetaFileBits(System.IntPtr,System.UInt32,System.IntPtr,System.Int32,System.IntPtr)"/> function does not invalidate the enhanced metafile handle. An application should call the
<see cref="M:Win32Interop.Methods.Gdi32.DeleteEnhMetaFile(System.IntPtr)"/> function to release the handle when it is no longer needed.
</para>
<para>
To create a scalable Windows-format metafile, specify MM_ANISOTROPIC as the <paramref name="fnMapMode"/> parameter.
</para>
<para>The upper-left corner of the metafile picture is always mapped to the origin of the reference device.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetTextCharsetInfo(System.IntPtr,Win32Interop.Structs.FONTSIGNATURE@,System.UInt32)">
<summary>Retrieves information about the character set of the font that is currently selected into a specified device context.</summary>
<param name="hdc">Handle to a device context. The function obtains information about the font that is selected into this device context.</param>
<param name="lpSig">
<para>
Pointer to a <see cref="T:Win32Interop.Structs.FONTSIGNATURE"/> data structure that receives font-signature information.
</para>
<para>
If a TrueType font is currently selected into the device context, the <see cref="T:Win32Interop.Structs.FONTSIGNATURE"/> structure receives information that
identifies the code page and Unicode subranges for which the font provides glyphs.
</para>
<para>
If a font other than TrueType is currently selected into the device context, the <see cref="T:Win32Interop.Structs.FONTSIGNATURE"/> structure receives zeros. In
this case, the application should use the <see cref="M:Win32Interop.Methods.Gdi32.TranslateCharsetInfo(System.UInt32@,Win32Interop.Structs.CHARSETINFO@,System.UInt32)"/> function to obtain generic font-signature information for the
character set.
</para>
<para>
The <paramref name="lpSig"/> parameter specifies NULL if the application does not require the <see cref="T:Win32Interop.Structs.FONTSIGNATURE"/> information. In
this case, the application can also call the <see cref="M:Win32Interop.Methods.Gdi32.GetTextCharset(System.IntPtr)"/> function, which is equivalent to calling
<see cref="M:Win32Interop.Methods.Gdi32.GetTextCharsetInfo(System.IntPtr,Win32Interop.Structs.FONTSIGNATURE@,System.UInt32)"/> with <paramref name="lpSig"/> set to NULL.
</para>
</param>
<param name="dwFlags">Reserved; must be set to 0.</param>
<returns>
If successful, returns a value identifying the character set of the font currently selected into the specified device context. The following
character set identifiers are defined:
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetEnhMetaFileBits(System.IntPtr,System.UInt32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFileBits(System.IntPtr,System.UInt32,System.IntPtr)"/> function retrieves the contents of the specified enhanced-format metafile and copies them into a buffer.
</summary>
<param name="hemf">A handle to the enhanced metafile.</param>
<param name="cbBuffer">The size, in bytes, of the buffer to receive the data.</param>
<param name="lpbBuffer">
A pointer to a buffer that receives the metafile data. The buffer must be sufficiently large to contain the data. If
<paramref name="lpbBuffer"/> is NULL, the function returns the size necessary to hold the data.
</param>
<returns>
<para>If the function succeeds and the buffer pointer is NULL, the return value is the size of the enhanced metafile, in bytes.</para>
<para>If the function succeeds and the buffer pointer is a valid pointer, the return value is the number of bytes copied to the buffer.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
After the enhanced-metafile bits are retrieved, they can be used to create a memory-based metafile by calling the
<see cref="M:Win32Interop.Methods.Gdi32.SetEnhMetaFileBits(System.UInt32,System.IntPtr)"/> function.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFileBits(System.IntPtr,System.UInt32,System.IntPtr)"/> function does not invalidate the enhanced-metafile handle. The application must call the
<see cref="M:Win32Interop.Methods.Gdi32.DeleteEnhMetaFile(System.IntPtr)"/> function to delete the handle when it is no longer needed.
</para>
<para>
The metafile contents retrieved by this function are in the enhanced format. To retrieve the metafile contents in the Windows format, use the
<see cref="M:Win32Interop.Methods.Gdi32.GetWinMetaFileBits(System.IntPtr,System.UInt32,System.IntPtr,System.Int32,System.IntPtr)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetDeviceGammaRamp(System.IntPtr,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceGammaRamp(System.IntPtr,System.IntPtr)"/> function gets the gamma ramp on direct color display boards having drivers that support downloadable gamma
ramps in hardware.
</summary>
<param name="hDC">Specifies the device context of the direct color display board in question.</param>
<param name="lpRamp">
Points to a buffer where the function can place the current gamma ramp of the color display board. The gamma ramp is specified in three arrays of
256 WORD elements each, which contain the mapping between RGB values in the frame buffer and digital-analog-converter (DAC) values. The sequence
of the arrays is red, green, blue.
</param>
<remarks>
Direct color display modes do not use color lookup tables and are usually 16, 24, or 32 bit. Not all direct color video boards support loadable
gamma ramps. <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceGammaRamp(System.IntPtr,System.IntPtr)"/> succeeds only for devices with drivers that support downloadable gamma ramps in hardware.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetColorAdjustment(System.IntPtr,Win32Interop.Structs.COLORADJUSTMENT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetColorAdjustment(System.IntPtr,Win32Interop.Structs.COLORADJUSTMENT@)"/> function retrieves the color adjustment values for the specified device context (DC).
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpca">
A pointer to a <see cref="T:Win32Interop.Structs.COLORADJUSTMENT"/> structure that receives the color adjustment values.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetCharWidthFloat(System.IntPtr,System.UInt32,System.UInt32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetCharWidthFloat(System.IntPtr,System.UInt32,System.UInt32,System.IntPtr)"/> function retrieves the fractional widths of consecutive characters in a specified range from the current
font.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="iFirstChar">The code point of the first character in the group of consecutive characters.</param>
<param name="iLastChar">The code point of the last character in the group of consecutive characters.</param>
<param name="pxBuffer">A pointer to a buffer that receives the character widths, in logical units.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>The returned widths are in the 32-bit IEEE floating-point format. (The widths are measured along the base line of the characters.)</para>
<para>
If the <paramref name="iFirstChar"/> parameter specifies the letter a and the <paramref name="iLastChar"/> parameter specifies the letter
z, <see cref="M:Win32Interop.Methods.Gdi32.GetCharWidthFloat(System.IntPtr,System.UInt32,System.UInt32,System.IntPtr)"/> retrieves the widths of all lowercase characters.
</para>
<para>If a character does not exist in the current font, it is assigned the width of the default character.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateRoundRectRgn(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateRoundRectRgn(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/> function creates a rectangular region with rounded corners.
</summary>
<param name="nLeftRect">Specifies the x-coordinate of the upper-left corner of the region in device units.</param>
<param name="nTopRect">Specifies the y-coordinate of the upper-left corner of the region in device units.</param>
<param name="nRightRect">Specifies the x-coordinate of the lower-right corner of the region in device units.</param>
<param name="nBottomRect">Specifies the y-coordinate of the lower-right corner of the region in device units.</param>
<param name="nWidthEllipse">Specifies the width of the ellipse used to create the rounded corners in device units.</param>
<param name="nHeightEllipse">Specifies the height of the ellipse used to create the rounded corners in device units.</param>
<returns>
<para>If the function succeeds, the return value is the handle to the region.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
When you no longer need the HRGN object call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>Region coordinates are represented as 27-bit signed integers.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreatePatternBrush(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreatePatternBrush(System.IntPtr)"/> function creates a logical brush with the specified bitmap pattern. The bitmap can be a DIB section bitmap,
which is created by the <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/> function, or it can be a device-dependent bitmap.
</summary>
<param name="hbmp">A handle to the bitmap to be used to create the logical brush.</param>
<returns>
<para>If the function succeeds, the return value identifies a logical brush.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>A pattern brush is a bitmap that the system uses to paint the interiors of filled shapes.</para>
<para>
After an application creates a brush by calling <see cref="M:Win32Interop.Methods.Gdi32.CreatePatternBrush(System.IntPtr)"/>, it can select that brush into any device context by
calling the <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function.
</para>
<para>
You can delete a pattern brush without affecting the associated bitmap by using the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function. Therefore, you can
then use this bitmap to create any number of pattern brushes.
</para>
<para>
A brush created by using a monochrome (1 bit per pixel) bitmap has the text and background colors of the device context to which it is drawn.
Pixels represented by a 0 bit are drawn with the current text color; pixels represented by a 1 bit are drawn with the current background
color.
</para>
<para>
ICM: No color is done at brush creation. However, color management is performed when the brush is selected into an ICM-enabled device
context.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateEnhMetaFile(System.IntPtr,System.String,Win32Interop.Structs.RECT@,System.String)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateEnhMetaFile(System.IntPtr,System.String,Win32Interop.Structs.RECT@,System.String)"/> function creates a device context for an enhanced-format metafile. This device context can be used to store
a device-independent picture.
</summary>
<param name="hdcRef">A handle to a reference device for the enhanced metafile. This parameter can be NULL; for more information, see Remarks.</param>
<param name="lpFilename">
A pointer to the file name for the enhanced metafile to be created. If this parameter is NULL, the enhanced metafile is memory based and its
contents are lost when it is deleted by using the <see cref="M:Win32Interop.Methods.Gdi32.DeleteEnhMetaFile(System.IntPtr)"/> function.
</param>
<param name="lpRect">
A pointer to a <see cref="T:Win32Interop.Structs.RECT"/> structure that specifies the dimensions (in .01-millimeter units) of the picture to be stored in the enhanced
metafile.
</param>
<param name="lpDescription">
A pointer to a string that specifies the name of the application that created the picture, as well as the picture's title. This parameter can be
NULL; for more information, see Remarks.
</param>
<returns>
<para>If the function succeeds, the return value is a handle to the device context for the enhanced metafile.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
Where text arguments must use Unicode characters, use the <see cref="M:Win32Interop.Methods.Gdi32.CreateEnhMetaFile(System.IntPtr,System.String,Win32Interop.Structs.RECT@,System.String)"/> function as a wide-character function. Where text
arguments must use characters from the Windows character set, use this function as an ANSI function.
</para>
<para>
The system uses the reference device identified by the <paramref name="hdcRef"/> parameter to record the resolution and units of the device
on which a picture originally appeared. If the <paramref name="hdcRef"/> parameter is NULL, it uses the current display device for
reference.
</para>
<para>
The <see cref="F:Win32Interop.Structs.RECT.left"/> and <see cref="F:Win32Interop.Structs.RECT.top"/> members of the <see cref="T:Win32Interop.Structs.RECT"/> structure pointed to by the
<paramref name="lpRect"/>
parameter must be less than the <see cref="F:Win32Interop.Structs.RECT.right"/> and <see cref="F:Win32Interop.Structs.RECT.bottom"/> members, respectively. Points along the edges of the
rectangle are included in the picture. If <paramref name="lpRect"/> is NULL, the graphics device interface (GDI) computes the dimensions of
the smallest rectangle that surrounds the picture drawn by the application. The <paramref name="lpRect"/> parameter should be provided where
possible.
</para>
<para>
The string pointed to by the <paramref name="lpDescription"/> parameter must contain a null character between the application name and the
picture name and must terminate with two null characters for example, "XYZ Graphics Editor\0Bald Eagle\0\0", where \0 represents the null
character. If <paramref name="lpDescription"/> is NULL, there is no corresponding entry in the enhanced-metafile header.
</para>
<para>
Applications use the device context created by this function to store a graphics picture in an enhanced metafile. The handle identifying this
device context can be passed to any GDI function.
</para>
<para>
After an application stores a picture in an enhanced metafile, it can display the picture on any output device by calling the
<see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Structs.RECT@)"/> function. When displaying the picture, the system uses the rectangle pointed to by the
<paramref name="lpRect"/> parameter and the resolution data from the reference device to position and scale the picture.
</para>
<para>The device context returned by this function contains the same default attributes associated with any new device context.</para>
<para>
Applications must use the <see cref="M:Win32Interop.Methods.Gdi32.GetWinMetaFileBits(System.IntPtr,System.UInt32,System.IntPtr,System.Int32,System.IntPtr)"/> function to convert an enhanced metafile to the older Windows metafile format.
</para>
<para>The file name for the enhanced metafile should use the .emf extension.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateCompatibleDC(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleDC(System.IntPtr)"/> function creates a memory device context (DC) compatible with the specified device.
</summary>
<param name="hdc">
A handle to an existing DC. If this handle is NULL, the function creates a memory DC compatible with the application's current
screen.
</param>
<returns>
<para>If the function succeeds, the return value is the handle to a memory DC.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
A memory DC exists only in memory. When the memory DC is created, its display surface is exactly one monochrome pixel wide and one monochrome
pixel high. Before an application can use a memory DC for drawing operations, it must select a bitmap of the correct width and height into
the DC. To select a bitmap into a DC, use the <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/> function, specifying the height, width, and color
organization required.
</para>
<para>
When a memory DC is created, all attributes are set to normal default values. The memory DC can be used as a normal DC. You can set the
attributes; obtain the current settings of its attributes; and select pens, brushes, and regions.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleDC(System.IntPtr)"/> function can only be used with devices that support raster operations. An application can determine
whether a device supports these operations by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function.
</para>
<para>
When you no longer need the memory DC, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteDC(System.IntPtr)"/> function. We recommend that you call <see cref="M:Win32Interop.Methods.Gdi32.DeleteDC(System.IntPtr)"/> to
delete the DC. However, you can also call <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> with the HDC to delete the DC.
</para>
<para>
If <paramref name="hdc"/> is NULL, the thread that calls <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleDC(System.IntPtr)"/> owns the HDC that is created. When this thread is
destroyed, the HDC is no longer valid. Thus, if you create the HDC and pass it to another thread, then exit the first thread, the second
thread will not be able to use the HDC.
</para>
<para>
ICM: If the DC that is passed to this function is enabled for Image Color Management (ICM), the DC created by the function is ICM-enabled.
The source and destination color spaces are specified in the DC.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ColorMatchToTarget(System.IntPtr,System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ColorMatchToTarget(System.IntPtr,System.IntPtr,System.UInt32)"/> function enables you to preview colors as they would appear on the target device.
</summary>
<param name="hDC">Specifies the device context for previewing, generally the screen.</param>
<param name="hdcTarget">Specifies the target device context, generally a printer.</param>
<param name="uiAction">
<para>A constant that can have one of the following values.</para>
<list type="table">
<item>
<term>CS_ENABLE</term>
<description>
Map the colors to the target device's color gamut. This enables color proofing. All subsequent draw commands to the DC will render
colors as they would appear on the target device.
</description>
</item>
<item>
<term>CS_DISABLE</term>
<description>Disable color proofing.</description>
</item>
<item>
<term>CS_DELETE_TRANSFORM</term>
<description>If color management is enabled for the target profile, disable it and delete the concatenated transform.</description>
</item>
</list>
</param>
<remarks>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.ColorMatchToTarget(System.IntPtr,System.IntPtr,System.UInt32)"/> can be used to proof the colors of a color output device on another color output device. Setting the
<paramref name="uiAction"/> parameter to CS_ENABLE causes all subsequent drawing commands to the DC to render colors as they would appear on
the target device. If <paramref name="uiAction"/> is set to CS_DISABLE, proofing is turned off. However, the current color transform is not
deleted from the DC. It is just inactive.
</para>
<para>
When <see cref="M:Win32Interop.Methods.Gdi32.ColorMatchToTarget(System.IntPtr,System.IntPtr,System.UInt32)"/> is called, the color transform for the target device is performed first, and then the transform to the
preview device is applied to the results of the first transform. This is used primarily for checking gamut mapping conditions. Before using
this function, you must enable WCS for both device contexts.
</para>
<para>
This function cannot be cascaded. While color mapping to the target is enabled by setting <paramref name="uiAction"/> to CS_ENABLE,
application changes to the color space or gamut mapping method are ignored. Those changes then take effect when color mapping to the target
is disabled.
</para>
<para>
Note: A memory leak will not occur if an application does not delete a transform using CS_DELETE_TRANSFORM. The transform will be deleted
when either the device context (DC) is closed, or when the application color space is deleted. However if the transform is not going to be
used again, or if the application will not be performing any more color matching on the DC, it should explicitly delete the transform to free
the memory it occupies.
</para>
<para>
The <paramref name="uiAction"/> parameter should only be set to CS_DELETE_TRANSFORM if color management is enabled before the
<see cref="M:Win32Interop.Methods.Gdi32.ColorMatchToTarget(System.IntPtr,System.IntPtr,System.UInt32)"/> function is called.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CheckColorsInGamut(System.IntPtr,System.IntPtr,System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CheckColorsInGamut(System.IntPtr,System.IntPtr,System.IntPtr,System.UInt32)"/> function determines whether a specified set of RGB triples lies in the output gamut of a specified device.
The RGB triples are interpreted in the input logical color space.
</summary>
<param name="hDC">Handle to the device context whose output gamut to be checked.</param>
<param name="lpRGBTriples">Pointer to an array of RGB triples to check.</param>
<param name="lpBuffer">
Pointer to the buffer in which the results are to be placed. This buffer must be at least as large as <paramref name="nCount"/> bytes.
</param>
<param name="nCount">The number of elements in the array of triples.</param>
<remarks>
<para>
The function places the test results in the buffer pointed to by <paramref name="lpBuffer"/>. Each byte in the buffer corresponds to an RGB
triple, and has an unsigned value between CM_IN_GAMUT (= 0) and CM_OUT_OF_GAMUT (= 255). The value 0 denotes that the color is in gamut,
while a nonzero value denotes that it is out of gamut. For any integer n such that 0 &lt; n &lt; 255, a result value of n + 1 indicates that
the corresponding color is at least as far out of gamut as would be indicated by a result value of n, as specified by the ICC Profile Format
Specification. For more information on the ICC Profile Format Specification, see the sources listed in Further Information.
</para>
<para>
Note that for this function to succeed, WCS must be enabled for the device context handle that is passed in through the
<paramref name="hDC"/> parameter. WCS can be enabled for a device context handle by calling the <see cref="M:Win32Interop.Methods.Gdi32.SetICMMode(System.IntPtr,System.Int32)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.AddFontResourceEx(System.String,System.UInt32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.AddFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function adds the font resource from the specified file to the system. Fonts added with the
<see cref="M:Win32Interop.Methods.Gdi32.AddFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function can be marked as private and not enumerable.
</summary>
<param name="lpszFilename">
<para>
A pointer to a null-terminated character string that contains a valid font file name. This parameter can specify any of the following
files.
</para>
<list type="table">
<item>
<term>.fon</term>
<description>Font resource file.</description>
</item>
<item>
<term>.fnt</term>
<description>Raw bitmap font file.</description>
</item>
<item>
<term>.ttf</term>
<description>Raw TrueType file.</description>
</item>
<item>
<term>.ttc</term>
<description>East Asian Windows: TrueType font collection.</description>
</item>
<item>
<term>.fot</term>
<description>TrueType resource file.</description>
</item>
<item>
<term>.otf</term>
<description>PostScript OpenType font.</description>
</item>
<item>
<term>.mmm</term>
<description>multiple master Type1 font resource file. It must be used with .pfm and .pfb files.</description>
</item>
<item>
<term>.pfb</term>
<description>Type 1 font bits file. It is used with a .pfm file.</description>
</item>
<item>
<term>.pfm</term>
<description>Type 1 font metrics file. It is used with a .pfb file.</description>
</item>
</list>
<para>
To add a font whose information comes from several resource files, point <paramref name="lpszFilename"/> to a string with the file names
separated by a | --for example, abcxxxxx.pfm | abcxxxxx.pfb.
</para>
</param>
<param name="fl">
<para>The characteristics of the font to be added to the system. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>FR_PRIVATE</term>
<description>
Specifies that only the process that called the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function can use this font. When the font name
matches a public font, the private font will be chosen. When the process terminates, the system will remove all fonts installed by
the process with the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function.
</description>
</item>
<item>
<term>FR_NOT_ENUM</term>
<description>
Specifies that no process, including the process that called the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function, can enumerate this font.
</description>
</item>
</list>
</param>
<param name="pdv">Reserved. Must be zero.</param>
<returns>
<para>If the function succeeds, the return value specifies the number of fonts added.</para>
<para>If the function fails, the return value is zero. No extended error information is available.</para>
</returns>
<remarks>
<para>This function allows a process to use fonts without allowing other processes access to the fonts.</para>
<para>
When an application no longer needs a font resource it loaded by calling the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function, it must remove the
resource by calling the <see cref="M:Win32Interop.Methods.Gdi32.RemoveFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function.
</para>
<para>
This function installs the font only for the current session. When the system restarts, the font will not be present. To have the font
installed even after restarting the system, the font must be listed in the registry.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.StrokeAndFillPath(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.StrokeAndFillPath(System.IntPtr)"/> function closes any open figures in a path, strokes the outline of the path by using the current pen, and
fills its interior by using the current brush.
</summary>
<param name="hdc">A handle to the device context.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The device context identified by the <paramref name="hdc"/> parameter must contain a closed path.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.StrokeAndFillPath(System.IntPtr)"/> function has the same effect as closing all the open figures in the path, and stroking and filling the
path separately, except that the filled region will not overlap the stroked region even if the pen is wide.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@)"/> function sets a two-dimensional linear transformation between world space and page space for the specified
device context. This transformation can be used to scale, rotate, shear, or translate graphics output.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpXform">
A pointer to an <see cref="T:Win32Interop.Structs.XFORM"/> structure that contains the transformation data.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>For any coordinates (x, y) in world space, the transformed coordinates in page space (x', y') can be determined by the following algorithm:</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetStretchBltMode(System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetStretchBltMode(System.IntPtr,System.Int32)"/> function sets the bitmap stretching mode in the specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="iStretchMode">
<para>The stretching mode. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>BLACKONWHITE</term>
<description>
Performs a Boolean AND operation using the color values for the eliminated and existing pixels. If the bitmap is a monochrome bitmap,
this mode preserves black pixels at the expense of white pixels.
</description>
</item>
<item>
<term>COLORONCOLOR</term>
<description>Deletes the pixels. This mode deletes all eliminated lines of pixels without trying to preserve their information.</description>
</item>
<item>
<term>HALFTONE</term>
<description>
<para>
Maps pixels from the source rectangle into blocks of pixels in the destination rectangle. The average color over the destination
block of pixels approximates the color of the source pixels.
</para>
<para>
After setting the HALFTONE stretching mode, an application must call the <see cref="M:Win32Interop.Methods.Gdi32.SetBrushOrgEx(System.IntPtr,System.Int32,System.Int32,Win32Interop.Structs.POINT@)"/> function to set the brush
origin. If it fails to do so, brush misalignment occurs.
</para>
</description>
</item>
<item>
<term>STRETCH_ANDSCANS</term>
<description>Same as BLACKONWHITE.</description>
</item>
<item>
<term>STRETCH_DELETESCANS</term>
<description>Same as COLORONCOLOR.</description>
</item>
<item>
<term>STRETCH_HALFTONE</term>
<description>Same as HALFTONE.</description>
</item>
<item>
<term>STRETCH_ORSCANS</term>
<description>Same as WHITEONBLACK.</description>
</item>
<item>
<term>WHITEONBLACK</term>
<description>
Performs a Boolean OR operation using the color values for the eliminated and existing pixels. If the bitmap is a monochrome bitmap,
this mode preserves white pixels at the expense of black pixels.
</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value is the previous stretching mode.</para>
<para>If the function fails, the return value is zero.</para>
<para>This function can return the following value.</para>
</returns>
<remarks>
<para>
The stretching mode defines how the system combines rows or columns of a bitmap with existing pixels on a display device when an application
calls the <see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> function.
</para>
<para>
The BLACKONWHITE (STRETCH_ANDSCANS) and WHITEONBLACK (STRETCH_ORSCANS) modes are typically used to preserve foreground pixels in monochrome
bitmaps. The COLORONCOLOR (STRETCH_DELETESCANS) mode is typically used to preserve color in color bitmaps.
</para>
<para>
The HALFTONE mode is slower and requires more processing of the source image than the other three modes; but produces higher quality images.
Also note that <see cref="M:Win32Interop.Methods.Gdi32.SetBrushOrgEx(System.IntPtr,System.Int32,System.Int32,Win32Interop.Structs.POINT@)"/> must be called after setting the HALFTONE mode to avoid brush misalignment.
</para>
<para>Additional stretching modes might also be available depending on the capabilities of the device driver.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetPaletteEntries(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[])">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetPaletteEntries(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[])"/> function sets RGB (red, green, blue) color values and flags in a range of entries in a logical palette.
</summary>
<param name="hpal">A handle to the logical palette.</param>
<param name="iStart">The first logical-palette entry to be set.</param>
<param name="cEntries">The number of logical-palette entries to be set.</param>
<param name="lppe">
A pointer to the first member of an array of <see cref="T:Win32Interop.Structs.PALETTEENTRY"/> structures containing the RGB values and flags.
</param>
<returns>
<para>If the function succeeds, the return value is the number of entries that were set in the logical palette.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
An application can determine whether a device supports palette operations by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function and specifying
the RASTERCAPS constant.
</para>
<para>
Even if a logical palette has been selected and realized, changes to the palette do not affect the physical palette in the surface.
<see cref="M:Win32Interop.Methods.Gdi32.RealizePalette(System.IntPtr)"/> must be called again to set the new logical palette into the surface.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetMetaFileBitsEx(System.UInt32,System.IntPtr)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.SetMetaFileBitsEx(System.UInt32,System.IntPtr)"/> function creates a memory-based Windows-format metafile from the supplied data.
</para>
<para>
Note: This function is provided only for compatibility with Windows-format metafiles. Enhanced-format metafiles provide superior
functionality and are recommended for new applications. The corresponding function for an enhanced-format metafile is
<see cref="M:Win32Interop.Methods.Gdi32.SetEnhMetaFileBits(System.UInt32,System.IntPtr)"/>.
</para>
</summary>
<param name="nSize">Specifies the size, in bytes, of the Windows-format metafile.</param>
<param name="lpData">
Pointer to a buffer that contains the Windows-format metafile. (It is assumed that the data was obtained by using the
<see cref="M:Win32Interop.Methods.Gdi32.GetMetaFileBitsEx(System.IntPtr,System.UInt32,System.IntPtr)"/> function.)
</param>
<returns>
<para>If the function succeeds, the return value is a handle to a memory-based Windows-format metafile.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
To convert a Windows-format metafile into an enhanced-format metafile, use the <see cref="M:Win32Interop.Methods.Gdi32.SetWinMetaFileBits(System.UInt32,System.IntPtr,System.IntPtr,Win32Interop.Structs.METAFILEPICT@)"/> function.
</para>
<para>
When the application no longer needs the metafile handle returned by <see cref="M:Win32Interop.Methods.Gdi32.SetMetaFileBitsEx(System.UInt32,System.IntPtr)"/>, it should delete it by calling the
<see cref="M:Win32Interop.Methods.Gdi32.DeleteMetaFile(System.IntPtr)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetDIBitsToDevice(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.UInt32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetDIBitsToDevice(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.UInt32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> function sets the pixels in the specified rectangle on the device that is associated with the destination
device context using color data from a DIB, JPEG, or PNG image.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="XDest">The x-coordinate, in logical units, of the upper-left corner of the destination rectangle.</param>
<param name="YDest">The y-coordinate, in logical units, of the upper-left corner of the destination rectangle.</param>
<param name="dwWidth">The width, in logical units, of the image.</param>
<param name="dwHeight">The height, in logical units, of the image.</param>
<param name="XSrc">The x-coordinate, in logical units, of the lower-left corner of the image.</param>
<param name="YSrc">The y-coordinate, in logical units, of the lower-left corner of the image.</param>
<param name="uStartScan">The starting scan line in the image.</param>
<param name="cScanLines">
The number of DIB scan lines contained in the array pointed to by the <paramref name="lpvBits"/> parameter.
</param>
<param name="lpvBits">A pointer to the color data stored as an array of bytes. For more information, see the following Remarks section.</param>
<param name="lpbmi">
A pointer to a <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure that contains information about the DIB.
</param>
<param name="fuColorUse">
<para>
Indicates whether the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure contains explicit red, green,
blue (RGB) values or indexes into a palette. For more information, see the following Remarks section.
</para>
<para>
The <paramref name="fuColorUse"/> parameter must be one of the following values.
</para>
<list type="table">
<item>
<term>DIB_PAL_COLORS</term>
<description>The color table consists of an array of 16-bit indexes into the currently selected logical palette.</description>
</item>
<item>
<term>DIB_RGB_COLORS</term>
<description>The color table contains literal RGB values.</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value is the number of scan lines set.</para>
<para>
If zero scan lines are set (such as when <paramref name="dwHeight"/> is 0) or the function fails, the function returns zero.
</para>
<para>
If the driver cannot support the JPEG or PNG file image passed to <see cref="M:Win32Interop.Methods.Gdi32.SetDIBitsToDevice(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.UInt32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/>, the function will fail and return
GDI_ERROR. If failure does occur, the application must fall back on its own JPEG or PNG support to decompress the image into a bitmap, and
then pass the bitmap to <see cref="M:Win32Interop.Methods.Gdi32.SetDIBitsToDevice(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.UInt32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/>.
</para>
</returns>
<remarks>
<para>Optimal bitmap drawing speed is obtained when the bitmap bits are indexes into the system palette.</para>
<para>
Applications can retrieve the system palette colors and indexes by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetSystemPaletteEntries(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[]@)"/> function. After the
colors and indexes are retrieved, the application can create the DIB. For more information about the system palette, see Colors.
</para>
<para>The scan lines must be aligned on a DWORD except for RLE-compressed bitmaps.</para>
<para>The origin of a bottom-up DIB is the lower-left corner of the bitmap; the origin of a top-down DIB is the upper-left corner.</para>
<para>
To reduce the amount of memory required to set bits from a large DIB on a device surface, an application can band the output by repeatedly
calling <see cref="M:Win32Interop.Methods.Gdi32.SetDIBitsToDevice(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.UInt32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/>, placing a different portion of the bitmap into the <paramref name="lpvBits"/> array each time. The
values of the <paramref name="uStartScan"/> and <paramref name="cScanLines"/> parameters identify the portion of the bitmap contained in
the <paramref name="lpvBits"/> array.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.SetDIBitsToDevice(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.UInt32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> function returns an error if it is called by a process that is running in the background while a
full-screen MS-DOS session runs in the foreground.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.OffsetWindowOrgEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.OffsetWindowOrgEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function modifies the window origin for a device context using the specified horizontal and vertical
offsets.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nXOffset">The horizontal offset, in logical units.</param>
<param name="nYOffset">The vertical offset, in logical units.</param>
<param name="lpPoint">
A pointer to a <see cref="T:Win32Interop.Structs.POINT"/> structure. The logical coordinates of the previous window origin are placed in this structure. If
<paramref name="lpPoint"/> is NULL, the previous origin is not returned.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.IntersectClipRect(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.IntersectClipRect(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32)"/> function creates a new clipping region from the intersection of the current clipping region and the
specified rectangle.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nLeftRect">The x-coordinate, in logical units, of the upper-left corner of the rectangle.</param>
<param name="nTopRect">The y-coordinate, in logical units, of the upper-left corner of the rectangle.</param>
<param name="nRightRect">The x-coordinate, in logical units, of the lower-right corner of the rectangle.</param>
<param name="nBottomRect">The y-coordinate, in logical units, of the lower-right corner of the rectangle.</param>
<returns>The return value specifies the new clipping region's type and can be one of the following values.</returns>
<remarks>The lower and right-most edges of the given rectangle are excluded from the clipping region.</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@)"/> function retrieves the current world-space to page-space transformation.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpXform">
A pointer to an <see cref="T:Win32Interop.Structs.XFORM"/> structure that receives the current world-space to page-space transformation.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The precision of the transformation may be altered if an application calls the <see cref="M:Win32Interop.Methods.Gdi32.ModifyWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@,System.UInt32)"/> function prior to calling
<see cref="M:Win32Interop.Methods.Gdi32.GetWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@)"/>. (This is because the internal format for storing transformation values uses a higher precision than a FLOAT
value.)
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetStretchBltMode(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetStretchBltMode(System.IntPtr)"/> function retrieves the current stretching mode. The stretching mode defines how color data is added to or
removed from bitmaps that are stretched or compressed when the <see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> function is called.
</summary>
<param name="hdc">A handle to the device context.</param>
<returns>If the function succeeds, the return value is the current stretching mode. This can be one of the following values.</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetRasterizerCaps(Win32Interop.Structs.RASTERIZER_STATUS@,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetRasterizerCaps(Win32Interop.Structs.RASTERIZER_STATUS@,System.UInt32)"/> function returns flags indicating whether TrueType fonts are installed in the system.
</summary>
<param name="lprs">
A pointer to a <see cref="T:Win32Interop.Structs.RASTERIZER_STATUS"/> structure that receives information about the rasterizer.
</param>
<param name="cb">
The number of bytes to be copied into the structure pointed to by the <paramref name="lprs"/> parameter.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetRasterizerCaps(Win32Interop.Structs.RASTERIZER_STATUS@,System.UInt32)"/> function enables applications and printer drivers to determine whether TrueType fonts are installed.
</para>
<para>
If the TT_AVAILABLE flag is set in the <see cref="F:Win32Interop.Structs.RASTERIZER_STATUS.wFlags"/> member of the <see cref="T:Win32Interop.Structs.RASTERIZER_STATUS"/> structure, at
least one TrueType font is installed. If the TT_ENABLED flag is set, TrueType is enabled for the system.
</para>
<para>
The actual number of bytes copied is either the member specified in the <paramref name="cb"/> parameter or the length of the
<see cref="T:Win32Interop.Structs.RASTERIZER_STATUS"/> structure, whichever is less.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetPaletteEntries(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[]@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetPaletteEntries(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[]@)"/> function retrieves a specified range of palette entries from the given logical palette.
</summary>
<param name="hpal">A handle to the logical palette.</param>
<param name="iStartIndex">The first entry in the logical palette to be retrieved.</param>
<param name="nEntries">The number of entries in the logical palette to be retrieved.</param>
<param name="lppe">
A pointer to an array of <see cref="T:Win32Interop.Structs.PALETTEENTRY"/> structures to receive the palette entries. The array must contain at least as many
structures as specified by the <paramref name="nEntries"/> parameter.
</param>
<returns>
<para>
If the function succeeds and the handle to the logical palette is a valid pointer (not NULL), the return value is the number of entries
retrieved from the logical palette. If the function succeeds and handle to the logical palette is NULL, the return value is the number of
entries in the given palette.
</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
An application can determine whether a device supports palette operations by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function and specifying
the RASTERCAPS constant.
</para>
<para>
If the <paramref name="nEntries"/> parameter specifies more entries than exist in the palette, the remaining members of the
<see cref="T:Win32Interop.Structs.PALETTEENTRY"/> structure are not altered.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetMetaFileBitsEx(System.IntPtr,System.UInt32,System.IntPtr)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetMetaFileBitsEx(System.IntPtr,System.UInt32,System.IntPtr)"/> function retrieves the contents of a Windows-format metafile and copies them into the specified buffer.
</para>
<para>
Note: This function is provided only for compatibility with Windows-format metafiles. Enhanced-format metafiles provide superior
functionality and are recommended for new applications. The corresponding function for an enhanced-format metafile is
<see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFileBits(System.IntPtr,System.UInt32,System.IntPtr)"/>.
</para>
</summary>
<param name="hmf">A handle to a Windows-format metafile.</param>
<param name="nSize">The size, in bytes, of the buffer to receive the data.</param>
<param name="lpvData">
A pointer to a buffer that receives the metafile data. The buffer must be sufficiently large to contain the data. If <paramref name="lpvData"/>
is NULL, the function returns the number of bytes required to hold the data.
</param>
<returns>
<para>
If the function succeeds and the buffer pointer is NULL, the return value is the number of bytes required for the buffer; if the function
succeeds and the buffer pointer is a valid pointer, the return value is the number of bytes copied.
</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
After the Windows-metafile bits are retrieved, they can be used to create a memory-based metafile by calling the
<see cref="M:Win32Interop.Methods.Gdi32.SetMetaFileBitsEx(System.UInt32,System.IntPtr)"/> function.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetMetaFileBitsEx(System.IntPtr,System.UInt32,System.IntPtr)"/> function does not invalidate the metafile handle. An application must delete this handle by calling the
<see cref="M:Win32Interop.Methods.Gdi32.DeleteMetaFile(System.IntPtr)"/> function.
</para>
<para>
To convert a Windows-format metafile into an enhanced-format metafile, use the <see cref="M:Win32Interop.Methods.Gdi32.SetWinMetaFileBits(System.UInt32,System.IntPtr,System.IntPtr,Win32Interop.Structs.METAFILEPICT@)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetLogColorSpace(System.IntPtr,Win32Interop.Structs.LOGCOLORSPACE@,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetLogColorSpace(System.IntPtr,Win32Interop.Structs.LOGCOLORSPACE@,System.UInt32)"/> function retrieves the color space definition identified by a specified handle.
</summary>
<param name="hColorSpace">Specifies the handle to a color space.</param>
<param name="lpBuffer">
Points to a buffer to receive the <see cref="T:Win32Interop.Structs.LOGCOLORSPACE"/> structure.
</param>
<param name="nSize">Specifies the maximum size of the buffer.</param>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetCharABCWidths(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.ABC@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetCharABCWidths(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.ABC@)"/> function retrieves the widths, in logical units, of consecutive characters in a specified range from the
current TrueType font. This function succeeds only with TrueType fonts.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="uFirstChar">The first character in the group of consecutive characters from the current font.</param>
<param name="uLastChar">The last character in the group of consecutive characters from the current font.</param>
<param name="lpabc">
A pointer to an array of <see cref="T:Win32Interop.Structs.ABC"/> structures that receives the character widths, in logical units. This array must contain at least as
many <see cref="T:Win32Interop.Structs.ABC"/> structures as there are characters in the range specified by the <paramref name="uFirstChar"/> and
<paramref name="uLastChar"/> parameters.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The TrueType rasterizer provides ABC character spacing after a specific point size has been selected. A spacing is the distance added to the
current position before placing the glyph. B spacing is the width of the black part of the glyph. C spacing is the distance added to the
current position to provide white space to the right of the glyph. The total advanced width is specified by A+B+C.
</para>
<para>
When the <see cref="M:Win32Interop.Methods.Gdi32.GetCharABCWidths(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.ABC@)"/> function retrieves negative A or C widths for a character, that character includes underhangs or
overhangs.
</para>
<para>
To convert the ABC widths to font design units, an application should use the value stored in the
<see cref="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmEMSquare"/>
member of a <see cref="T:Win32Interop.Structs.OUTLINETEXTMETRIC"/> structure. This value can be retrieved by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetOutlineTextMetrics(System.IntPtr,System.UInt32,Win32Interop.Structs.OUTLINETEXTMETRIC@)"/>
function.
</para>
<para>The ABC widths of the default character are used for characters outside the range of the currently selected font.</para>
<para>
To retrieve the widths of characters in non-TrueType fonts, applications should use the <see cref="M:Win32Interop.Methods.Gdi32.GetCharWidth(System.IntPtr,System.UInt32,System.UInt32,System.Int32[]@)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetCharABCWidthsI(System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.ABC[]@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetCharABCWidthsI(System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.ABC[]@)"/> function retrieves the widths, in logical units, of consecutive glyph indices in a specified range from the
current TrueType font. This function succeeds only with TrueType fonts.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="giFirst">
The first glyph index in the group of consecutive glyph indices from the current font. This parameter is only used if the <paramref name="pgi"/>
parameter is NULL.
</param>
<param name="cgi">The number of glyph indices.</param>
<param name="pgi">
A pointer to an array that contains glyph indices. If this parameter is NULL, the <paramref name="giFirst"/> parameter is used instead. The
<paramref name="cgi"/> parameter specifies the number of glyph indices in this array.
</param>
<param name="lpabc">
A pointer to an array of <see cref="T:Win32Interop.Structs.ABC"/> structures that receives the character widths, in logical units. This array must contain at least as
many <see cref="T:Win32Interop.Structs.ABC"/> structures as there are glyph indices specified by the <paramref name="cgi"/> parameter.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The TrueType rasterizer provides ABC character spacing after a specific point size has been selected. A spacing is the distance added to the
current position before placing the glyph. B spacing is the width of the black part of the glyph. C spacing is the distance added to the
current position to provide white space to the right of the glyph. The total advanced width is specified by A+B+C.
</para>
<para>
When the <see cref="M:Win32Interop.Methods.Gdi32.GetCharABCWidthsI(System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.ABC[]@)"/> function retrieves negative A or C widths for a character, that character includes underhangs or
overhangs.
</para>
<para>
To convert the ABC widths to font design units, an application should use the value stored in the
<see cref="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmEMSquare"/>
member of a <see cref="T:Win32Interop.Structs.OUTLINETEXTMETRIC"/> structure. This value can be retrieved by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetOutlineTextMetrics(System.IntPtr,System.UInt32,Win32Interop.Structs.OUTLINETEXTMETRIC@)"/>
function.
</para>
<para>The ABC widths of the default character are used for characters outside the range of the currently selected font.</para>
<para>
To retrieve the widths of glyph indices in non-TrueType fonts, applications should use the <see cref="M:Win32Interop.Methods.Gdi32.GetCharWidthI(System.IntPtr,System.UInt32,System.UInt32,System.UInt16[],System.Int32[]@)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.EnumFontFamilies(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamilies(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/> function enumerates the fonts in a specified font family that are available on a specified device.
</para>
<para>
Note: This function is provided only for compatibility with 16-bit versions of Windows. Applications should use the
<see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> function.
</para>
</summary>
<param name="hdc">A handle to the device context from which to enumerate the fonts.</param>
<param name="lpszFamily">
A pointer to a null-terminated string that specifies the family name of the desired fonts. If <paramref name="lpszFamily"/> is NULL,
<see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamilies(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/> selects and enumerates one font of each available type family.
</param>
<param name="lpEnumFontFamProc">
A pointer to the application defined callback function. For information, see <see cref="T:Win32Interop.Methods.EnumFontFamExProc"/>.
</param>
<param name="lParam">A pointer to application-supplied data. The data is passed to the callback function along with the font information.</param>
<returns>The return value is the last value returned by the callback function. Its meaning is implementation specific.</returns>
<remarks>
<para>
For each font having the typeface name specified by the <paramref name="lpszFamily"/> parameter, the <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamilies(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/>
function retrieves information about that font and passes it to the function pointed to by the <paramref name="lpEnumFontFamProc"/>
parameter. The application defined callback function can process the font information as desired. Enumeration continues until there are no
more fonts or the callback function returns zero.
</para>
<para>
When the graphics mode on the device context is set to GM_ADVANCED using the SetGraphicsMode function and the DEVICE_FONTTYPE flag is passed
to the FontType parameter, this function returns a list of type 1 and OpenType fonts on the system. When the graphics mode is not set to
GM_ADVANCED, this function returns a list of type 1, OpenType, and TrueType fonts on the system.
</para>
<para>
The fonts for many East Asian languages have two typeface names: an English name and a localized name. <see cref="M:Win32Interop.Methods.Gdi32.EnumFonts(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/>,
<see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamilies(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/>, and <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> return the English typeface name if the system locale does not match
the language of the font.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.DeleteEnhMetaFile(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.DeleteEnhMetaFile(System.IntPtr)"/> function deletes an enhanced-format metafile or an enhanced-format metafile handle.
</summary>
<param name="hemf">A handle to an enhanced metafile.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
If the <paramref name="hemf"/> parameter identifies an enhanced metafile stored in memory, the <see cref="M:Win32Interop.Methods.Gdi32.DeleteEnhMetaFile(System.IntPtr)"/> function deletes
the metafile. If <paramref name="hemf"/> identifies a metafile stored on a disk, the function deletes the metafile handle but does not destroy
the actual metafile. An application can retrieve the file by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFile(System.String)"/> function.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreatePenIndirect(Win32Interop.Structs.LOGPEN@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreatePenIndirect(Win32Interop.Structs.LOGPEN@)"/> function creates a logical cosmetic pen that has the style, width, and color specified in a structure.
</summary>
<param name="lplgpn">
Pointer to a <see cref="T:Win32Interop.Structs.LOGPEN"/> structure that specifies the pen's style, width, and color.
</param>
<returns>
<para>If the function succeeds, the return value is a handle that identifies a logical cosmetic pen.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
After an application creates a logical pen, it can select that pen into a device context by calling the <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function.
After a pen is selected into a device context, it can be used to draw lines and curves.
</para>
<para>
When you no longer need the pen, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateEllipticRgn(System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateEllipticRgn(System.Int32,System.Int32,System.Int32,System.Int32)"/> function creates an elliptical region.
</summary>
<param name="nLeftRect">Specifies the x-coordinate in logical units, of the upper-left corner of the bounding rectangle of the ellipse.</param>
<param name="nTopRect">Specifies the y-coordinate in logical units, of the upper-left corner of the bounding rectangle of the ellipse.</param>
<param name="nRightRect">Specifies the x-coordinate in logical units, of the lower-right corner of the bounding rectangle of the ellipse.</param>
<param name="nBottomRect">Specifies the y-coordinate in logical units, of the lower-right corner of the bounding rectangle of the ellipse.</param>
<returns>
<para>If the function succeeds, the return value is the handle to the region.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
When you no longer need the HRGN object, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>
A bounding rectangle defines the size, shape, and orientation of the region: The long sides of the rectangle define the length of the
ellipse's major axis; the short sides define the length of the ellipse's minor axis; and the center of the rectangle defines the intersection
of the major and minor axes.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateColorSpace(Win32Interop.Structs.LOGCOLORSPACE@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateColorSpace(Win32Interop.Structs.LOGCOLORSPACE@)"/> function creates a logical color space.
</summary>
<param name="lpLogColorSpace">
Pointer to the <see cref="T:Win32Interop.Structs.LOGCOLORSPACE"/> data structure.
</param>
<remarks>
<para>
When the color space is no longer needed, use <see cref="M:Win32Interop.Methods.Gdi32.DeleteColorSpace(System.IntPtr)"/> to delete it.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ChoosePixelFormat(System.IntPtr,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)">
<summary>
<para>Applies to: desktop apps only</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.ChoosePixelFormat(System.IntPtr,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)"/> function attempts to match an appropriate pixel format supported by a device context to a given pixel
format specification.
</para>
</summary>
<param name="hdc">
Specifies the device context that the function examines to determine the best match for the pixel format descriptor pointed to by
<paramref name="ppfd"/>.
</param>
<param name="ppfd">
<para>
Pointer to a <see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/> structure that specifies the requested pixel format. In this context, the members of the
<see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/> structure that <paramref name="ppfd"/> points to are used as follows:
</para>
<list type="table">
<item>
<term>nSize</term>
<description></description>
</item>
<item>
<term>nVersion</term>
<description></description>
</item>
<item>
<term>dwFlags</term>
<description></description>
</item>
<item>
<term>iPixelType</term>
<description></description>
</item>
<item>
<term>cColorBits</term>
<description></description>
</item>
<item>
<term>cRedBits</term>
<description></description>
</item>
<item>
<term>cRedShift</term>
<description></description>
</item>
<item>
<term>cGreenBits</term>
<description></description>
</item>
<item>
<term>cGreenShift</term>
<description></description>
</item>
<item>
<term>cBlueBits</term>
<description></description>
</item>
<item>
<term>cBlueShift</term>
<description></description>
</item>
<item>
<term>cAlphaBits</term>
<description></description>
</item>
<item>
<term>cAlphaShift</term>
<description></description>
</item>
<item>
<term>cAccumBits</term>
<description></description>
</item>
<item>
<term>cAccumRedBits</term>
<description></description>
</item>
<item>
<term>cAccumGreenBits</term>
<description></description>
</item>
<item>
<term>cAccumBlueBits</term>
<description></description>
</item>
<item>
<term>cAccumAlphaBits</term>
<description></description>
</item>
<item>
<term>cDepthBits</term>
<description></description>
</item>
<item>
<term>cStencilBits</term>
<description></description>
</item>
<item>
<term>cAuxBuffers</term>
<description></description>
</item>
<item>
<term>iLayerType</term>
<description></description>
</item>
<item>
<term>bReserved</term>
<description></description>
</item>
<item>
<term>dwLayerMask</term>
<description></description>
</item>
<item>
<term>dwVisibleMask</term>
<description></description>
</item>
<item>
<term>dwDamageMask</term>
<description></description>
</item>
</list>
</param>
<returns>
<para>
If the function succeeds, the return value is a pixel format index (one-based) that is the closest match to the given pixel format
descriptor.
</para>
<para>If the function fails, the return value is zero. To get extended error information, call GetLastError.</para>
</returns>
<remarks>
You must ensure that the pixel format matched by the <see cref="M:Win32Interop.Methods.Gdi32.ChoosePixelFormat(System.IntPtr,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)"/> function satisfies your requirements. For example, if you
request a pixel format with a 24-bit RGB color buffer but the device context offers only 8-bit RGB color buffers, the function returns a pixel
format with an 8-bit RGB color buffer.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.UpdateICMRegKey(System.UInt32,System.String,System.String,System.UInt32)">
<summary>
<para>
<paramref name="(Obsolete; retained for backward compatibility)"/>
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.UpdateICMRegKey(System.UInt32,System.String,System.String,System.UInt32)"/> function manages color profiles and Color Management Modules in the system.
</para>
</summary>
<param name="dwReserved">Reserved, must be set to zero.</param>
<param name="lpszCMID">Points to a string that specifies the ICC profile identifier for the color management DLL to use with the profile.</param>
<param name="lpszFileName">
Points to a fully qualified ICC color profile file name or to a <see cref="T:Win32Interop.Structs.DEVMODE"/> structure.
</param>
<param name="nCommand">
<para>Specifies a function to execute. It can have one of the following values.</para>
<list type="table">
<item>
<term>ICM_ADDPROFILE</term>
<description>Installs the ICC profile in the system.</description>
</item>
<item>
<term>ICM_DELETEPROFILE</term>
<description>Uninstalls the ICC profile from the system, but does not delete the file.</description>
</item>
<item>
<term>ICM_QUERYPROFILE</term>
<description>Determines whether the profile is already installed in the system.</description>
</item>
<item>
<term>ICM_SETDEFAULTPROFILE</term>
<description>Makes the profile first among equals.</description>
</item>
<item>
<term>ICM_REGISTERICMATCHER</term>
<description>
Registers a CMM in the system. The <paramref name="lpszFileName"/> parameter points to a fully qualified path for the CMM DLL. The
<paramref name="lpszCMID"/> parameter points to a DWORD identifying the CMM.
</description>
</item>
<item>
<term>ICM_UNREGISTERICMATCHER</term>
<description>
Unregisters the CMM from the system. The <paramref name="lpszCMID"/> parameter points to a DWORD identifying the CMM.
</description>
</item>
<item>
<term>ICM_QUERYMATCH</term>
<description>
Determines whether a profile exists based on the <see cref="T:Win32Interop.Structs.DEVMODE"/> structure pointed to by the <paramref name="lpszFileName"/>
parameter.
</description>
</item>
</list>
</param>
<remarks>
<para>
Not all parameters are used by all functions. The <paramref name="nCommand"/> parameter specifies the function to execute.
</para>
<para>This function is retained for backward compatibility and may be removed in future versions of ICM.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetViewportOrgEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetViewportOrgEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function specifies which device point maps to the window origin (0,0).
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="X">The x-coordinate, in device units, of the new viewport origin.</param>
<param name="Y">The y-coordinate, in device units, of the new viewport origin.</param>
<param name="lpPoint">
A pointer to a <see cref="T:Win32Interop.Structs.POINT"/> structure that receives the previous viewport origin, in device coordinates. If <paramref name="lpPoint"/>
is NULL, this parameter is not used.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
This function (along with <see cref="M:Win32Interop.Methods.Gdi32.SetViewportExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> and <see cref="M:Win32Interop.Methods.Gdi32.SetWindowExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/>) helps define the mapping from the logical coordinate
space (also known as a window) to the device coordinate space (the viewport).
<see cref="M:Win32Interop.Methods.Gdi32.SetViewportOrgEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> specifies which device point maps to the logical point (0,0). It has the effect of shifting the axes so that the
logical point (0,0) no longer refers to the upper-left corner.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetViewportExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetViewportExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function sets the horizontal and vertical extents of the viewport for a device context by using the specified
values.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nXExtent">The horizontal extent, in device units, of the viewport.</param>
<param name="nYExtent">The vertical extent, in device units, of the viewport.</param>
<param name="lpSize">
A pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure that receives the previous viewport extents, in device units. If <paramref name="lpSize"/> is NULL,
this parameter is not used.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The viewport refers to the device coordinate system of the device space. The extent is the maximum value of an axis. This function sets the
maximum values for the horizontal and vertical axes of the viewport in device coordinates (or pixels). When mapping between page space and
device space, <see cref="M:Win32Interop.Methods.Gdi32.SetWindowExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> and <see cref="M:Win32Interop.Methods.Gdi32.SetViewportExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> determine the scaling factor between the window and the
viewport. For more information, see Transformation of Coordinate Spaces.
</para>
<para>
When the following mapping modes are set, calls to the <see cref="M:Win32Interop.Methods.Gdi32.SetWindowExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> and <see cref="M:Win32Interop.Methods.Gdi32.SetViewportExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> functions are
ignored.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetDIBColorTable(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.RGBQUAD[])">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetDIBColorTable(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.RGBQUAD[])"/> function sets RGB (red, green, blue) color values in a range of entries in the color table of the DIB that is
currently selected into a specified device context.
</summary>
<param name="hdc">A device context. A DIB must be selected into this device context.</param>
<param name="uStartIndex">A zero-based color table index that specifies the first color table entry to set.</param>
<param name="cEntries">The number of color table entries to set.</param>
<param name="pColors">
A pointer to an array of <see cref="T:Win32Interop.Structs.RGBQUAD"/> structures containing new color information for the DIB's color table.
</param>
<returns>
<para>If the function succeeds, the return value is the number of color table entries that the function sets.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
This function should be called to set the color table for DIBs that use 1, 4, or 8 bpp. The <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount"/> member
of a bitmap's associated bitmap information header structure.
</para>
<para>
<see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/> structure specifies the number of bits-per-pixel. Device-independent bitmaps with a
<see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount"/>
value greater than 8 do not have a color table.
</para>
<para>
The bV5BitCount member of a bitmap's associated BITMAPV5HEADER structure specifies the number of bits-per-pixel. Device-independent bitmaps
with a bV5BitCount value greater than 8 do not have a color table.
</para>
<para>ICM: No color management is performed.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ScaleWindowExtEx(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ScaleWindowExtEx(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr)"/> function modifies the window for a device context using the ratios formed by the specified multiplicands and
divisors.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="Xnum">The amount by which to multiply the current horizontal extent.</param>
<param name="Xdenom">The amount by which to divide the current horizontal extent.</param>
<param name="Ynum">The amount by which to multiply the current vertical extent.</param>
<param name="Ydenom">The amount by which to divide the current vertical extent.</param>
<param name="lpSize">
A pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure that receives the previous window extents, in logical units. If <paramref name="lpSize"/> is NULL,
this parameter is not used.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>The window extents are modified as follows:</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetViewportOrgEx(System.IntPtr,Win32Interop.Structs.POINT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetViewportOrgEx(System.IntPtr,Win32Interop.Structs.POINT@)"/> function retrieves the x-coordinates and y-coordinates of the viewport origin for the specified device
context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpPoint">
A pointer to a <see cref="T:Win32Interop.Structs.POINT"/> structure that receives the coordinates of the origin, in device units.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetViewportExtEx(System.IntPtr,Win32Interop.Structs.SIZE@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetViewportExtEx(System.IntPtr,Win32Interop.Structs.SIZE@)"/> function retrieves the x-extent and y-extent of the current viewport for the specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpSize">
A pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure that receives the x- and y-extents, in device units.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetKerningPairs(System.IntPtr,System.UInt32,Win32Interop.Structs.KERNINGPAIR[]@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetKerningPairs(System.IntPtr,System.UInt32,Win32Interop.Structs.KERNINGPAIR[]@)"/> function retrieves the character-kerning pairs for the currently selected font for the specified device
context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nNumPairs">
The number of pairs in the <paramref name="lpkrnpair"/> array. If the font has more than <paramref name="nNumPairs"/> kerning pairs, the
function returns an error.
</param>
<param name="lpkrnpair">
A pointer to an array of <see cref="T:Win32Interop.Structs.KERNINGPAIR"/> structures that receives the kerning pairs. The array must contain at least as many
structures as specified by the <paramref name="nNumPairs"/> parameter. If this parameter is NULL, the function returns the total number of
kerning pairs for the font.
</param>
<returns>
<para>If the function succeeds, the return value is the number of kerning pairs returned.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetGlyphOutline(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.GLYPHMETRICS@,System.UInt32,System.IntPtr,Win32Interop.Structs.MAT2@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetGlyphOutline(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.GLYPHMETRICS@,System.UInt32,System.IntPtr,Win32Interop.Structs.MAT2@)"/> function retrieves the outline or bitmap for a character in the TrueType font that is selected into the
specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="uChar">The character for which data is to be returned.</param>
<param name="uFormat">
<para>The format of the data that the function retrieves. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>GGO_BEZIER</term>
<description>The function retrieves the curve data as a cubic Bézier spline (not in quadratic spline format).</description>
</item>
<item>
<term>GGO_BITMAP</term>
<description>The function retrieves the glyph bitmap. For information about memory allocation, see the following Remarks section.</description>
</item>
<item>
<term>GGO_GLYPH_INDEX</term>
<description>
Indicates that the <paramref name="uChar"/> parameter is a TrueType Glyph Index rather than a character code. See the
<see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> function for additional remarks on Glyph Indexing.
</description>
</item>
<item>
<term>GGO_GRAY2_BITMAP</term>
<description>The function retrieves a glyph bitmap that contains five levels of gray.</description>
</item>
<item>
<term>GGO_GRAY4_BITMAP</term>
<description>The function retrieves a glyph bitmap that contains 17 levels of gray.</description>
</item>
<item>
<term>GGO_GRAY8_BITMAP</term>
<description>The function retrieves a glyph bitmap that contains 65 levels of gray.</description>
</item>
<item>
<term>GGO_METRICS</term>
<description>
The function only retrieves the <see cref="T:Win32Interop.Structs.GLYPHMETRICS"/> structure specified by <paramref name="lpgm"/>. The
<paramref name="lpvBuffer"/> is ignored. This value affects the meaning of the function's return value upon failure; see the Return
Values section.
</description>
</item>
<item>
<term>GGO_NATIVE</term>
<description>The function retrieves the curve data points in the rasterizer's native format and uses the font's design units.</description>
</item>
<item>
<term>GGO_UNHINTED</term>
<description>The function only returns unhinted outlines. This flag only works in conjunction with GGO_BEZIER and GGO_NATIVE.</description>
</item>
</list>
<para>Note that, for the GGO_GRAYn_BITMAP values, the function retrieves a glyph bitmap that contains n^2+1 (n squared plus one) levels of gray.</para>
</param>
<param name="lpgm">
A pointer to the <see cref="T:Win32Interop.Structs.GLYPHMETRICS"/> structure describing the placement of the glyph in the character cell.
</param>
<param name="cbBuffer">
The size, in bytes, of the buffer (*<paramref name="lpvBuffer"/>) where the function is to copy information about the outline character. If this
value is zero, the function returns the required size of the buffer.
</param>
<param name="lpvBuffer">
A pointer to the buffer that receives information about the outline character. If this value is NULL, the function returns the required size of
the buffer.
</param>
<param name="lpmat2">
A pointer to a <see cref="T:Win32Interop.Structs.MAT2"/> structure specifying a transformation matrix for the character.
</param>
<returns>
<para>
If GGO_BITMAP, GGO_GRAY2_BITMAP, GGO_GRAY4_BITMAP, GGO_GRAY8_BITMAP, or GGO_NATIVE is specified and the function succeeds, the return value
is greater than zero; otherwise, the return value is GDI_ERROR. If one of these flags is specified and the buffer size or address is zero,
the return value specifies the required buffer size, in bytes.
</para>
<para>If GGO_METRICS is specified and the function fails, the return value is GDI_ERROR.</para>
</returns>
<remarks>
<para>
The glyph outline returned by the <see cref="M:Win32Interop.Methods.Gdi32.GetGlyphOutline(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.GLYPHMETRICS@,System.UInt32,System.IntPtr,Win32Interop.Structs.MAT2@)"/> function is for a grid-fitted glyph. (A grid-fitted glyph is a glyph that
has been modified so that its bitmapped image conforms as closely as possible to the original design of the glyph.) If an application needs
an unmodified glyph outline, it can request the glyph outline for a character in a font whose size is equal to the font's em unit. The value
for a font's em unit is stored in the <see cref="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmEMSquare"/> member of the <see cref="T:Win32Interop.Structs.OUTLINETEXTMETRIC"/> structure.
</para>
<para>
The glyph bitmap returned by <see cref="M:Win32Interop.Methods.Gdi32.GetGlyphOutline(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.GLYPHMETRICS@,System.UInt32,System.IntPtr,Win32Interop.Structs.MAT2@)"/> when GGO_BITMAP is specified is a DWORD-aligned, row-oriented, monochrome bitmap.
When GGO_GRAY2_BITMAP is specified, the bitmap returned is a DWORD-aligned, row-oriented array of bytes whose values range from 0 to 4. When
GGO_GRAY4_BITMAP is specified, the bitmap returned is a DWORD-aligned, row-oriented array of bytes whose values range from 0 to 16. When
GGO_GRAY8_BITMAP is specified, the bitmap returned is a DWORD-aligned, row-oriented array of bytes whose values range from 0 to 64.
</para>
<para>
The native buffer returned by <see cref="M:Win32Interop.Methods.Gdi32.GetGlyphOutline(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.GLYPHMETRICS@,System.UInt32,System.IntPtr,Win32Interop.Structs.MAT2@)"/> when GGO_NATIVE is specified is a glyph outline. A glyph outline is returned as
a series of one or more contours defined by a <see cref="T:Win32Interop.Structs.TTPOLYGONHEADER"/> structure followed by one or more curves. Each curve in the
contour is defined by a <see cref="T:Win32Interop.Structs.TTPOLYCURVE"/> structure followed by a number of <see cref="T:Win32Interop.Structs.POINTFX"/> data points.
<see cref="T:Win32Interop.Structs.POINTFX"/> points are absolute positions, not relative moves. The starting point of a contour is given by the
<see cref="F:Win32Interop.Structs.TTPOLYGONHEADER.pfxStart"/> member of the <see cref="T:Win32Interop.Structs.TTPOLYGONHEADER"/> structure. The starting point of each curve is the last
point of the previous curve or the starting point of the contour. The count of data points in a curve is stored in the
<see cref="F:Win32Interop.Structs.TTPOLYCURVE.cpfx"/> member of
<see cref="T:Win32Interop.Structs.TTPOLYCURVE"/> structure. The size of each contour in the buffer, in bytes, is stored in the <see cref="F:Win32Interop.Structs.TTPOLYGONHEADER.cb"/>
member of
<see cref="T:Win32Interop.Structs.TTPOLYGONHEADER"/> structure. Additional curve definitions are packed into the buffer following preceding curves and additional
contours are packed into the buffer following preceding contours. The buffer contains as many contours as fit within the buffer returned by
<see cref="M:Win32Interop.Methods.Gdi32.GetGlyphOutline(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.GLYPHMETRICS@,System.UInt32,System.IntPtr,Win32Interop.Structs.MAT2@)"/>.
</para>
<para>
The <see cref="T:Win32Interop.Structs.GLYPHMETRICS"/> structure specifies the width of the character cell and the location of a glyph within the character cell.
The origin of the character cell is located at the left side of the cell at the baseline of the font. The location of the glyph origin is
relative to the character cell origin. The height of a character cell, the baseline, and other metrics global to the font are given by the
<see cref="T:Win32Interop.Structs.OUTLINETEXTMETRIC"/> structure.
</para>
<para>
An application can alter the characters retrieved in bitmap or native format by specifying a 2-by-2 transformation matrix in the
<paramref name="lpmat2"/> parameter. For example the glyph can be modified by shear, rotation, scaling, or any combination of the three
using matrix multiplication.
</para>
<para>Additional information on a glyph outlines is located in the TrueType and the OpenType technical specifications.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetGlyphIndices(System.IntPtr,System.String,System.Int32,System.UInt16[]@,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetGlyphIndices(System.IntPtr,System.String,System.Int32,System.UInt16[]@,System.UInt32)"/> function translates a string into an array of glyph indices. The function can be used to determine whether a
glyph exists in a font.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpstr">A pointer to the string to be converted.</param>
<param name="c">
The length of both the length of the string pointed to by <paramref name="lpstr"/> and the size (in WORDs) of the buffer pointed to by
<paramref name="pgi"/>.
</param>
<param name="pgi">
This buffer must be of dimension c. On successful return, contains an array of glyph indices corresponding to the characters in the
string.
</param>
<param name="fl">
<para>Specifies how glyphs should be handled if they are not supported. This parameter can be the following value.</para>
<list type="table">
<item>
<term>GGI_MARK_NONEXISTING_GLYPHS</term>
<description>Marks unsupported glyphs with the hexadecimal value 0xffff.</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, it returns the number of bytes (for the ANSI function) or WORDs (for the Unicode function) converted.</para>
<para>If the function fails, the return value is GDI_ERROR.</para>
</returns>
<remarks>
This function attempts to identify a single-glyph representation for each character in the string pointed to by <paramref name="lpstr"/>. While
this is useful for certain low-level purposes (such as manipulating font files), higher-level applications that wish to map a string to glyphs
will typically wish to use the Uniscribe functions.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetDIBColorTable(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.RGBQUAD[]@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetDIBColorTable(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.RGBQUAD[]@)"/> function retrieves RGB (red, green, blue) color values from a range of entries in the color table of the DIB
section bitmap that is currently selected into a specified device context.
</summary>
<param name="hdc">A handle to a device context. A DIB section bitmap must be selected into this device context.</param>
<param name="uStartIndex">A zero-based color table index that specifies the first color table entry to retrieve.</param>
<param name="cEntries">The number of color table entries to retrieve.</param>
<param name="pColors">
A pointer to a buffer that receives an array of <see cref="T:Win32Interop.Structs.RGBQUAD"/> data structures containing color information from the DIB color table. The
buffer must be large enough to contain as many <see cref="T:Win32Interop.Structs.RGBQUAD"/> data structures as the value of <paramref name="cEntries"/>.
</param>
<returns>
<para>If the function succeeds, the return value is the number of color table entries that the function retrieves.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The <see cref="M:Win32Interop.Methods.Gdi32.GetDIBColorTable(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.RGBQUAD[]@)"/> function should be called to retrieve the color table for DIB section bitmaps that use 1, 4, or 8 bpp. The
<see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount"/> member of a bitmap associated <see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/> structure specifies the number of
bits-per-pixel. DIB section bitmaps with a <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount"/> value greater than eight do not have a color table, but
they do have associated color masks. Call the <see cref="M:Win32Interop.Methods.Gdi32.GetObject(System.IntPtr,System.Int32,System.IntPtr)"/> function to retrieve those color masks.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetCurrentObject(System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetCurrentObject(System.IntPtr,System.UInt32)"/> function retrieves a handle to an object of the specified type that has been selected into the specified
device context (DC).
</summary>
<param name="hdc">A handle to the DC.</param>
<param name="uObjectType">
<para>The object type to be queried. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>OBJ_BITMAP</term>
<description>Returns the current selected bitmap.</description>
</item>
<item>
<term>OBJ_BRUSH</term>
<description>Returns the current selected brush.</description>
</item>
<item>
<term>OBJ_COLORSPACE</term>
<description>Returns the current color space.</description>
</item>
<item>
<term>OBJ_FONT</term>
<description>Returns the current selected font.</description>
</item>
<item>
<term>OBJ_PAL</term>
<description>Returns the current selected palette.</description>
</item>
<item>
<term>OBJ_PEN</term>
<description>Returns the current selected pen.</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value is a handle to the specified object.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
An application can use the <see cref="M:Win32Interop.Methods.Gdi32.GetCurrentObject(System.IntPtr,System.UInt32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.GetObject(System.IntPtr,System.Int32,System.IntPtr)"/> functions to retrieve descriptions of the graphic objects
currently selected into the specified DC.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GdiSetBatchLimit(System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GdiSetBatchLimit(System.UInt32)"/> function sets the maximum number of function calls that can be accumulated in the calling thread's current
batch. The system flushes the current batch whenever this limit is exceeded.
</summary>
<param name="dwLimit">Specifies the batch limit to be set. A value of 0 sets the default limit. A value of 1 disables batching.</param>
<returns>
<para>If the function succeeds, the return value is the previous batch limit.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
Only GDI drawing functions that return Boolean values can be accumulated in the current batch; calls to any other GDI functions immediately
flush the current batch. Exceeding the batch limit or calling the <see cref="M:Win32Interop.Methods.Gdi32.GdiFlush"/> function also flushes the current batch.
</para>
<para>
When the system accumulates a function call, the function returns TRUE to indicate it is in the batch. When the system flushes the current
batch and executes the function for the second time, the return value is either TRUE or FALSE, depending on whether the function succeeds.
This second return value is reported only if <see cref="M:Win32Interop.Methods.Gdi32.GdiFlush"/> is used to flush the batch.
</para>
<para>
Note: The batch limit is maintained for each thread separately. In order to completely disable batching, call
<see cref="M:Win32Interop.Methods.Gdi32.GdiSetBatchLimit(System.UInt32)"/> (1) during the initialization of each thread.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GdiGetBatchLimit">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GdiGetBatchLimit"/> function returns the maximum number of function calls that can be accumulated in the calling thread's current
batch. The system flushes the current batch whenever this limit is exceeded.
</summary>
<returns>
<para>If the function succeeds, the return value is the batch limit.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The batch limit is set by using the <see cref="M:Win32Interop.Methods.Gdi32.GdiSetBatchLimit(System.UInt32)"/> function. Setting the limit to 1 effectively disables batching.
</para>
<para>
Only GDI drawing functions that return Boolean values can be batched; calls to any other GDI functions immediately flush the current batch.
Exceeding the batch limit or calling the <see cref="M:Win32Interop.Methods.Gdi32.GdiFlush"/> function also flushes the current batch.
</para>
<para>
When the system batches a function call, the function returns TRUE. The actual return value for the function is reported only if
<see cref="M:Win32Interop.Methods.Gdi32.GdiFlush"/> is used to flush the batch.
</para>
<para>
Note: The batch limit is maintained for each thread separately. In order to completely disable batching, call
<see cref="M:Win32Interop.Methods.Gdi32.GdiSetBatchLimit(System.UInt32)"/> (1) during the initialization of each thread.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ExtSelectClipRgn(System.IntPtr,System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ExtSelectClipRgn(System.IntPtr,System.IntPtr,System.Int32)"/> function combines the specified region with the current clipping region using the specified mode.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="hrgn">A handle to the region to be selected. This handle must not be NULL unless the RGN_COPY mode is specified.</param>
<param name="fnMode">
<para>The operation to be performed. It must be one of the following values.</para>
<list type="table">
<item>
<term>RGN_AND</term>
<description>
The new clipping region combines the overlapping areas of the current clipping region and the region identified by
<paramref name="hrgn"/>.
</description>
</item>
<item>
<term>RGN_COPY</term>
<description>
The new clipping region is a copy of the region identified by <paramref name="hrgn"/>. This is identical to
<see cref="M:Win32Interop.Methods.Gdi32.SelectClipRgn(System.IntPtr,System.IntPtr)"/>. If the region identified by <paramref name="hrgn"/> is NULL, the new clipping region is the default
clipping region (the default clipping region is a null region).
</description>
</item>
<item>
<term>RGN_DIFF</term>
<description>
The new clipping region combines the areas of the current clipping region with those areas excluded from the region identified by
<paramref name="hrgn"/>.
</description>
</item>
<item>
<term>RGN_OR</term>
<description>
The new clipping region combines the current clipping region and the region identified by <paramref name="hrgn"/>.
</description>
</item>
<item>
<term>RGN_XOR</term>
<description>
The new clipping region combines the current clipping region and the region identified by <paramref name="hrgn"/> but excludes any
overlapping areas.
</description>
</item>
</list>
</param>
<returns>The return value specifies the new clipping region's complexity; it can be one of the following values.</returns>
<remarks>
<para>If an error occurs when this function is called, the previous clipping region for the specified device context is not affected.</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.ExtSelectClipRgn(System.IntPtr,System.IntPtr,System.Int32)"/> function assumes that the coordinates for the specified region are specified in device units.
</para>
<para>
Only a copy of the region identified by the <paramref name="hrgn"/> parameter is used. The region itself can be reused after this call or it
can be deleted.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.EnumICMProfiles(System.IntPtr,Win32Interop.Methods.EnumICMProfilesProcCallback,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.EnumICMProfiles(System.IntPtr,Win32Interop.Methods.EnumICMProfilesProcCallback,System.Int32)"/> function enumerates the different output color profiles that the system supports for a given device context.
</summary>
<param name="hDC">Specifies the device context.</param>
<param name="lpEnumICMProfilesFunc">
Specifies the procedure instance address of a callback function defined by the application. (See <see cref="T:Win32Interop.Methods.EnumICMProfilesProcCallback"/>.)
</param>
<param name="lParam">Data supplied by the application that is passed to the callback function along with the color profile information.</param>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.EnumICMProfiles(System.IntPtr,Win32Interop.Methods.EnumICMProfilesProcCallback,System.Int32)"/> function returns a list of profiles that are associated with a device context (DC), and whose settings
match those of the DC. It is possible for a device context to contain device profiles that are not associated with particular hardware
devices, or device profiles that do not match the settings of the DC. The sRGB profile is an example. The <see cref="M:Win32Interop.Methods.Gdi32.SetICMProfile(System.IntPtr,System.String)"/>
function is used to associate these types of profiles with a DC. The <see cref="M:Win32Interop.Methods.Gdi32.GetICMProfile(System.IntPtr,System.UInt32@,System.Text.StringBuilder)"/> function can be used to retrieve a profile
that is not enumerated by the <see cref="M:Win32Interop.Methods.Gdi32.EnumICMProfiles(System.IntPtr,Win32Interop.Methods.EnumICMProfilesProcCallback,System.Int32)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.DeleteColorSpace(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.DeleteColorSpace(System.IntPtr)"/> function removes and destroys a specified color space.
</summary>
<param name="hColorSpace">Specifies the handle to a color space to delete.</param>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateSolidBrush(System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateSolidBrush(System.UInt32)"/> function creates a logical brush that has the specified solid color.
</summary>
<param name="crColor">
The color of the brush. To create a <see cref="T:Win32Interop.Structs.COLORREF"/> color value, use the RGB macro.
</param>
<returns>
<para>If the function succeeds, the return value identifies a logical brush.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
When you no longer need the HBRUSH object, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>A solid brush is a bitmap that the system uses to paint the interiors of filled shapes.</para>
<para>
After an application creates a brush by calling <see cref="M:Win32Interop.Methods.Gdi32.CreateSolidBrush(System.UInt32)"/>, it can select that brush into any device context by calling
the <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function.
</para>
<para>
To paint with a system color brush, an application should use GetSysColorBrush (nIndex) instead of CreateSolidBrush(GetSysColor(nIndex)),
because <see cref="M:Win32Interop.Methods.User32.GetSysColorBrush(System.Int32)"/> returns a cached brush instead of allocating a new one.
</para>
<para>
ICM: No color management is done at brush creation. However, color management is performed when the brush is selected into an ICM-enabled
device context.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreatePolygonRgn(Win32Interop.Structs.POINT[],System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreatePolygonRgn(Win32Interop.Structs.POINT[],System.Int32,System.Int32)"/> function creates a polygonal region.
</summary>
<param name="lppt">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures that define the vertices of the polygon in logical units. The polygon is presumed
closed. Each vertex can be specified only once.
</param>
<param name="cPoints">The number of points in the array.</param>
<param name="fnPolyFillMode">
<para>The fill mode used to determine which pixels are in the region. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>ALTERNATE</term>
<description>Selects alternate mode (fills area between odd-numbered and even-numbered polygon sides on each scan line).</description>
</item>
<item>
<term>WINDING</term>
<description>Selects winding mode (fills any region with a nonzero winding value).</description>
</item>
</list>
<para>
For more information about these modes, see the <see cref="M:Win32Interop.Methods.Gdi32.SetPolyFillMode(System.IntPtr,System.Int32)"/> function.
</para>
</param>
<returns>
<para>If the function succeeds, the return value is the handle to the region.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
When you no longer need the HRGN object, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>Region coordinates are represented as 27-bit signed integers.</para>
<para>
Regions created by the Create[Shape]Rgn methods (such as <see cref="M:Win32Interop.Methods.Gdi32.CreateRectRgn(System.Int32,System.Int32,System.Int32,System.Int32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.CreatePolygonRgn(Win32Interop.Structs.POINT[],System.Int32,System.Int32)"/>) only include the
interior of the shape; the shape's outline is excluded from the region. This means that any point on a line between two sequential vertices
is not included in the region. If you were to call <see cref="M:Win32Interop.Methods.Gdi32.PtInRegion(System.IntPtr,System.Int32,System.Int32)"/> for such a point, it would return zero as the result.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateHatchBrush(System.Int32,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateHatchBrush(System.Int32,System.UInt32)"/> function creates a logical brush that has the specified hatch pattern and color.
</summary>
<param name="fnStyle">
<para>The hatch style of the brush. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>HS_BDIAGONAL</term>
<description>45-degree upward left-to-right hatch</description>
</item>
<item>
<term>HS_CROSS</term>
<description>Horizontal and vertical crosshatch</description>
</item>
<item>
<term>HS_DIAGCROSS</term>
<description>45-degree crosshatch</description>
</item>
<item>
<term>HS_FDIAGONAL</term>
<description>45-degree downward left-to-right hatch</description>
</item>
<item>
<term>HS_HORIZONTAL</term>
<description>Horizontal hatch</description>
</item>
<item>
<term>HS_VERTICAL</term>
<description>Vertical hatch</description>
</item>
</list>
</param>
<param name="clrref">
The foreground color of the brush that is used for the hatches. To create a <see cref="T:Win32Interop.Structs.COLORREF"/> color value, use the RGB macro.
</param>
<returns>
<para>If the function succeeds, the return value identifies a logical brush.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>A brush is a bitmap that the system uses to paint the interiors of filled shapes.</para>
<para>
After an application creates a brush by calling <see cref="M:Win32Interop.Methods.Gdi32.CreateHatchBrush(System.Int32,System.UInt32)"/>, it can select that brush into any device context by calling
the <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function. It can also call <see cref="M:Win32Interop.Methods.Gdi32.SetBkMode(System.IntPtr,System.Int32)"/> to affect the rendering of the brush.
</para>
<para>
If an application uses a hatch brush to fill the backgrounds of both a parent and a child window with matching color, you must set the brush
origin before painting the background of the child window. You can do this by calling the <see cref="M:Win32Interop.Methods.Gdi32.SetBrushOrgEx(System.IntPtr,System.Int32,System.Int32,Win32Interop.Structs.POINT@)"/> function. Your
application can retrieve the current brush origin by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetBrushOrgEx(System.IntPtr,Win32Interop.Structs.POINT@)"/> function.
</para>
<para>
When you no longer need the brush, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>
ICM: No color is defined at brush creation. However, color management is performed when the brush is selected into an ICM-enabled device
context.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/> function creates a DIB that applications can write to directly. The function gives you a pointer to the
location of the bitmap bit values. You can supply a handle to a file-mapping object that the function will use to create the bitmap, or you can
let the system allocate the memory for the bitmap.
</summary>
<param name="hdc">
A handle to a device context. If the value of <paramref name="iUsage"/> is DIB_PAL_COLORS, the function uses this device context's logical
palette to initialize the DIB colors.
</param>
<param name="pbmi">
A pointer to a <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure that specifies various attributes of the DIB, including the bitmap dimensions and colors.
</param>
<param name="iUsage">
<para>
The type of data contained in the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> array member of the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure pointed to by
<paramref name="pbmi"/> (either logical palette indexes or literal RGB values). The following values are defined.
</para>
<list type="table">
<item>
<term>DIB_PAL_COLORS</term>
<description>
The <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member is an array of 16-bit indexes into the logical palette of the device context specified
by
<paramref name="hdc"/>.
</description>
</item>
<item>
<term>DIB_RGB_COLORS</term>
<description>
The <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure contains an array of literal RGB values.
</description>
</item>
</list>
</param>
<param name="ppvBits">A pointer to a variable that receives a pointer to the location of the DIB bit values.</param>
<param name="hSection">
<para>A handle to a file-mapping object that the function will use to create the DIB. This parameter can be NULL.</para>
<para>
If <paramref name="hSection"/> is not NULL, it must be a handle to a file-mapping object created by calling the CreateFileMapping function
with the PAGE_READWRITE or PAGE_WRITECOPY flag. Read-only DIB sections are not supported. Handles created by other means will cause
<see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/> to fail.
</para>
<para>
If <paramref name="hSection"/> is not NULL, the <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/> function locates the bitmap bit values at offset
<paramref name="dwOffset"/> in the file-mapping object referred to by <paramref name="hSection"/>. An application can later retrieve the
<paramref name="hSection"/> handle by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetObject(System.IntPtr,System.Int32,System.IntPtr)"/> function with the <see cref="T:Win32Interop.Structs.BITMAP"/> returned by
<see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/>.
</para>
<para>
If <paramref name="hSection"/> is NULL, the system allocates memory for the DIB. In this case, the <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/> function
ignores the <paramref name="dwOffset"/> parameter. An application cannot later obtain a handle to this memory. The dshSection member of the
DIBSECTION structure filled in by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetObject(System.IntPtr,System.Int32,System.IntPtr)"/> function will be NULL.
</para>
</param>
<param name="dwOffset">
The offset from the beginning of the file-mapping object referenced by <paramref name="hSection"/> where storage for the bitmap bit values is to
begin. This value is ignored if <paramref name="hSection"/> is NULL. The bitmap bit values are aligned on double word boundaries, so
<paramref name="dwOffset"/> must be a multiple of the size of a DWORD.
</param>
<returns>
<para>
If the function succeeds, the return value is a handle to the newly created DIB, and *<paramref name="ppvBits"/> points to the bitmap bit
values.
</para>
<para>
If the function fails, the return value is NULL, and *<paramref name="ppvBits"/> is NULL.
</para>
<para>This function can return the following value.</para>
</returns>
<remarks>
<para>
As noted above, if <paramref name="hSection"/> is NULL, the system allocates memory for the DIB. The system closes the handle to that memory
when you later delete the DIB by calling the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function. If <paramref name="hSection"/> is not NULL, you must
close the <paramref name="hSection"/> memory handle yourself after calling <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> to delete the bitmap.
</para>
<para>You cannot paste a DIB section from one application into another application.</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/> does not use the <see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/> parameters <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biXPelsPerMeter"/>
or
<see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biYPelsPerMeter"/> and will not provide resolution information in the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure.
</para>
<para>
You need to guarantee that the GDI subsystem has completed any drawing to a bitmap created by <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/> before you draw
to the bitmap yourself. Access to the bitmap must be synchronized. Do this by calling the <see cref="M:Win32Interop.Methods.Gdi32.GdiFlush"/> function. This applies to
any use of the pointer to the bitmap bit values, including passing the pointer in calls to functions such as <see cref="M:Win32Interop.Methods.Gdi32.SetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/>.
</para>
<para>ICM: No color management is done.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CopyEnhMetaFile(System.IntPtr,System.String)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CopyEnhMetaFile(System.IntPtr,System.String)"/> function copies the contents of an enhanced-format metafile to a specified file.
</summary>
<param name="hemfSrc">A handle to the enhanced metafile to be copied.</param>
<param name="lpszFile">A pointer to the name of the destination file. If this parameter is NULL, the source metafile is copied to memory.</param>
<returns>
<para>If the function succeeds, the return value is a handle to the copy of the enhanced metafile.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
Where text arguments must use Unicode characters, use the <see cref="M:Win32Interop.Methods.Gdi32.CopyEnhMetaFile(System.IntPtr,System.String)"/> function as a wide-character function. Where text
arguments must use characters from the Windows character set, use this function as an ANSI function.
</para>
<para>Applications can use metafiles stored in memory for temporary operations.</para>
<para>
When the application no longer needs the enhanced-metafile handle, it should delete the handle by calling the
<see cref="M:Win32Interop.Methods.Gdi32.DeleteEnhMetaFile(System.IntPtr)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CombineTransform(Win32Interop.Structs.XFORM@,Win32Interop.Structs.XFORM@,Win32Interop.Structs.XFORM@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CombineTransform(Win32Interop.Structs.XFORM@,Win32Interop.Structs.XFORM@,Win32Interop.Structs.XFORM@)"/> function concatenates two world-space to page-space transformations.
</summary>
<param name="lpxformResult">
A pointer to an <see cref="T:Win32Interop.Structs.XFORM"/> structure that receives the combined transformation.
</param>
<param name="lpxform1">
A pointer to an <see cref="T:Win32Interop.Structs.XFORM"/> structure that specifies the first transformation.
</param>
<param name="lpxform2">
A pointer to an <see cref="T:Win32Interop.Structs.XFORM"/> structure that specifies the second transformation.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>Applying the combined transformation has the same effect as applying the first transformation and then applying the second transformation.</para>
<para>
The three transformations need not be distinct. For example, <paramref name="lpxform1"/> can point to the same <see cref="T:Win32Interop.Structs.XFORM"/>
structure as <paramref name="lpxformResult"/>.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CloseEnhMetaFile(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CloseEnhMetaFile(System.IntPtr)"/> function closes an enhanced-metafile device context and returns a handle that identifies an enhanced-format
metafile.
</summary>
<param name="hdc">Handle to an enhanced-metafile device context.</param>
<returns>
<para>If the function succeeds, the return value is a handle to an enhanced metafile.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
An application can use the enhanced-metafile handle returned by the <see cref="M:Win32Interop.Methods.Gdi32.CloseEnhMetaFile(System.IntPtr)"/> function to perform the following tasks:
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.AddFontResource(System.String)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.AddFontResource(System.String)"/> function adds the font resource from the specified file to the system font table. The font can
subsequently be used for text output by any application.
</para>
<para>
To mark a font as private or not enumerable, use the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResourceEx(System.String,System.UInt32,System.IntPtr)"/> function.
</para>
</summary>
<param name="lpszFilename">
<para>
A pointer to a null-terminated character string that contains a valid font file name. This parameter can specify any of the following
files.
</para>
<list type="table">
<item>
<term>.fon</term>
<description>Font resource file.</description>
</item>
<item>
<term>.fnt</term>
<description>Raw bitmap font file.</description>
</item>
<item>
<term>.ttf</term>
<description>Raw TrueType file.</description>
</item>
<item>
<term>.ttc</term>
<description>East Asian Windows: TrueType font collection.</description>
</item>
<item>
<term>.fot</term>
<description>TrueType resource file.</description>
</item>
<item>
<term>.otf</term>
<description>PostScript OpenType font.</description>
</item>
<item>
<term>.mmm</term>
<description>Multiple master Type1 font resource file. It must be used with .pfm and .pfb files.</description>
</item>
<item>
<term>.pfb</term>
<description>Type 1 font bits file. It is used with a .pfm file.</description>
</item>
<item>
<term>.pfm</term>
<description>Type 1 font metrics file. It is used with a .pfb file.</description>
</item>
</list>
<para>
To add a font whose information comes from several resource files, have <paramref name="lpszFilename"/> point to a string with the file
names separated by a "|" --for example, abcxxxxx.pfm | abcxxxxx.pfb.
</para>
</param>
<returns>
<para>If the function succeeds, the return value specifies the number of fonts added.</para>
<para>If the function fails, the return value is zero. No extended error information is available.</para>
</returns>
<remarks>
<para>
Any application that adds or removes fonts from the system font table should notify other windows of the change by sending a
<see cref="F:Win32Interop.Enums.WM.WM_FONTCHANGE"/> message to all top-level windows in the operating system. The application should send this message by calling
the <see cref="M:Win32Interop.Methods.User32.SendMessage(System.IntPtr,System.UInt32,System.IntPtr,System.IntPtr)"/> function and setting the hwnd parameter to HWND_BROADCAST.
</para>
<para>
When an application no longer needs a font resource that it loaded by calling the <see cref="M:Win32Interop.Methods.Gdi32.AddFontResource(System.String)"/> function, it must remove
that resource by calling the <see cref="M:Win32Interop.Methods.Gdi32.RemoveFontResource(System.String)"/> function.
</para>
<para>
This function installs the font only for the current session. When the system restarts, the font will not be present. To have the font
installed even after restarting the system, the font must be listed in the registry.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.UnrealizeObject(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.UnrealizeObject(System.IntPtr)"/> function resets the origin of a brush or resets a logical palette. If the <paramref name="hgdiobj"/>
parameter is a handle to a brush, <see cref="M:Win32Interop.Methods.Gdi32.UnrealizeObject(System.IntPtr)"/> directs the system to reset the origin of the brush the next time it is
selected. If the <paramref name="hgdiobj"/> parameter is a handle to a logical palette, <see cref="M:Win32Interop.Methods.Gdi32.UnrealizeObject(System.IntPtr)"/> directs the system to
realize the palette as though it had not previously been realized. The next time the application calls the <see cref="M:Win32Interop.Methods.Gdi32.RealizePalette(System.IntPtr)"/> function
for the specified palette, the system completely remaps the logical palette to the system palette.
</summary>
<param name="hgdiobj">A handle to the logical palette to be reset.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.UnrealizeObject(System.IntPtr)"/> function should not be used with stock objects. For example, the default palette, obtained by calling
<see cref="M:Win32Interop.Methods.Gdi32.GetStockObject(System.Int32)"/> (DEFAULT_PALETTE), is a stock object.
</para>
<para>
A palette identified by <paramref name="hgdiobj"/> can be the currently selected palette of a device context.
</para>
<para>
If <paramref name="hgdiobj"/> is a brush, <see cref="M:Win32Interop.Methods.Gdi32.UnrealizeObject(System.IntPtr)"/> does nothing, and the function returns TRUE. Use
<see cref="M:Win32Interop.Methods.Gdi32.SetBrushOrgEx(System.IntPtr,System.Int32,System.Int32,Win32Interop.Structs.POINT@)"/> to set the origin of a brush.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetPolyFillMode(System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetPolyFillMode(System.IntPtr,System.Int32)"/> function sets the polygon fill mode for functions that fill polygons.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="iPolyFillMode">
<para>The new fill mode. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>ALTERNATE</term>
<description>Selects alternate mode (fills the area between odd-numbered and even-numbered polygon sides on each scan line).</description>
</item>
<item>
<term>WINDING</term>
<description>Selects winding mode (fills any region with a nonzero winding value).</description>
</item>
</list>
</param>
<returns>The return value specifies the previous filling mode. If an error occurs, the return value is zero.</returns>
<remarks>
<para>
In general, the modes differ only in cases where a complex, overlapping polygon must be filled (for example, a five-sided polygon that forms
a five-pointed star with a pentagon in the center). In such cases, ALTERNATE mode fills every other enclosed region within the polygon (that
is, the points of the star), but WINDING mode fills all regions (that is, the points and the pentagon).
</para>
<para>
When the fill mode is ALTERNATE, GDI fills the area between odd-numbered and even-numbered polygon sides on each scan line. That is, GDI
fills the area between the first and second side, between the third and fourth side, and so on.
</para>
<para>
When the fill mode is WINDING, GDI fills any region that has a nonzero winding value. This value is defined as the number of times a pen used
to draw the polygon would go around the region. The direction of each edge of the polygon is important.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetGraphicsMode(System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetGraphicsMode(System.IntPtr,System.Int32)"/> function sets the graphics mode for the specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="iMode">
<para>The graphics mode. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>GM_COMPATIBLE</term>
<description>
Sets the graphics mode that is compatible with 16-bit Windows. This is the default mode. If this value is specified, the application
can only modify the world-to-device transform by calling functions that set window and viewport extents and origins, but not by using
<see cref="M:Win32Interop.Methods.Gdi32.SetWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@)"/> or <see cref="M:Win32Interop.Methods.Gdi32.ModifyWorldTransform(System.IntPtr,Win32Interop.Structs.XFORM@,System.UInt32)"/>; calls to those functions will fail. Examples of functions
that set window and viewport extents and origins are <see cref="M:Win32Interop.Methods.Gdi32.SetViewportExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> and <see cref="M:Win32Interop.Methods.Gdi32.SetWindowExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/>.
</description>
</item>
<item>
<term>GM_ADVANCED</term>
<description>
Sets the advanced graphics mode that allows world transformations. This value must be specified if the application will set or modify
the world transformation for the specified device context. In this mode all graphics, including text output, fully conform to the
world-to-device transformation specified in the device context.
</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value is the old graphics mode.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>There are three areas in which graphics output differs according to the graphics mode:</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetDCBrushColor(System.IntPtr,System.UInt32)">
<summary>
<see cref="M:Win32Interop.Methods.Gdi32.SetDCBrushColor(System.IntPtr,System.UInt32)"/> function sets the current device context (DC) brush color to the specified color value. If the device cannot
represent the specified color value, the color is set to the nearest physical color.
</summary>
<param name="hdc">A handle to the DC.</param>
<param name="crColor">The new brush color.</param>
<returns>
<para>
If the function succeeds, the return value specifies the previous DC brush color as a <see cref="T:Win32Interop.Structs.COLORREF"/> value.
</para>
<para>If the function fails, the return value is CLR_INVALID.</para>
</returns>
<remarks>
<para>
When the stock DC_BRUSH is selected in a DC, all the subsequent drawings will be done using the DC brush color until the stock brush is
deselected. The default DC_BRUSH color is WHITE.
</para>
<para>
The function returns the previous DC_BRUSH color, even if the stock brush DC_BRUSH is not selected in the DC: however, this will not be used
in drawing operations until the stock DC_BRUSH is selected in the DC.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetStockObject(System.Int32)"/> function with an argument of DC_BRUSH or DC_PEN can be used interchangeably with the
<see cref="M:Win32Interop.Methods.Gdi32.SetDCPenColor(System.IntPtr,System.UInt32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.SetDCBrushColor(System.IntPtr,System.UInt32)"/> functions.
</para>
<para>ICM: Color management is performed if ICM is enabled.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetArcDirection(System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetArcDirection(System.IntPtr,System.Int32)"/> sets the drawing direction to be used for arc and rectangle functions.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="ArcDirection">
<para>The new arc direction. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>AD_COUNTERCLOCKWISE</term>
<description>Figures drawn counterclockwise.</description>
</item>
<item>
<term>AD_CLOCKWISE</term>
<description>Figures drawn clockwise.</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value specifies the old arc direction.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>The default direction is counterclockwise.</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.SetArcDirection(System.IntPtr,System.Int32)"/> function specifies the direction in which the following functions draw:
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Structs.RECT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Structs.RECT@)"/> function displays the picture stored in the specified enhanced-format metafile.
</summary>
<param name="hdc">A handle to the device context for the output device on which the picture will appear.</param>
<param name="hemf">A handle to the enhanced metafile.</param>
<param name="lpRect">
A pointer to a <see cref="T:Win32Interop.Structs.RECT"/> structure that contains the coordinates of the bounding rectangle used to display the picture. The coordinates
are specified in logical units.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
When an application calls the <see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Structs.RECT@)"/> function, the system uses the picture frame in the enhanced-metafile header to
map the picture onto the rectangle pointed to by the <paramref name="lpRect"/> parameter. (This picture may be sheared or rotated by setting
the world transform in the output device before calling <see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Structs.RECT@)"/>.) Points along the edges of the rectangle are included
in the picture.
</para>
<para>An enhanced-metafile picture can be clipped by defining the clipping region in the output device before playing the enhanced metafile.</para>
<para>
If an enhanced metafile contains an optional palette, an application can achieve consistent colors by setting up a color palette on the
output device before calling <see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Structs.RECT@)"/>. To retrieve the optional palette, use the
<see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFilePaletteEntries(System.IntPtr,System.UInt32,Win32Interop.Structs.PALETTEENTRY[]@)"/> function.
</para>
<para>
An enhanced metafile can be embedded in a newly created enhanced metafile by calling <see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Structs.RECT@)"/> and playing the source
enhanced metafile into the device context for the new enhanced metafile.
</para>
<para>
The states of the output device context are preserved by this function. Any object created but not deleted in the enhanced metafile is
deleted by this function.
</para>
<para>
To stop this function, an application can call the <see cref="M:Win32Interop.Methods.Gdi32.CancelDC(System.IntPtr)"/> function from another thread to terminate the operation. In this
case, the function returns FALSE.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetTextMetrics(System.IntPtr,Win32Interop.Structs.TEXTMETRIC@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextMetrics(System.IntPtr,Win32Interop.Structs.TEXTMETRIC@)"/> function fills the specified buffer with the metrics for the currently selected font.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lptm">
A pointer to the <see cref="T:Win32Interop.Structs.TEXTMETRIC"/> structure that receives the text metrics.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
To determine whether a font is a TrueType font, first select it into a DC, then call <see cref="M:Win32Interop.Methods.Gdi32.GetTextMetrics(System.IntPtr,Win32Interop.Structs.TEXTMETRIC@)"/>, and then check for
TMPF_TRUETYPE in TEXTMETRIC.tmPitchAndFamily. Note that <see cref="M:Win32Interop.Methods.User32.GetDC(System.IntPtr)"/> returns an uninitialized DC, which has "System" (a bitmap
font) as the default font; thus the need to select a font into the DC.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetPolyFillMode(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetPolyFillMode(System.IntPtr)"/> function retrieves the current polygon fill mode.
</summary>
<param name="hdc">Handle to the device context.</param>
<returns>If the function succeeds, the return value specifies the polygon fill mode, which can be one of the following values.</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetNearestColor(System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetNearestColor(System.IntPtr,System.UInt32)"/> function retrieves a color value identifying a color from the system palette that will be displayed when the
specified color value is used.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="crColor">
A color value that identifies a requested color. To create a <see cref="T:Win32Interop.Structs.COLORREF"/> color value, use the RGB macro.
</param>
<returns>
<para>If the function succeeds, the return value identifies a color from the system palette that corresponds to the given color value.</para>
<para>If the function fails, the return value is CLR_INVALID.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetGraphicsMode(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetGraphicsMode(System.IntPtr)"/> function retrieves the current graphics mode for the specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<returns>If the function succeeds, the return value is the current graphics mode. It can be one of the following values.</returns>
<remarks>
An application can set the graphics mode for a device context by calling the <see cref="M:Win32Interop.Methods.Gdi32.SetGraphicsMode(System.IntPtr,System.Int32)"/> function.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetEnhMetaFile(System.String)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFile(System.String)"/> function creates a handle that identifies the enhanced-format metafile stored in the specified file.
</summary>
<param name="lpszMetaFile">A pointer to a null-terminated string that specifies the name of an enhanced metafile.</param>
<returns>
<para>If the function succeeds, the return value is a handle to the enhanced metafile.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
When the application no longer needs an enhanced-metafile handle, it should delete the handle by calling the <see cref="M:Win32Interop.Methods.Gdi32.DeleteEnhMetaFile(System.IntPtr)"/>
function.
</para>
<para>
A Windows-format metafile must be converted to the enhanced format before it can be processed by the <see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFile(System.String)"/> function.
To convert the file, use the <see cref="M:Win32Interop.Methods.Gdi32.SetWinMetaFileBits(System.UInt32,System.IntPtr,System.IntPtr,Win32Interop.Structs.METAFILEPICT@)"/> function.
</para>
<para>
Where text arguments must use Unicode characters, use this function as a wide-character function. Where text arguments must use characters
from the Windows character set, use this function as an ANSI function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetDCBrushColor(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetDCBrushColor(System.IntPtr)"/> function retrieves the current brush color for the specified device context (DC).
</summary>
<param name="hdc">A handle to the DC whose brush color is to be returned.</param>
<returns>
<para>
If the function succeeds, the return value is the <see cref="T:Win32Interop.Structs.COLORREF"/> value for the current DC brush color.
</para>
<para>If the function fails, the return value is CLR_INVALID.</para>
</returns>
<remarks>
<para>
For information on setting the brush color, see <see cref="M:Win32Interop.Methods.Gdi32.SetDCBrushColor(System.IntPtr,System.UInt32)"/>.
</para>
<para>ICM: Color management is performed if ICM is enabled.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetCharWidth32(System.IntPtr,System.UInt32,System.UInt32,System.Int32[]@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetCharWidth32(System.IntPtr,System.UInt32,System.UInt32,System.Int32[]@)"/> function retrieves the widths, in logical coordinates, of consecutive characters in a specified range from the
current font.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="iFirstChar">The first character in the group of consecutive characters.</param>
<param name="iLastChar">The last character in the group of consecutive characters, which must not precede the specified first character.</param>
<param name="lpBuffer">A pointer to a buffer that receives the character widths, in logical coordinates.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.GetCharWidth32(System.IntPtr,System.UInt32,System.UInt32,System.Int32[]@)"/> cannot be used on TrueType fonts. To retrieve character widths for TrueType fonts, use
<see cref="M:Win32Interop.Methods.Gdi32.GetCharABCWidths(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.ABC@)"/>.
</para>
<para>
The range is inclusive; that is, the returned widths include the widths of the characters specified by the <paramref name="iFirstChar"/> and
<paramref name="iLastChar"/> parameters.
</para>
<para>If a character does not exist in the current font, it is assigned the width of the default character.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetArcDirection(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetArcDirection(System.IntPtr)"/> function retrieves the current arc direction for the specified device context. Arc and rectangle functions use
the arc direction.
</summary>
<param name="hdc">Handle to the device context.</param>
<returns>The return value specifies the current arc direction; it can be any one of the following values:</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ExtCreateRegion(Win32Interop.Structs.XFORM@,System.UInt32,Win32Interop.Structs.RGNDATA@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ExtCreateRegion(Win32Interop.Structs.XFORM@,System.UInt32,Win32Interop.Structs.RGNDATA@)"/> function creates a region from the specified region and transformation data.
</summary>
<param name="lpXform">
A pointer to an <see cref="T:Win32Interop.Structs.XFORM"/> structure that defines the transformation to be performed on the region. If this pointer is NULL, the
identity transformation is used.
</param>
<param name="nCount">
The number of bytes pointed to by <paramref name="lpRgnData"/>.
</param>
<param name="lpRgnData">
A pointer to a <see cref="T:Win32Interop.Structs.RGNDATA"/> structure that contains the region data in logical units.
</param>
<returns>
<para>If the function succeeds, the return value is the value of the region.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>Region coordinates are represented as 27-bit signed integers.</para>
<para>
An application can retrieve data for a region by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetRegionData(System.IntPtr,System.UInt32,System.IntPtr)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ExcludeClipRect(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ExcludeClipRect(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32)"/> function creates a new clipping region that consists of the existing clipping region minus the specified
rectangle.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nLeftRect">The x-coordinate, in logical units, of the upper-left corner of the rectangle.</param>
<param name="nTopRect">The y-coordinate, in logical units, of the upper-left corner of the rectangle.</param>
<param name="nRightRect">The x-coordinate, in logical units, of the lower-right corner of the rectangle.</param>
<param name="nBottomRect">The y-coordinate, in logical units, of the lower-right corner of the rectangle.</param>
<returns>The return value specifies the new clipping region's complexity; it can be one of the following values.</returns>
<remarks>The lower and right edges of the specified rectangle are not excluded from the clipping region.</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.EnumEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnhMetaFileProc,System.IntPtr,Win32Interop.Structs.RECT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.EnumEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnhMetaFileProc,System.IntPtr,Win32Interop.Structs.RECT@)"/> function enumerates the records within an enhanced-format metafile by retrieving each record and passing it to
the specified callback function. The application-supplied callback function processes each record as required. The enumeration continues until
the last record is processed or when the callback function returns zero.
</summary>
<param name="hdc">A handle to a device context. This handle is passed to the callback function.</param>
<param name="hemf">A handle to an enhanced metafile.</param>
<param name="lpEnhMetaFunc">
A pointer to the application-supplied callback function. For more information, see the <see cref="T:Win32Interop.Methods.EnhMetaFileProc"/> function.
</param>
<param name="lpData">A pointer to optional callback-function data.</param>
<param name="lpRect">
A pointer to a <see cref="T:Win32Interop.Structs.RECT"/> structure that specifies the coordinates, in logical units, of the picture's upper-left and lower-right
corners.
</param>
<returns>
<para>If the callback function successfully enumerates all the records in the enhanced metafile, the return value is nonzero.</para>
<para>If the callback function does not successfully enumerate all the records in the enhanced metafile, the return value is zero.</para>
</returns>
<remarks>
<para>
Points along the edge of the rectangle pointed to by the <paramref name="lpRect"/> parameter are included in the picture. If the
<paramref name="hdc"/> parameter is NULL, the system ignores <paramref name="lpRect"/>.
</para>
<para>
If the callback function calls the <see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFileRecord(System.IntPtr,Win32Interop.Structs.HANDLETABLE[],Win32Interop.Structs.ENHMETARECORD@,System.UInt32)"/> function, <paramref name="hdc"/> must identify a valid device
context. The system uses the device context's transformation and mapping mode to transform the picture displayed by the
<see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFileRecord(System.IntPtr,Win32Interop.Structs.HANDLETABLE[],Win32Interop.Structs.ENHMETARECORD@,System.UInt32)"/> function.
</para>
<para>
You can use the <see cref="M:Win32Interop.Methods.Gdi32.EnumEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnhMetaFileProc,System.IntPtr,Win32Interop.Structs.RECT@)"/> function to embed one enhanced-metafile within another.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateMetaFile(System.String)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateMetaFile(System.String)"/> function creates a device context for a Windows-format metafile.
</para>
<para>
Note: This function is provided only for compatibility with Windows-format metafiles. Enhanced-format metafiles provide superior
functionality and are recommended for new applications. The corresponding function for an enhanced-format metafile is
<see cref="M:Win32Interop.Methods.Gdi32.CreateEnhMetaFile(System.IntPtr,System.String,Win32Interop.Structs.RECT@,System.String)"/>.
</para>
</summary>
<param name="lpszFile">
A pointer to the file name for the Windows-format metafile to be created. If this parameter is NULL, the Windows-format metafile is memory based
and its contents are lost when it is deleted by using the <see cref="M:Win32Interop.Methods.Gdi32.DeleteMetaFile(System.IntPtr)"/> function.
</param>
<returns>
<para>If the function succeeds, the return value is a handle to the device context for the Windows-format metafile.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
Where text arguments must use Unicode characters, use the <see cref="M:Win32Interop.Methods.Gdi32.CreateMetaFile(System.String)"/> function as a wide-character function. Where text
arguments must use characters from the Windows character set, use this function as an ANSI function.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.CreateMetaFile(System.String)"/> is a Windows-format metafile function. This function supports only 16-bit Windows-based applications, which are
listed in Windows-Format Metafiles. It does not record or play back GDI functions such as <see cref="M:Win32Interop.Methods.Gdi32.PolyBezier(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)"/>, which were not part of
16-bit Windows.
</para>
<para>
The device context created by this function can be used to record GDI output functions in a Windows-format metafile. It cannot be used with
GDI query functions such as <see cref="M:Win32Interop.Methods.Gdi32.GetTextColor(System.IntPtr)"/>. When the device context is used with a GDI output function, the return value of that
function becomes TRUE if the function is recorded and FALSE otherwise. When an object is selected by using the <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/>
function, only a copy of the object is recorded. The object still belongs to the application.
</para>
<para>
To create a scalable Windows-format metafile, record the graphics output in the MM_ANISOTROPIC mapping mode. The file cannot contain
functions that modify the viewport origin and extents, nor can it contain device-dependent functions such as the <see cref="M:Win32Interop.Methods.Gdi32.SelectClipRgn(System.IntPtr,System.IntPtr)"/>
function. Once created, the Windows metafile can be scaled and rendered to any output device-format by defining the viewport origin and
extents of the picture before playing it.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetWindowOrgEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetWindowOrgEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function specifies which window point maps to the viewport origin (0,0).
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="X">The x-coordinate, in logical units, of the new window origin.</param>
<param name="Y">The y-coordinate, in logical units, of the new window origin.</param>
<param name="lpPoint">
A pointer to a <see cref="T:Win32Interop.Structs.POINT"/> structure that receives the previous origin of the window, in logical units. If <paramref name="lpPoint"/>
is NULL, this parameter is not used.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
This helps define the mapping from the logical coordinate space (also known as a window) to the device coordinate space (the viewport).
<see cref="M:Win32Interop.Methods.Gdi32.SetWindowOrgEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> specifies which logical point maps to the device point (0,0). It has the effect of shifting the axes so that the
logical point (0,0) no longer refers to the upper-left corner.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetWindowExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetWindowExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function sets the horizontal and vertical extents of the window for a device context by using the specified
values.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nXExtent">The window's horizontal extent in logical units.</param>
<param name="nYExtent">The window's vertical extent in logical units.</param>
<param name="lpSize">
A pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure that receives the previous window extents, in logical units. If <paramref name="lpSize"/> is NULL,
this parameter is not used.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The window refers to the logical coordinate system of the page space. The extent is the maximum value of an axis. This function sets the
maximum values for the horizontal and vertical axes of the window (in logical coordinates). When mapping between page space and device space,
<see cref="M:Win32Interop.Methods.Gdi32.SetViewportExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> and <see cref="M:Win32Interop.Methods.Gdi32.SetWindowExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> determine the scaling factor between the window and the viewport. For more
information, see Transformation of Coordinate Spaces.
</para>
<para>
When the following mapping modes are set, calls to the <see cref="M:Win32Interop.Methods.Gdi32.SetWindowExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> and <see cref="M:Win32Interop.Methods.Gdi32.SetViewportExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> functions are
ignored:
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetPixelFormat(System.IntPtr,System.Int32,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)">
<summary>
<para>Applies to: desktop apps only</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.SetPixelFormat(System.IntPtr,System.Int32,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)"/> function sets the pixel format of the specified device context to the format specified by the
<paramref name="iPixelFormat"/> index.
</para>
</summary>
<param name="hdc">Specifies the device context whose pixel format the function attempts to set.</param>
<param name="iPixelFormat">
Index that identifies the pixel format to set. The various pixel formats supported by a device context are identified by
one-based indexes.
</param>
<param name="ppfd">
Pointer to a <see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/> structure that contains the logical pixel format specification. The system's metafile component
uses this structure to record the logical pixel format specification. The structure has no other effect upon the behavior of the
<see cref="M:Win32Interop.Methods.Gdi32.SetPixelFormat(System.IntPtr,System.Int32,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)"/> function.
</param>
<returns>
<para>If the function succeeds, the return value is TRUE.</para>
<para>If the function fails, the return value is FALSE. To get extended error information, call GetLastError.</para>
</returns>
<remarks>
<para>
If <paramref name="hdc"/> references a window, calling the <see cref="M:Win32Interop.Methods.Gdi32.SetPixelFormat(System.IntPtr,System.Int32,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)"/> function also changes the pixel format of the
window. Setting the pixel format of a window more than once can lead to significant complications for the Window Manager and for multithread
applications, so it is not allowed. An application can only set the pixel format of a window one time. Once a window's pixel format is set,
it cannot be changed.
</para>
<para>
You should select a pixel format in the device context before calling the wglCreateContext function. The wglCreateContext function creates a
rendering context for drawing on the device in the selected pixel format of the device context.
</para>
<para>
An OpenGL window has its own pixel format. Because of this, only device contexts retrieved for the client area of an OpenGL window are
allowed to draw into the window. As a result, an OpenGL window should be created with the WS_CLIPCHILDREN and WS_CLIPSIBLINGS styles.
Additionally, the window class attribute should not include the CS_PARENTDC style.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetMapperFlags(System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetMapperFlags(System.IntPtr,System.UInt32)"/> function alters the algorithm the font mapper uses when it maps logical fonts to physical fonts.
</summary>
<param name="hdc">A handle to the device context that contains the font-mapper flag.</param>
<param name="dwFlag">
Specifies whether the font mapper should attempt to match a font's aspect ratio to the current device's aspect ratio. If bit zero is set, the
mapper selects only matching fonts.
</param>
<returns>
<para>If the function succeeds, the return value is the previous value of the font-mapper flag.</para>
<para>If the function fails, the return value is GDI_ERROR.</para>
</returns>
<remarks>
<para>
If the <paramref name="dwFlag"/> parameter is set and no matching fonts exist, Windows chooses a new aspect ratio and retrieves a font that
matches this ratio.
</para>
<para>
The remaining bits of the <paramref name="dwFlag"/> parameter must be zero.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetICMProfile(System.IntPtr,System.String)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetICMProfile(System.IntPtr,System.String)"/> function sets a specified color profile as the output profile for a specified device context (DC).
</summary>
<param name="hDC">Specifies a device context in which to set the color profile.</param>
<param name="lpFileName">Specifies the path name of the color profile to be set.</param>
<remarks>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.SetICMProfile(System.IntPtr,System.String)"/> associates a color profile with a device context. It becomes the output profile for that device context. The
color profile does not have to be associated with any particular device. Device-independent profiles such as sRGB can also be used. If the
color profile is not associated with a hardware device, it will be returned by <see cref="M:Win32Interop.Methods.Gdi32.GetICMProfile(System.IntPtr,System.UInt32@,System.Text.StringBuilder)"/>, but not by
<see cref="M:Win32Interop.Methods.Gdi32.EnumICMProfiles(System.IntPtr,Win32Interop.Methods.EnumICMProfilesProcCallback,System.Int32)"/>.
</para>
<para>
Note that under Windows 95 or later, the PostScript device driver for printers assumes a CMYK color model. Therefore, all PostScript printers
must use a CMYK color profile. Windows 2000 does not have this limitation.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.SetICMProfile(System.IntPtr,System.String)"/> supports only RGB profiles in compatible DCs.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SelectClipPath(System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SelectClipPath(System.IntPtr,System.Int32)"/> function selects the current path as a clipping region for a device context, combining the new region with any
existing clipping region using the specified mode.
</summary>
<param name="hdc">A handle to the device context of the path.</param>
<param name="iMode">
<para>The way to use the path. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>RGN_AND</term>
<description>The new clipping region includes the intersection (overlapping areas) of the current clipping region and the current path.</description>
</item>
<item>
<term>RGN_COPY</term>
<description>The new clipping region is the current path.</description>
</item>
<item>
<term>RGN_DIFF</term>
<description>The new clipping region includes the areas of the current clipping region with those of the current path excluded.</description>
</item>
<item>
<term>RGN_OR</term>
<description>The new clipping region includes the union (combined areas) of the current clipping region and the current path.</description>
</item>
<item>
<term>RGN_XOR</term>
<description>
The new clipping region includes the union of the current clipping region and the current path but without the overlapping
areas.
</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The device context identified by the <paramref name="hdc"/> parameter must contain a closed path.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.RealizePalette(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.RealizePalette(System.IntPtr)"/> function maps palette entries from the current logical palette to the system palette.
</summary>
<param name="hdc">A handle to the device context into which a logical palette has been selected.</param>
<returns>
<para>If the function succeeds, the return value is the number of entries in the logical palette mapped to the system palette.</para>
<para>If the function fails, the return value is GDI_ERROR.</para>
</returns>
<remarks>
<para>
An application can determine whether a device supports palette operations by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function and specifying
the RASTERCAPS constant.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.RealizePalette(System.IntPtr)"/> function modifies the palette for the device associated with the specified device context. If the device
context is a memory DC, the color table for the bitmap selected into the DC is modified. If the device context is a display DC, the physical
palette for that device is modified.
</para>
<para>
A logical palette is a buffer between color-intensive applications and the system, allowing these applications to use as many colors as
needed without interfering with colors displayed by other windows.
</para>
<para>
When an application's window has the focus and it calls the <see cref="M:Win32Interop.Methods.Gdi32.RealizePalette(System.IntPtr)"/> function, the system attempts to realize as many of
the requested colors as possible. The same is also true for applications with inactive windows.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetWindowOrgEx(System.IntPtr,Win32Interop.Structs.POINT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetWindowOrgEx(System.IntPtr,Win32Interop.Structs.POINT@)"/> function retrieves the x-coordinates and y-coordinates of the window origin for the specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpPoint">
A pointer to a <see cref="T:Win32Interop.Structs.POINT"/> structure that receives the coordinates, in logical units, of the window origin.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetWindowExtEx(System.IntPtr,Win32Interop.Structs.SIZE@)">
<summary>This function retrieves the x-extent and y-extent of the window for the specified device context.</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpSize">
A pointer to a <see cref="T:Win32Interop.Structs.SIZE"/> structure that receives the x- and y-extents in page-space units, that is, logical units.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetTextCharset(System.IntPtr)">
<summary>
<para>Retrieves a character set identifier for the font that is currently selected into a specified device context.</para>
<para>
A call to this function is equivalent to a call to <see cref="M:Win32Interop.Methods.Gdi32.GetTextCharsetInfo(System.IntPtr,Win32Interop.Structs.FONTSIGNATURE@,System.UInt32)"/> passing NULL for the data buffer.
</para>
</summary>
<param name="hdc">Handle to a device context. The function obtains a character set identifier for the font that is selected into this device context.</param>
<returns>
If successful, returns a value identifying the character set of the font that is currently selected into the specified device context. The
following character set identifiers are defined:
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetStockObject(System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetStockObject(System.Int32)"/> function retrieves a handle to one of the stock pens, brushes, fonts, or palettes.
</summary>
<param name="fnObject">
<para>The type of stock object. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>BLACK_BRUSH</term>
<description>Black brush.</description>
</item>
<item>
<term>DKGRAY_BRUSH</term>
<description>Dark gray brush.</description>
</item>
<item>
<term>DC_BRUSH</term>
<description>
Solid color brush. The default color is white. The color can be changed by using the <see cref="M:Win32Interop.Methods.Gdi32.SetDCBrushColor(System.IntPtr,System.UInt32)"/> function. For
more information, see the Remarks section.
</description>
</item>
<item>
<term>GRAY_BRUSH</term>
<description>Gray brush.</description>
</item>
<item>
<term>HOLLOW_BRUSH</term>
<description>Hollow brush (equivalent to NULL_BRUSH).</description>
</item>
<item>
<term>LTGRAY_BRUSH</term>
<description>Light gray brush.</description>
</item>
<item>
<term>NULL_BRUSH</term>
<description>Null brush (equivalent to HOLLOW_BRUSH).</description>
</item>
<item>
<term>WHITE_BRUSH</term>
<description>White brush.</description>
</item>
<item>
<term>BLACK_PEN</term>
<description>Black pen.</description>
</item>
<item>
<term>DC_PEN</term>
<description>
Solid pen color. The default color is white. The color can be changed by using the <see cref="M:Win32Interop.Methods.Gdi32.SetDCPenColor(System.IntPtr,System.UInt32)"/> function. For more
information, see the Remarks section.
</description>
</item>
<item>
<term>NULL_PEN</term>
<description>Null pen. The null pen draws nothing.</description>
</item>
<item>
<term>WHITE_PEN</term>
<description>White pen.</description>
</item>
<item>
<term>ANSI_FIXED_FONT</term>
<description>Windows fixed-pitch (monospace) system font.</description>
</item>
<item>
<term>ANSI_VAR_FONT</term>
<description>Windows variable-pitch (proportional space) system font.</description>
</item>
<item>
<term>DEVICE_DEFAULT_FONT</term>
<description>Device-dependent font.</description>
</item>
<item>
<term>DEFAULT_GUI_FONT</term>
<description>
<para>
Default font for user interface objects such as menus and dialog boxes. It is not recommended that you use DEFAULT_GUI_FONT or
SYSTEM_FONT to obtain the font used by dialogs and windows; for more information, see the remarks section.
</para>
<para>The default font is Tahoma.</para>
</description>
</item>
<item>
<term>OEM_FIXED_FONT</term>
<description>Original equipment manufacturer (OEM) dependent fixed-pitch (monospace) font.</description>
</item>
<item>
<term>SYSTEM_FONT</term>
<description>
<para>
System font. By default, the system uses the system font to draw menus, dialog box controls, and text. It is not recommended that
you use DEFAULT_GUI_FONT or SYSTEM_FONT to obtain the font used by dialogs and windows; for more information, see the remarks
section.
</para>
<para>The default system font is Tahoma.</para>
</description>
</item>
<item>
<term>SYSTEM_FIXED_FONT</term>
<description>
Fixed-pitch (monospace) system font. This stock object is provided only for compatibility with 16-bit Windows versions
earlier than 3.0.
</description>
</item>
<item>
<term>DEFAULT_PALETTE</term>
<description>Default palette. This palette consists of the static colors in the system palette.</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value is a handle to the requested logical object.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
It is not recommended that you employ this method to obtain the current font used by dialogs and windows. Instead, use the
<see cref="M:Win32Interop.Methods.User32.SystemParametersInfo(System.UInt32,System.UInt32,System.IntPtr,System.UInt32)"/> function with the SPI_GETNONCLIENTMETRICS parameter to retrieve the current font.
<see cref="M:Win32Interop.Methods.User32.SystemParametersInfo(System.UInt32,System.UInt32,System.IntPtr,System.UInt32)"/> will take into account the current theme and provides font information for captions, menus, and
message dialogs.
</para>
<para>
Use the DKGRAY_BRUSH, GRAY_BRUSH, and LTGRAY_BRUSH stock objects only in windows with the CS_HREDRAW and CS_VREDRAW styles. Using a gray
stock brush in any other style of window can lead to misalignment of brush patterns after a window is moved or sized. The origins of stock
brushes cannot be adjusted.
</para>
<para>The HOLLOW_BRUSH and NULL_BRUSH stock objects are equivalent.</para>
<para>
It is not necessary (but it is not harmful) to delete stock objects by calling <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/>.
</para>
<para>
Both DC_BRUSH and DC_PEN can be used interchangeably with other stock objects like BLACK_BRUSH and BLACK_PEN. For information on retrieving
the current pen or brush color, see <see cref="M:Win32Interop.Methods.Gdi32.GetDCBrushColor(System.IntPtr)"/> and <see cref="M:Win32Interop.Methods.Gdi32.GetDCPenColor(System.IntPtr)"/>. See Setting the Pen or Brush Color for
an example of setting colors. The <see cref="M:Win32Interop.Methods.Gdi32.GetStockObject(System.Int32)"/> function with an argument of DC_BRUSH or DC_PEN can be used interchangeably
with the <see cref="M:Win32Interop.Methods.Gdi32.SetDCPenColor(System.IntPtr,System.UInt32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.SetDCBrushColor(System.IntPtr,System.UInt32)"/> functions.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetPixelFormat(System.IntPtr)">
<summary>
<para>Applies to: desktop apps only</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetPixelFormat(System.IntPtr)"/> function obtains the index of the currently selected pixel format of the specified device context.
</para>
</summary>
<param name="hdc">Specifies the device context of the currently selected pixel format index returned by the function.</param>
<returns>
<para>
If the function succeeds, the return value is the currently selected pixel format index of the specified device context. This is a positive,
one-based index value.
</para>
<para>If the function fails, the return value is zero. To get extended error information, call GetLastError.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetICMProfile(System.IntPtr,System.UInt32@,System.Text.StringBuilder)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetICMProfile(System.IntPtr,System.UInt32@,System.Text.StringBuilder)"/> function retrieves the file name of the current output color profile for a specified device context.
</summary>
<param name="hDC">Specifies a device context from which to retrieve the color profile.</param>
<param name="lpcbName">
Pointer to a DWORD that contains the size of the buffer pointed to by <paramref name="lpszFilename"/>. For the ANSI version of this function,
the size is in bytes. For the Unicode version, the size is in WCHARs. If this function is successful, on return this parameter contains the size
of the buffer actually used. However, if the buffer is not large enough, this function returns FALSE. In this case, the GetLastError function
returns ERROR_INSUFFICIENT_BUFFER and the DWORD pointed to by this parameter contains the size needed for the <paramref name="lpszFilename"/>
buffer.
</param>
<param name="lpszFilename">Points to the buffer that receives the path name of the profile.</param>
<remarks>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.GetICMProfile(System.IntPtr,System.UInt32@,System.Text.StringBuilder)"/> obtains the file name of the current output profile regardless of whether or not color management is enabled for
the device context.
</para>
<para>
Given a device context, <see cref="M:Win32Interop.Methods.Gdi32.GetICMProfile(System.IntPtr,System.UInt32@,System.Text.StringBuilder)"/> will output, through the parameter <paramref name="lpszFilename"/>, the path name of
the file containing the color profile currently being used by the device context. It will also output, through the parameter
<paramref name="lpcbName"/>, the length of the string containing the path name.
</para>
<para>
It is possible that the profile name returned by <see cref="M:Win32Interop.Methods.Gdi32.GetICMProfile(System.IntPtr,System.UInt32@,System.Text.StringBuilder)"/> will not be in the list of profiles returned by
<see cref="M:Win32Interop.Methods.Gdi32.EnumICMProfiles(System.IntPtr,Win32Interop.Methods.EnumICMProfilesProcCallback,System.Int32)"/>. The <see cref="M:Win32Interop.Methods.Gdi32.EnumICMProfiles(System.IntPtr,Win32Interop.Methods.EnumICMProfilesProcCallback,System.Int32)"/> function returns all color space profiles that are associated with a
device context (DC) whose settings match that of the DC. If the <see cref="M:Win32Interop.Methods.Gdi32.SetICMProfile(System.IntPtr,System.String)"/> function is used to set the current profile, a
profile may be associated with the DC that does not match its settings. For instance, the <see cref="M:Win32Interop.Methods.Gdi32.SetICMProfile(System.IntPtr,System.String)"/> function can be used
to associate the device-independent sRGB profile with a DC. This profile will be used as the current WCS profile for that DC, and calls to
<see cref="M:Win32Interop.Methods.Gdi32.GetICMProfile(System.IntPtr,System.UInt32@,System.Text.StringBuilder)"/> will return its file name. However, the profile will not appear in the list of profiles that is returned from
<see cref="M:Win32Interop.Methods.Gdi32.EnumICMProfiles(System.IntPtr,Win32Interop.Methods.EnumICMProfilesProcCallback,System.Int32)"/>.
</para>
<para>
If this function is called before any calls to the <see cref="M:Win32Interop.Methods.Gdi32.SetICMProfile(System.IntPtr,System.String)"/> function, it can be used to get the default profile for a
device context.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.DeleteMetaFile(System.IntPtr)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.DeleteMetaFile(System.IntPtr)"/> function deletes a Windows-format metafile or Windows-format metafile handle.
</para>
<para>
Note: This function is provided only for compatibility with Windows-format metafiles. Enhanced-format metafiles provide superior
functionality and are recommended for new applications. The corresponding function for an enhanced-format metafile is
<see cref="M:Win32Interop.Methods.Gdi32.DeleteEnhMetaFile(System.IntPtr)"/>.
</para>
</summary>
<param name="hmf">A handle to a Windows-format metafile.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
If the metafile identified by the <paramref name="hmf"/> parameter is stored in memory (rather than on a disk), its content is lost when it is
deleted by using the <see cref="M:Win32Interop.Methods.Gdi32.DeleteMetaFile(System.IntPtr)"/> function.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateDIBitmap(System.IntPtr,Win32Interop.Structs.BITMAPINFOHEADER,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBitmap(System.IntPtr,Win32Interop.Structs.BITMAPINFOHEADER,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> function creates a compatible bitmap (DDB) from a DIB and, optionally, sets the bitmap bits.
</summary>
<param name="hdc">A handle to a device context.</param>
<param name="lpbmih">
<para>A pointer to a bitmap information header structure, <see cref="T:Win32Interop.Structs.BITMAPV5HEADER"/>.</para>
<para>
If <paramref name="fdwInit"/> is CBM_INIT, the function uses the bitmap information header structure to obtain the desired width and height
of the bitmap as well as other information. Note that a positive value for the height indicates a bottom-up DIB while a negative value for
the height indicates a top-down DIB. Calling <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBitmap(System.IntPtr,Win32Interop.Structs.BITMAPINFOHEADER,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> with <paramref name="fdwInit"/> as CBM_INIT is equivalent to
calling the <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/> function to create a DDB in the format of the device and then calling the
<see cref="M:Win32Interop.Methods.Gdi32.SetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> function to translate the DIB bits to the DDB.
</para>
</param>
<param name="fdwInit">
<para>Specifies how the system initializes the bitmap bits. The following value is defined.</para>
<list type="table">
<item>
<term>CBM_INIT</term>
<description>
<para>
If this flag is set, the system uses the data pointed to by the <paramref name="lpbInit"/> and <paramref name="lpbmi"/>
parameters to initialize the bitmap bits.
</para>
<para>If this flag is clear, the data pointed to by those parameters is not used.</para>
</description>
</item>
</list>
<para>
If <paramref name="fdwInit"/> is zero, the system does not initialize the bitmap bits.
</para>
</param>
<param name="lpbInit">
A pointer to an array of bytes containing the initial bitmap data. The format of the data depends on the
<see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount"/> member of the
<see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure to which the <paramref name="lpbmi"/> parameter points.
</param>
<param name="lpbmi">
A pointer to a <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure that describes the dimensions and color format of the array pointed to by the
<paramref name="lpbInit"/> parameter.
</param>
<param name="fuUsage">
<para>
Specifies whether the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure was initialized and, if so,
whether
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> contains explicit red, green, blue (RGB) values or palette indexes. The <paramref name="fuUsage"/>
parameter must be one of the following values.
</para>
<list type="table">
<item>
<term>DIB_PAL_COLORS</term>
<description>
A color table is provided and consists of an array of 16-bit indexes into the logical palette of the device context into which the
bitmap is to be selected.
</description>
</item>
<item>
<term>DIB_RGB_COLORS</term>
<description>A color table is provided and contains literal RGB values.</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value is a handle to the compatible bitmap.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
The DDB that is created will be whatever bit depth your reference DC is. To create a bitmap that is of different bit depth, use
<see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/>.
</para>
<para>
For a device to reach optimal bitmap-drawing speed, specify <paramref name="fdwInit"/> as CBM_INIT. Then, use the same color depth DIB as
the video mode. When the video is running 4- or 8-bpp, use DIB_PAL_COLORS.
</para>
<para>
The CBM_CREATDIB flag for the <paramref name="fdwInit"/> parameter is no longer supported.
</para>
<para>
When you no longer need the bitmap, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>ICM: No color management is performed. The contents of the resulting bitmap are not color matched after the bitmap has been created.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.AnimatePalette(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[])">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.AnimatePalette(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[])"/> function replaces entries in the specified logical palette.
</summary>
<param name="hpal">A handle to the logical palette.</param>
<param name="iStartIndex">The first logical palette entry to be replaced.</param>
<param name="cEntries">The number of entries to be replaced.</param>
<param name="ppe">
A pointer to the first member in an array of <see cref="T:Win32Interop.Structs.PALETTEENTRY"/> structures used to replace the current entries.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
An application can determine whether a device supports palette operations by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function and specifying
the RASTERCAPS constant.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.AnimatePalette(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[])"/> function only changes entries with the PC_RESERVED flag set in the corresponding
<see cref="F:Win32Interop.Structs.LOGPALETTE.palPalEntry"/>
member of the <see cref="T:Win32Interop.Structs.LOGPALETTE"/> structure.
</para>
<para>If the given palette is associated with the active window, the colors in the palette are replaced immediately.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/> function copies the color data for a rectangle of pixels in a DIB, JPEG, or PNG image to the specified
destination rectangle. If the destination rectangle is larger than the source rectangle, this function stretches the rows and columns of color
data to fit the destination rectangle. If the destination rectangle is smaller than the source rectangle, this function compresses the rows and
columns by using the specified raster operation.
</summary>
<param name="hdc">A handle to the destination device context.</param>
<param name="XDest">The x-coordinate, in logical units, of the upper-left corner of the destination rectangle.</param>
<param name="YDest">The y-coordinate, in logical units, of the upper-left corner of the destination rectangle.</param>
<param name="nDestWidth">The width, in logical units, of the destination rectangle.</param>
<param name="nDestHeight">The height, in logical units, of the destination rectangle.</param>
<param name="XSrc">The x-coordinate, in pixels, of the source rectangle in the image.</param>
<param name="YSrc">The y-coordinate, in pixels, of the source rectangle in the image.</param>
<param name="nSrcWidth">The width, in pixels, of the source rectangle in the image.</param>
<param name="nSrcHeight">The height, in pixels, of the source rectangle in the image.</param>
<param name="lpBits">A pointer to the image bits, which are stored as an array of bytes. For more information, see the Remarks section.</param>
<param name="lpBitsInfo">
A pointer to a <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure that contains information about the DIB.
</param>
<param name="iUsage">
<para>
Specifies whether the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure was provided and, if so, whether
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> contains explicit red, green, blue (RGB) values or indexes. The <paramref name="iUsage"/> parameter must
be one of the following values.
</para>
<list type="table">
<item>
<term>DIB_PAL_COLORS</term>
<description>The array contains 16-bit indexes into the logical palette of the source device context.</description>
</item>
<item>
<term>DIB_RGB_COLORS</term>
<description>The color table contains literal RGB values.</description>
</item>
</list>
<para>For more information, see the Remarks section.</para>
</param>
<param name="dwRop">
A raster-operation code that specifies how the source pixels, the destination device context's current brush, and the destination pixels are to
be combined to form the new image. For a list of some common raster operation codes, see <see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/>.
</param>
<returns>
<para>If the function succeeds, the return value is the number of scan lines copied. Note that this value can be negative for mirrored content.</para>
<para>If the function fails, or no scan lines are copied, the return value is 0.</para>
<para>
If the driver cannot support the JPEG or PNG file image passed to <see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/>, the function will fail and return GDI_ERROR.
If failure does occur, the application must fall back on its own JPEG or PNG support to decompress the image into a bitmap, and then pass the
bitmap to <see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/>.
</para>
</returns>
<remarks>
<para>The origin of a bottom-up DIB is the lower-left corner; the origin of a top-down DIB is the upper-left corner.</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/> creates a mirror image of a bitmap if the signs of the <paramref name="nSrcWidth"/> and
<paramref name="nDestWidth"/> parameters, or if the <paramref name="nSrcHeight"/> and <paramref name="nDestHeight"/> parameters differ. If
<paramref name="nSrcWidth"/> and <paramref name="nDestWidth"/> have different signs, the function creates a mirror image of the bitmap
along the x-axis. If <paramref name="nSrcHeight"/> and <paramref name="nDestHeight"/> have different signs, the function creates a mirror
image of the bitmap along the y-axis.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/> creates a top-down image if the sign of the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biHeight"/> member of the
<see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/> structure for the DIB is negative. For a code example, see Sizing a JPEG or PNG Image.
</para>
<para>This function allows a JPEG or PNG image to be passed as the source image. How each parameter is used remains the same, except:</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetMiterLimit(System.IntPtr,System.Single,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetMiterLimit(System.IntPtr,System.Single,System.IntPtr)"/> function sets the limit for the length of miter joins for the specified device context.
</summary>
<param name="hdc">Handle to the device context.</param>
<param name="eNewLimit">Specifies the new miter limit for the device context.</param>
<param name="peOldLimit">
Pointer to a floating-point value that receives the previous miter limit. If this parameter is NULL, the previous miter
limit is not returned.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The miter length is defined as the distance from the intersection of the line walls on the inside of the join to the intersection of the line
walls on the outside of the join. The miter limit is the maximum allowed ratio of the miter length to the line width.
</para>
<para>The default miter limit is 10.0.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetDCPenColor(System.IntPtr,System.UInt32)">
<summary>
<see cref="M:Win32Interop.Methods.Gdi32.SetDCPenColor(System.IntPtr,System.UInt32)"/> function sets the current device context (DC) pen color to the specified color value. If the device cannot represent
the specified color value, the color is set to the nearest physical color.
</summary>
<param name="hdc">A handle to the DC.</param>
<param name="crColor">The new pen color.</param>
<returns>
If the function succeeds, the return value specifies the previous DC pen color as a <see cref="T:Win32Interop.Structs.COLORREF"/> value. If the function fails, the
return value is CLR_INVALID.
</returns>
<remarks>
<para>
The function returns the previous DC_PEN color, even if the stock pen DC_PEN is not selected in the DC; however, this will not be used in
drawing operations until the stock DC_PEN is selected in the DC.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetStockObject(System.Int32)"/> function with an argument of DC_BRUSH or DC_PEN can be used interchangeably with the
<see cref="M:Win32Interop.Methods.Gdi32.SetDCPenColor(System.IntPtr,System.UInt32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.SetDCBrushColor(System.IntPtr,System.UInt32)"/> functions.
</para>
<para>ICM: Color management is performed if ICM is enabled.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetColorSpace(System.IntPtr,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetColorSpace(System.IntPtr,System.IntPtr)"/> function defines the input color space for a given device context.
</summary>
<param name="hDC">Specifies the handle to a device context.</param>
<param name="hColorSpace">Identifies handle to the color space to set.</param>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetBrushOrgEx(System.IntPtr,System.Int32,System.Int32,Win32Interop.Structs.POINT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetBrushOrgEx(System.IntPtr,System.Int32,System.Int32,Win32Interop.Structs.POINT@)"/> function sets the brush origin that GDI assigns to the next brush an application selects into the specified
device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nXOrg">
The x-coordinate, in device units, of the new brush origin. If this value is greater than the brush width, its value is reduced using the modulus
operator (<paramref name="nXOrg"/> % brush width).
</param>
<param name="nYOrg">
The y-coordinate, in device units, of the new brush origin. If this value is greater than the brush height, its value is reduced using the
modulus operator (<paramref name="nYOrg"/> % brush height).
</param>
<param name="lppt">
<para>
A pointer to a <see cref="T:Win32Interop.Structs.POINT"/> structure that receives the previous brush origin.
</para>
<para>This parameter can be NULL if the previous brush origin is not required.</para>
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>A brush is a bitmap that the system uses to paint the interiors of filled shapes.</para>
<para>
The brush origin is a pair of coordinates specifying the location of one pixel in the bitmap. The default brush origin coordinates are (0,0).
For horizontal coordinates, the value 0 corresponds to the leftmost column of pixels; the width corresponds to the rightmost column. For
vertical coordinates, the value 0 corresponds to the uppermost row of pixels; the height corresponds to the lowermost row.
</para>
<para>
The system automatically tracks the origin of all window-managed device contexts and adjusts their brushes as necessary to maintain an
alignment of patterns on the surface. The brush origin that is set with this call is relative to the upper-left corner of the client area.
</para>
<para>
An application should call <see cref="M:Win32Interop.Methods.Gdi32.SetBrushOrgEx(System.IntPtr,System.Int32,System.Int32,Win32Interop.Structs.POINT@)"/> after setting the bitmap stretching mode to HALFTONE by using
<see cref="M:Win32Interop.Methods.Gdi32.SetStretchBltMode(System.IntPtr,System.Int32)"/>. This must be done to avoid brush misalignment.
</para>
<para>
The system automatically tracks the origin of all window-managed device contexts and adjusts their brushes as necessary to maintain an
alignment of patterns on the surface.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetBoundsRect(System.IntPtr,System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetBoundsRect(System.IntPtr,System.IntPtr,System.UInt32)"/> function controls the accumulation of bounding rectangle information for the specified device context. The
system can maintain a bounding rectangle for all drawing operations. An application can examine and set this rectangle. The drawing boundaries
are useful for invalidating bitmap caches.
</summary>
<param name="hdc">A handle to the device context for which to accumulate bounding rectangles.</param>
<param name="lprcBounds">
A pointer to a <see cref="T:Win32Interop.Structs.RECT"/> structure used to set the bounding rectangle. Rectangle dimensions are in logical coordinates. This parameter
can be NULL.
</param>
<param name="flags">
<para>Specifies how the new rectangle will be combined with the accumulated rectangle. This parameter can be one of more of the following values.</para>
<list type="table">
<item>
<term>DCB_ACCUMULATE</term>
<description>
Adds the rectangle specified by the <paramref name="lprcBounds"/> parameter to the bounding rectangle (using a rectangle union
operation). Using both DCB_RESET and DCB_ACCUMULATE sets the bounding rectangle to the rectangle specified by the
<paramref name="lprcBounds"/> parameter.
</description>
</item>
<item>
<term>DCB_DISABLE</term>
<description>Turns off boundary accumulation.</description>
</item>
<item>
<term>DCB_ENABLE</term>
<description>Turns on boundary accumulation, which is disabled by default.</description>
</item>
<item>
<term>DCB_RESET</term>
<description>Clears the bounding rectangle.</description>
</item>
</list>
</param>
<returns>
If the function succeeds, the return value specifies the previous state of the bounding rectangle. This state can be a combination of the
following values.
</returns>
<remarks>
The DCB_SET value is a combination of the bit values DCB_ACCUMULATE and DCB_RESET. Applications that check the DCB_RESET bit to determine whether
the bounding rectangle is empty must also check the DCB_ACCUMULATE bit. The bounding rectangle is empty only if the DCB_RESET bit is 1 and the
DCB_ACCUMULATE bit is 0.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetBitmapBits(System.IntPtr,System.UInt32,System.IntPtr)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.SetBitmapBits(System.IntPtr,System.UInt32,System.IntPtr)"/> function sets the bits of color data for a bitmap to the specified values.
</para>
<para>
Note: This function is provided only for compatibility with 16-bit versions of Windows. Applications should use the
<see cref="M:Win32Interop.Methods.Gdi32.SetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> function.
</para>
</summary>
<param name="hbmp">A handle to the bitmap to be set. This must be a compatible bitmap (DDB).</param>
<param name="cBytes">
The number of bytes pointed to by the <paramref name="lpBits"/> parameter.
</param>
<param name="lpBits">A pointer to an array of bytes that contain color data for the specified bitmap.</param>
<returns>
<para>If the function succeeds, the return value is the number of bytes used in setting the bitmap bits.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The array identified by <paramref name="lpBits"/> must be WORD aligned.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SelectPalette(System.IntPtr,System.IntPtr,System.Boolean)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SelectPalette(System.IntPtr,System.IntPtr,System.Boolean)"/> function selects the specified logical palette into a device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="hpal">A handle to the logical palette to be selected.</param>
<param name="bForceBackground">
<para>
Specifies whether the logical palette is forced to be a background palette. If this value is TRUE, the <see cref="M:Win32Interop.Methods.Gdi32.RealizePalette(System.IntPtr)"/> function
causes the logical palette to be mapped to the colors already in the physical palette in the best possible way. This is always done, even if
the window for which the palette is realized belongs to a thread without active focus.
</para>
<para>
If this value is FALSE, <see cref="M:Win32Interop.Methods.Gdi32.RealizePalette(System.IntPtr)"/> causes the logical palette to be copied into the device palette when the application is
in the foreground. (If the <paramref name="hdc"/> parameter is a memory device context, this parameter is ignored.)
</para>
</param>
<returns>
<para>If the function succeeds, the return value is a handle to the device context's previous logical palette.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
An application can determine whether a device supports palette operations by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function and specifying
the RASTERCAPS constant.
</para>
<para>
An application can select a logical palette into more than one device context only if device contexts are compatible. Otherwise
<see cref="M:Win32Interop.Methods.Gdi32.SelectPalette(System.IntPtr,System.IntPtr,System.Boolean)"/> fails. To create a device context that is compatible with another device context, call
<see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleDC(System.IntPtr)"/> with the first device context as the parameter. If a logical palette is selected into more than one device
context, changes to the logical palette will affect all device contexts for which it is selected.
</para>
<para>
An application might call the <see cref="M:Win32Interop.Methods.Gdi32.SelectPalette(System.IntPtr,System.IntPtr,System.Boolean)"/> function with the <paramref name="bForceBackground"/> parameter set to TRUE if
the child windows of a top-level window each realize their own palettes. However, only the child window that needs to realize its palette
must set <paramref name="bForceBackground"/> to TRUE; other child windows must set this value to FALSE.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SelectClipRgn(System.IntPtr,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SelectClipRgn(System.IntPtr,System.IntPtr)"/> function selects a region as the current clipping region for the specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="hrgn">A handle to the region to be selected.</param>
<returns>The return value specifies the region's complexity and can be one of the following values.</returns>
<remarks>
<para>Only a copy of the selected region is used. The region itself can be selected for any number of other device contexts or it can be deleted.</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.SelectClipRgn(System.IntPtr,System.IntPtr)"/> function assumes that the coordinates for a region are specified in device units.
</para>
<para>To remove a device-context's clipping region, specify a NULL region handle.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ResizePalette(System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ResizePalette(System.IntPtr,System.UInt32)"/> function increases or decreases the size of a logical palette based on the specified value.
</summary>
<param name="hpal">A handle to the palette to be changed.</param>
<param name="nEntries">
<para>The number of entries in the palette after it has been resized.</para>
<para>The number of entries is limited to 1024.</para>
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
An application can determine whether a device supports palette operations by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function and specifying
the RASTERCAPS constant.
</para>
<para>
If an application calls <see cref="M:Win32Interop.Methods.Gdi32.ResizePalette(System.IntPtr,System.UInt32)"/> to reduce the size of the palette, the entries remaining in the resized palette are
unchanged. If the application calls <see cref="M:Win32Interop.Methods.Gdi32.ResizePalette(System.IntPtr,System.UInt32)"/> to enlarge the palette, the additional palette entries are set to black (the
red, green, and blue values are all 0) and their flags are set to zero.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.OffsetClipRgn(System.IntPtr,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.OffsetClipRgn(System.IntPtr,System.Int32,System.Int32)"/> function moves the clipping region of a device context by the specified offsets.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nXOffset">The number of logical units to move left or right.</param>
<param name="nYOffset">The number of logical units to move up or down.</param>
<returns>The return value specifies the new region's complexity and can be one of the following values.</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetRegionData(System.IntPtr,System.UInt32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetRegionData(System.IntPtr,System.UInt32,System.IntPtr)"/> function fills the specified buffer with data describing a region. This data includes the dimensions of the
rectangles that make up the region.
</summary>
<param name="hRgn">A handle to the region.</param>
<param name="dwCount">
The size, in bytes, of the <paramref name="lpRgnData"/> buffer.
</param>
<param name="lpRgnData">
A pointer to a <see cref="T:Win32Interop.Structs.RGNDATA"/> structure that receives the information. The dimensions of the region are in logical units. If this
parameter is NULL, the return value contains the number of bytes needed for the region data.
</param>
<returns>
<para>
If the function succeeds and <paramref name="dwCount"/> specifies an adequate number of bytes, the return value is always
<paramref name="dwCount"/>. If <paramref name="dwCount"/> is too small or the function fails, the return value is 0. If
<paramref name="lpRgnData"/> is NULL, the return value is the required number of bytes.
</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The <see cref="M:Win32Interop.Methods.Gdi32.GetRegionData(System.IntPtr,System.UInt32,System.IntPtr)"/> function is used in conjunction with the <see cref="M:Win32Interop.Methods.Gdi32.ExtCreateRegion(Win32Interop.Structs.XFORM@,System.UInt32,Win32Interop.Structs.RGNDATA@)"/> function.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetObjectType(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetObjectType(System.IntPtr)"/> retrieves the type of the specified object.
</summary>
<param name="h">A handle to the graphics object.</param>
<returns>If the function succeeds, the return value identifies the object. This value can be one of the following.</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetMiterLimit(System.IntPtr,System.Single@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetMiterLimit(System.IntPtr,System.Single@)"/> function retrieves the miter limit for the specified device context.
</summary>
<param name="hdc">Handle to the device context.</param>
<param name="peLimit">Pointer to a floating-point value that receives the current miter limit.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>The miter limit is used when drawing geometric lines that have miter joins.</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function retrieves device-specific information for the specified device.
</summary>
<param name="hdc">A handle to the DC.</param>
<param name="nIndex">
<para>The item to be returned. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>DRIVERVERSION</term>
<description>The device driver version.</description>
</item>
<item>
<term>TECHNOLOGY</term>
<description>
<para>Device technology. It can be any one of the following values.</para>
<para>
If the <paramref name="hdc"/> parameter is a handle to the DC of an enhanced metafile, the device technology is that of the
referenced device as specified to the <see cref="M:Win32Interop.Methods.Gdi32.CreateEnhMetaFile(System.IntPtr,System.String,Win32Interop.Structs.RECT@,System.String)"/> function. To determine whether it is an enhanced metafile
DC, use the <see cref="M:Win32Interop.Methods.Gdi32.GetObjectType(System.IntPtr)"/> function.
</para>
</description>
</item>
<item>
<term>HORZSIZE</term>
<description>Width, in millimeters, of the physical screen.</description>
</item>
<item>
<term>VERTSIZE</term>
<description>Height, in millimeters, of the physical screen.</description>
</item>
<item>
<term>HORZRES</term>
<description>Width, in pixels, of the screen; or for printers, the width, in pixels, of the printable area of the page.</description>
</item>
<item>
<term>VERTRES</term>
<description>Height, in raster lines, of the screen; or for printers, the height, in pixels, of the printable area of the page.</description>
</item>
<item>
<term>LOGPIXELSX</term>
<description>
Number of pixels per logical inch along the screen width. In a system with multiple display monitors, this value is the same
for all monitors.
</description>
</item>
<item>
<term>LOGPIXELSY</term>
<description>
Number of pixels per logical inch along the screen height. In a system with multiple display monitors, this value is the
same for all monitors.
</description>
</item>
<item>
<term>BITSPIXEL</term>
<description>Number of adjacent color bits for each pixel.</description>
</item>
<item>
<term>PLANES</term>
<description>Number of color planes.</description>
</item>
<item>
<term>NUMBRUSHES</term>
<description>Number of device-specific brushes.</description>
</item>
<item>
<term>NUMPENS</term>
<description>Number of device-specific pens.</description>
</item>
<item>
<term>NUMFONTS</term>
<description>Number of device-specific fonts.</description>
</item>
<item>
<term>NUMCOLORS</term>
<description>
Number of entries in the device's color table, if the device has a color depth of no more than 8 bits per pixel. For devices with
greater color depths, 1 is returned.
</description>
</item>
<item>
<term>ASPECTX</term>
<description>Relative width of a device pixel used for line drawing.</description>
</item>
<item>
<term>ASPECTY</term>
<description>Relative height of a device pixel used for line drawing.</description>
</item>
<item>
<term>ASPECTXY</term>
<description>Diagonal width of the device pixel used for line drawing.</description>
</item>
<item>
<term>PDEVICESIZE</term>
<description>Reserved.</description>
</item>
<item>
<term>CLIPCAPS</term>
<description>
Flag that indicates the clipping capabilities of the device. If the device can clip to a rectangle, it is 1. Otherwise, it
is 0.
</description>
</item>
<item>
<term>SIZEPALETTE</term>
<description>
Number of entries in the system palette. This index is valid only if the device driver sets the RC_PALETTE bit in the RASTERCAPS
index and is available only if the driver is compatible with 16-bit Windows.
</description>
</item>
<item>
<term>NUMRESERVED</term>
<description>
Number of reserved entries in the system palette. This index is valid only if the device driver sets the RC_PALETTE bit in the
RASTERCAPS index and is available only if the driver is compatible with 16-bit Windows.
</description>
</item>
<item>
<term>COLORRES</term>
<description>
Actual color resolution of the device, in bits per pixel. This index is valid only if the device driver sets the RC_PALETTE bit in
the RASTERCAPS index and is available only if the driver is compatible with 16-bit Windows.
</description>
</item>
<item>
<term>PHYSICALWIDTH</term>
<description>
For printing devices: the width of the physical page, in device units. For example, a printer set to print at 600 dpi on 8.5-x11-inch
paper has a physical width value of 5100 device units. Note that the physical page is almost always greater than the printable area
of the page, and never smaller.
</description>
</item>
<item>
<term>PHYSICALHEIGHT</term>
<description>
For printing devices: the height of the physical page, in device units. For example, a printer set to print at 600 dpi on
8.5-by-11-inch paper has a physical height value of 6600 device units. Note that the physical page is almost always greater than the
printable area of the page, and never smaller.
</description>
</item>
<item>
<term>PHYSICALOFFSETX</term>
<description>
For printing devices: the distance from the left edge of the physical page to the left edge of the printable area, in device units.
For example, a printer set to print at 600 dpi on 8.5-by-11-inch paper, that cannot print on the leftmost 0.25-inch of paper, has a
horizontal physical offset of 150 device units.
</description>
</item>
<item>
<term>PHYSICALOFFSETY</term>
<description>
For printing devices: the distance from the top edge of the physical page to the top edge of the printable area, in device units. For
example, a printer set to print at 600 dpi on 8.5-by-11-inch paper, that cannot print on the topmost 0.5-inch of paper, has a
vertical physical offset of 300 device units.
</description>
</item>
<item>
<term>VREFRESH</term>
<description>
<para>For display devices: the current vertical refresh rate of the device, in cycles per second (Hz).</para>
<para>
A vertical refresh rate value of 0 or 1 represents the display hardware's default refresh rate. This default rate is typically
set by switches on a display card or computer motherboard, or by a configuration program that does not use display functions such
as <see cref="M:Win32Interop.Methods.User32.ChangeDisplaySettings(Win32Interop.Structs.DEVMODE@,Win32Interop.Enums.CDS)"/>.
</para>
</description>
</item>
<item>
<term>SCALINGFACTORX</term>
<description>Scaling factor for the x-axis of the printer.</description>
</item>
<item>
<term>SCALINGFACTORY</term>
<description>Scaling factor for the y-axis of the printer.</description>
</item>
<item>
<term>BLTALIGNMENT</term>
<description>
Preferred horizontal drawing alignment, expressed as a multiple of pixels. For best drawing performance, windows should be
horizontally aligned to a multiple of this value. A value of zero indicates that the device is accelerated, and any alignment may be
used.
</description>
</item>
<item>
<term>SHADEBLENDCAPS</term>
<description>
<para>Value that indicates the shading and blending capabilities of the device. See Remarks for further comments.</para>
</description>
</item>
<item>
<term>RASTERCAPS</term>
<description>
<para>Value that indicates the raster capabilities of the device, as shown in the following table.</para>
</description>
</item>
<item>
<term>CURVECAPS</term>
<description>
<para>Value that indicates the curve capabilities of the device, as shown in the following table.</para>
</description>
</item>
<item>
<term>LINECAPS</term>
<description>
<para>Value that indicates the line capabilities of the device, as shown in the following table:</para>
</description>
</item>
<item>
<term>POLYGONALCAPS</term>
<description>
<para>Value that indicates the polygon capabilities of the device, as shown in the following table.</para>
</description>
</item>
<item>
<term>TEXTCAPS</term>
<description>
<para>Value that indicates the text capabilities of the device, as shown in the following table.</para>
</description>
</item>
<item>
<term>COLORMGMTCAPS</term>
<description>
<para>Value that indicates the color management capabilities of the device.</para>
</description>
</item>
</list>
</param>
<returns>
<para>The return value specifies the value of the desired item.</para>
<para>
When <paramref name="nIndex"/> is BITSPIXEL and the device has 15bpp or 16bpp, the return value is 16.
</para>
</returns>
<remarks>
When <paramref name="nIndex"/> is SHADEBLENDCAPS:
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetDCPenColor(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetDCPenColor(System.IntPtr)"/> function retrieves the current pen color for the specified device context (DC).
</summary>
<param name="hdc">A handle to the DC whose brush color is to be returned.</param>
<returns>
<para>
If the function succeeds, the return value is a <see cref="T:Win32Interop.Structs.COLORREF"/> value for the current DC pen color.
</para>
<para>If the function fails, the return value is CLR_INVALID.</para>
</returns>
<remarks>
<para>
For information on setting the pen color, see <see cref="M:Win32Interop.Methods.Gdi32.SetDCPenColor(System.IntPtr,System.UInt32)"/>.
</para>
<para>ICM: Color management is performed if ICM is enabled.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetColorSpace(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetColorSpace(System.IntPtr)"/> function retrieves the handle to the input color space from a specified device context.
</summary>
<param name="hDC">Specifies a device context that is to have its input color space handle retrieved.</param>
<remarks>
<see cref="M:Win32Interop.Methods.Gdi32.GetColorSpace(System.IntPtr)"/> obtains the handle to the input color space regardless of whether color management is enabled for the device
context.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetCharWidth(System.IntPtr,System.UInt32,System.UInt32,System.Int32[]@)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetCharWidth(System.IntPtr,System.UInt32,System.UInt32,System.Int32[]@)"/> function retrieves the widths, in logical coordinates, of consecutive characters in a specified range from
the current font.
</para>
<para>
Note: This function is provided only for compatibility with 16-bit versions of Windows. Applications should call the
<see cref="M:Win32Interop.Methods.Gdi32.GetCharWidth32(System.IntPtr,System.UInt32,System.UInt32,System.Int32[]@)"/> function, which provides more accurate results.
</para>
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="iFirstChar">The first character in the group of consecutive characters.</param>
<param name="iLastChar">The last character in the group of consecutive characters, which must not precede the specified first character.</param>
<param name="lpBuffer">A pointer to a buffer that receives the character widths, in logical coordinates.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.GetCharWidth(System.IntPtr,System.UInt32,System.UInt32,System.Int32[]@)"/> cannot be used on TrueType fonts. To retrieve character widths for TrueType fonts, use
<see cref="M:Win32Interop.Methods.Gdi32.GetCharABCWidths(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.ABC@)"/>.
</para>
<para>
The range is inclusive; that is, the returned widths include the widths of the characters specified by the <paramref name="iFirstChar"/> and
<paramref name="iLastChar"/> parameters.
</para>
<para>If a character does not exist in the current font, it is assigned the width of the default character.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetCharWidthI(System.IntPtr,System.UInt32,System.UInt32,System.UInt16[],System.Int32[]@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetCharWidthI(System.IntPtr,System.UInt32,System.UInt32,System.UInt16[],System.Int32[]@)"/> function retrieves the widths, in logical coordinates, of consecutive glyph indices in a specified range from
the current font.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="giFirst">The first glyph index in the group of consecutive glyph indices.</param>
<param name="cgi">The number of glyph indices.</param>
<param name="pgi">
A pointer to an array of glyph indices. If this parameter is not NULL, it is used instead of the <paramref name="giFirst"/> parameter.
</param>
<param name="lpBuffer">A pointer to a buffer that receives the widths, in logical coordinates.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetCharWidthI(System.IntPtr,System.UInt32,System.UInt32,System.UInt16[],System.Int32[]@)"/> function processes a consecutive glyph indices if the <paramref name="pgi"/> parameter is NULL with the
<paramref name="giFirst"/> parameter indicating the first glyph index to process and the <paramref name="cgi"/> parameter indicating how
many glyph indices to process. Otherwise the <see cref="M:Win32Interop.Methods.Gdi32.GetCharWidthI(System.IntPtr,System.UInt32,System.UInt32,System.UInt16[],System.Int32[]@)"/> function processes the array of glyph indices pointed to by the
<paramref name="pgi"/> parameter with the <paramref name="cgi"/> parameter indicating how many glyph indices to process.
</para>
<para>If a character does not exist in the current font, it is assigned the width of the default character.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetBrushOrgEx(System.IntPtr,Win32Interop.Structs.POINT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetBrushOrgEx(System.IntPtr,Win32Interop.Structs.POINT@)"/> function retrieves the current brush origin for the specified device context. This function replaces the
GetBrushOrg function.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lppt">
A pointer to a <see cref="T:Win32Interop.Structs.POINT"/> structure that receives the brush origin, in device coordinates.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>A brush is a bitmap that the system uses to paint the interiors of filled shapes.</para>
<para>
The brush origin is a set of coordinates with values between 0 and 7, specifying the location of one pixel in the bitmap. The default brush
origin coordinates are (0,0). For horizontal coordinates, the value 0 corresponds to the leftmost column of pixels; the value 7 corresponds
to the rightmost column. For vertical coordinates, the value 0 corresponds to the uppermost row of pixels; the value 7 corresponds to the
lowermost row. When the system positions the brush at the start of any painting operation, it maps the origin of the brush to the location in
the window's client area specified by the brush origin. For example, if the origin is set to (2,3), the system maps the origin of the brush
(0,0) to the location (2,3) on the window's client area.
</para>
<para>
If an application uses a brush to fill the backgrounds of both a parent and a child window with matching colors, it may be necessary to set
the brush origin after painting the parent window but before painting the child window.
</para>
<para>
The system automatically tracks the origin of all window-managed device contexts and adjusts their brushes as necessary to maintain an
alignment of patterns on the surface.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetBoundsRect(System.IntPtr,Win32Interop.Structs.RECT@,System.UInt32)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetBoundsRect(System.IntPtr,Win32Interop.Structs.RECT@,System.UInt32)"/> function obtains the current accumulated bounding rectangle for a specified device context.
</para>
<para>The system maintains an accumulated bounding rectangle for each application. An application can retrieve and set this rectangle.</para>
</summary>
<param name="hdc">A handle to the device context whose bounding rectangle the function will return.</param>
<param name="lprcBounds">
A pointer to the <see cref="T:Win32Interop.Structs.RECT"/> structure that will receive the current bounding rectangle. The application's rectangle is returned in
logical coordinates, and the bounding rectangle is returned in screen coordinates.
</param>
<param name="flags">
<para>
Specifies how the <see cref="M:Win32Interop.Methods.Gdi32.GetBoundsRect(System.IntPtr,Win32Interop.Structs.RECT@,System.UInt32)"/> function will behave. This parameter can be the following value.
</para>
<list type="table">
<item>
<term>DCB_RESET</term>
<description>Clears the bounding rectangle after returning it. If this flag is not set, the bounding rectangle will not be cleared.</description>
</item>
</list>
</param>
<returns>The return value specifies the state of the accumulated bounding rectangle; it can be one of the following values.</returns>
<remarks>
The DCB_SET value is a combination of the bit values DCB_ACCUMULATE and DCB_RESET. Applications that check the DCB_RESET bit to determine whether
the bounding rectangle is empty must also check the DCB_ACCUMULATE bit. The bounding rectangle is empty only if the DCB_RESET bit is 1 and the
DCB_ACCUMULATE bit is 0.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetBitmapBits(System.IntPtr,System.Int32,System.IntPtr)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetBitmapBits(System.IntPtr,System.Int32,System.IntPtr)"/> function copies the bitmap bits of a specified device-dependent bitmap into a buffer.
</para>
<para>
Note: This function is provided only for compatibility with 16-bit versions of Windows. Applications should use the <see cref="M:Win32Interop.Methods.Gdi32.GetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/>
function.
</para>
</summary>
<param name="hbmp">A handle to the device-dependent bitmap.</param>
<param name="cbBuffer">The number of bytes to copy from the bitmap into the buffer.</param>
<param name="lpvBits">A pointer to a buffer to receive the bitmap bits. The bits are stored as an array of byte values.</param>
<returns>
<para>If the function succeeds, the return value is the number of bytes copied to the buffer.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateRectRgn(System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateRectRgn(System.Int32,System.Int32,System.Int32,System.Int32)"/> function creates a rectangular region.
</summary>
<param name="nLeftRect">Specifies the x-coordinate of the upper-left corner of the region in logical units.</param>
<param name="nTopRect">Specifies the y-coordinate of the upper-left corner of the region in logical units.</param>
<param name="nRightRect">Specifies the x-coordinate of the lower-right corner of the region in logical units.</param>
<param name="nBottomRect">Specifies the y-coordinate of the lower-right corner of the region in logical units.</param>
<returns>
<para>If the function succeeds, the return value is the handle to the region.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
When you no longer need the HRGN object, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>Region coordinates are represented as 27-bit signed integers.</para>
<para>
Regions created by the Create[shape]Rgn methods (such as <see cref="M:Win32Interop.Methods.Gdi32.CreateRectRgn(System.Int32,System.Int32,System.Int32,System.Int32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.CreatePolygonRgn(Win32Interop.Structs.POINT[],System.Int32,System.Int32)"/>) only include the
interior of the shape; the shape's outline is excluded from the region. This means that any point on a line between two sequential vertices
is not included in the region. If you were to call <see cref="M:Win32Interop.Methods.Gdi32.PtInRegion(System.IntPtr,System.Int32,System.Int32)"/> for such a point, it would return zero as the result.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreatePalette(Win32Interop.Structs.LOGPALETTE@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreatePalette(Win32Interop.Structs.LOGPALETTE@)"/> function creates a logical palette.
</summary>
<param name="lplgpl">
A pointer to a <see cref="T:Win32Interop.Structs.LOGPALETTE"/> structure that contains information about the colors in the logical palette.
</param>
<returns>
<para>If the function succeeds, the return value is a handle to a logical palette.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
An application can determine whether a device supports palette operations by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function and specifying
the RASTERCAPS constant.
</para>
<para>
Once an application creates a logical palette, it can select that palette into a device context by calling the <see cref="M:Win32Interop.Methods.Gdi32.SelectPalette(System.IntPtr,System.IntPtr,System.Boolean)"/>
function. A palette selected into a device context can be realized by calling the <see cref="M:Win32Interop.Methods.Gdi32.RealizePalette(System.IntPtr)"/> function.
</para>
<para>
When you no longer need the palette, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CopyMetaFile(System.IntPtr,System.String)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CopyMetaFile(System.IntPtr,System.String)"/> function copies the content of a Windows-format metafile to the specified file.
</para>
<para>
Note: This function is provided only for compatibility with Windows-format metafiles. Enhanced-format metafiles provide superior
functionality and are recommended for new applications. The corresponding function for an enhanced-format metafile is
<see cref="M:Win32Interop.Methods.Gdi32.CopyEnhMetaFile(System.IntPtr,System.String)"/>.
</para>
</summary>
<param name="hmfSrc">A handle to the source Windows-format metafile.</param>
<param name="lpszFile">A pointer to the name of the destination file. If this parameter is NULL, the source metafile is copied to memory.</param>
<returns>
<para>If the function succeeds, the return value is a handle to the copy of the Windows-format metafile.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
Where text arguments must use Unicode characters, use this function as a wide-character function. Where text arguments must use characters
from the Windows character set, use this function as an ANSI function.
</para>
<para>
When the application no longer needs the Windows-format metafile handle, it should delete the handle by calling the
<see cref="M:Win32Interop.Methods.Gdi32.DeleteMetaFile(System.IntPtr)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CloseMetaFile(System.IntPtr)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CloseMetaFile(System.IntPtr)"/> function closes a metafile device context and returns a handle that identifies a Windows-format metafile.
</para>
<para>
Note: This function is provided only for compatibility with Windows-format metafiles. Enhanced-format metafiles provide superior
functionality and are recommended for new applications. The corresponding function for an enhanced-format metafile is
<see cref="M:Win32Interop.Methods.Gdi32.CloseEnhMetaFile(System.IntPtr)"/>.
</para>
</summary>
<param name="hdc">Handle to a metafile device context used to create a Windows-format metafile.</param>
<returns>
<para>If the function succeeds, the return value is a handle to a Windows-format metafile.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
To convert a Windows-format metafile into a new enhanced-format metafile, use the <see cref="M:Win32Interop.Methods.Gdi32.SetWinMetaFileBits(System.UInt32,System.IntPtr,System.IntPtr,Win32Interop.Structs.METAFILEPICT@)"/> function.
</para>
<para>
When an application no longer needs the Windows-format metafile handle, it should delete the handle by calling the
<see cref="M:Win32Interop.Methods.Gdi32.DeleteMetaFile(System.IntPtr)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.UpdateColors(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.UpdateColors(System.IntPtr)"/> function updates the client area of the specified device context by remapping the current colors in the client
area to the currently realized logical palette.
</summary>
<param name="hdc">A handle to the device context.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
An application can determine whether a device supports palette operations by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function and specifying
the RASTERCAPS constant.
</para>
<para>
An inactive window with a realized logical palette may call <see cref="M:Win32Interop.Methods.Gdi32.UpdateColors(System.IntPtr)"/> as an alternative to redrawing its client area when
the system palette changes.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.UpdateColors(System.IntPtr)"/> function typically updates a client area faster than redrawing the area. However, because
<see cref="M:Win32Interop.Methods.Gdi32.UpdateColors(System.IntPtr)"/> performs the color translation based on the color of each pixel before the system palette changed, each call to
this function results in the loss of some color accuracy.
</para>
<para>
This function must be called soon after a <see cref="F:Win32Interop.Enums.WM.WM_PALETTECHANGED"/> message is received.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetTextColor(System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetTextColor(System.IntPtr,System.UInt32)"/> function sets the text color for the specified device context to the specified color.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="crColor">The color of the text.</param>
<returns>
<para>
If the function succeeds, the return value is a color reference for the previous text color as a <see cref="T:Win32Interop.Structs.COLORREF"/> value.
</para>
<para>If the function fails, the return value is CLR_INVALID.</para>
</returns>
<remarks>
The text color is used to draw the face of each character written by the <see cref="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> functions. The text
color is also used in converting bitmaps from color to monochrome and vice versa.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetTextAlign(System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetTextAlign(System.IntPtr,System.UInt32)"/> function sets the text-alignment flags for the specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="fMode">
<para>
The text alignment by using a mask of the values in the following list. Only one flag can be chosen from those that affect horizontal and
vertical alignment. In addition, only one of the two flags that alter the current position can be chosen.
</para>
<list type="table">
<item>
<term>TA_BASELINE</term>
<description>The reference point will be on the base line of the text.</description>
</item>
<item>
<term>TA_BOTTOM</term>
<description>The reference point will be on the bottom edge of the bounding rectangle.</description>
</item>
<item>
<term>TA_TOP</term>
<description>The reference point will be on the top edge of the bounding rectangle.</description>
</item>
<item>
<term>TA_CENTER</term>
<description>The reference point will be aligned horizontally with the center of the bounding rectangle.</description>
</item>
<item>
<term>TA_LEFT</term>
<description>The reference point will be on the left edge of the bounding rectangle.</description>
</item>
<item>
<term>TA_RIGHT</term>
<description>The reference point will be on the right edge of the bounding rectangle.</description>
</item>
<item>
<term>TA_NOUPDATECP</term>
<description>The current position is not updated after each text output call. The reference point is passed to the text output function.</description>
</item>
<item>
<term>TA_RTLREADING</term>
<description>
Middle East language edition of Windows: The text is laid out in right to left reading order, as opposed to the default left to right
order. This applies only when the font selected into the device context is either Hebrew or Arabic.
</description>
</item>
<item>
<term>TA_UPDATECP</term>
<description>The current position is updated after each text output call. The current position is used as the reference point.</description>
</item>
</list>
<para>
When the current font has a vertical default base line, as with Kanji, the following values must be used instead of TA_BASELINE and
TA_CENTER.
</para>
<list type="table">
<item>
<term>VTA_BASELINE</term>
<description>The reference point will be on the base line of the text.</description>
</item>
<item>
<term>VTA_CENTER</term>
<description>The reference point will be aligned vertically with the center of the bounding rectangle.</description>
</item>
</list>
<para>The default values are TA_LEFT, TA_TOP, and TA_NOUPDATECP.</para>
</param>
<returns>
<para>If the function succeeds, the return value is the previous text-alignment setting.</para>
<para>If the function fails, the return value is GDI_ERROR.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> functions use the text-alignment flags to position a string of text on a display or
other device. The flags specify the relationship between a reference point and a rectangle that bounds the text. The reference point is
either the current position or a point passed to a text output function.
</para>
<para>The rectangle that bounds the text is formed by the character cells in the text string.</para>
<para>The best way to get left-aligned text is to use either</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetAbortProc(System.IntPtr,Win32Interop.Methods.AbortProc)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetAbortProc(System.IntPtr,Win32Interop.Methods.AbortProc)"/> function sets the application-defined abort function that allows a print job to be canceled during spooling.
</summary>
<param name="hdc">Handle to the device context for the print job.</param>
<param name="lpAbortProc">
Pointer to the application-defined abort function. For more information about the callback function, see the <see cref="T:Win32Interop.Methods.AbortProc"/> callback
function.
</param>
<returns>
<para>If the function succeeds, the return value is greater than zero.</para>
<para>If the function fails, the return value is SP_ERROR.</para>
</returns>
<remarks>
Note: This is a blocking or synchronous function and might not return immediately. How quickly this function returns depends on run-time factors
such as network status, print server configuration, and printer driver implementation—factors that are difficult to predict when writing an
application. Calling this function from a thread that manages interaction with the user interface could make the application appear to be
unresponsive.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function selects an object into the specified device context (DC). The new object replaces the previous object of
the same type.
</summary>
<param name="hdc">A handle to the DC.</param>
<param name="hgdiobj">
<para>A handle to the object to be selected. The specified object must have been created by using one of the following functions.</para>
<list type="table">
<item>
<term>Bitmap</term>
<description>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.CreateBitmap(System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmapIndirect(Win32Interop.Structs.BITMAP@)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/>,
<see cref="M:Win32Interop.Methods.Gdi32.CreateDIBitmap(System.IntPtr,Win32Interop.Structs.BITMAPINFOHEADER,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/>
</para>
<para>Bitmaps can only be selected into memory DC's. A single bitmap cannot be selected into more than one DC at the same time.</para>
</description>
</item>
<item>
<term>Brush</term>
<description>
<see cref="M:Win32Interop.Methods.Gdi32.CreateBrushIndirect(Win32Interop.Structs.LOGBRUSH@)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBPatternBrush(System.IntPtr,System.UInt32)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBPatternBrushPt(System.IntPtr,System.UInt32)"/>,
<see cref="M:Win32Interop.Methods.Gdi32.CreateHatchBrush(System.Int32,System.UInt32)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreatePatternBrush(System.IntPtr)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateSolidBrush(System.UInt32)"/>
</description>
</item>
<item>
<term>Font</term>
<description>
<see cref="M:Win32Interop.Methods.Gdi32.CreateFont(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.String)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirect(Win32Interop.Structs.LOGFONT@)"/>
</description>
</item>
<item>
<term>Pen</term>
<description>
<see cref="M:Win32Interop.Methods.Gdi32.CreatePen(System.Int32,System.Int32,System.UInt32)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreatePenIndirect(Win32Interop.Structs.LOGPEN@)"/>
</description>
</item>
<item>
<term>Region</term>
<description>
<see cref="M:Win32Interop.Methods.Gdi32.CombineRgn(System.IntPtr,System.IntPtr,System.IntPtr,System.Int32)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateEllipticRgn(System.Int32,System.Int32,System.Int32,System.Int32)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateEllipticRgnIndirect(Win32Interop.Structs.RECT@)"/>,
<see cref="M:Win32Interop.Methods.Gdi32.CreatePolygonRgn(Win32Interop.Structs.POINT[],System.Int32,System.Int32)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateRectRgn(System.Int32,System.Int32,System.Int32,System.Int32)"/>, <see cref="M:Win32Interop.Methods.Gdi32.CreateRectRgnIndirect(Win32Interop.Structs.RECT@)"/>
</description>
</item>
</list>
</param>
<returns>
If the selected object is not a region and the function succeeds, the return value is a handle to the object being replaced. If the selected
object is a region and the function succeeds, the return value is one of the following values.
</returns>
<remarks>
<para>
This function returns the previously selected object of the specified type. An application should always replace a new object with the
original, default object after it has finished drawing with the new object.
</para>
<para>An application cannot select a single bitmap into more than one DC at a time.</para>
<para>ICM: If the object being selected is a brush or a pen, color management is performed.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.RectInRegion(System.IntPtr,Win32Interop.Structs.RECT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.RectInRegion(System.IntPtr,Win32Interop.Structs.RECT@)"/> function determines whether any part of the specified rectangle is within the boundaries of a region.
</summary>
<param name="hrgn">Handle to the region.</param>
<param name="lprc">
Pointer to a <see cref="T:Win32Interop.Structs.RECT"/> structure containing the coordinates of the rectangle in logical units. The lower and right edges of the
rectangle are not included.
</param>
<returns>
<para>If any part of the specified rectangle lies within the boundaries of the region, the return value is nonzero.</para>
<para>If no part of the specified rectangle lies within the boundaries of the region, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PolyTextOut(System.IntPtr,Win32Interop.Structs.POLYTEXT[],System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PolyTextOut(System.IntPtr,Win32Interop.Structs.POLYTEXT[],System.Int32)"/> function draws several strings using the font and text colors currently selected in the specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="pptxt">
A pointer to an array of <see cref="T:Win32Interop.Structs.POLYTEXT"/> structures describing the strings to be drawn. The array contains one structure for each string
to be drawn.
</param>
<param name="cStrings">
The number of <see cref="T:Win32Interop.Structs.POLYTEXT"/> structures in the <paramref name="pptxt"/> array.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
Each <see cref="T:Win32Interop.Structs.POLYTEXT"/> structure contains the coordinates of a reference point that Windows uses to align the corresponding string of
text. An application can specify how the reference point is used by calling the <see cref="M:Win32Interop.Methods.Gdi32.SetTextAlign(System.IntPtr,System.UInt32)"/> function. An application can
determine the current text-alignment setting for the specified device context by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetTextAlign(System.IntPtr)"/> function.
</para>
<para>
To draw a single string of text, the application should call the <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PolyPolyline(System.IntPtr,Win32Interop.Structs.POINT@,System.UInt32[],System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PolyPolyline(System.IntPtr,Win32Interop.Structs.POINT@,System.UInt32[],System.UInt32)"/> function draws multiple series of connected line segments.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lppt">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures that contains the vertices of the polylines, in logical units. The polylines are
specified consecutively.
</param>
<param name="lpdwPolyPoints">
A pointer to an array of variables specifying the number of points in the <paramref name="lppt"/> array for the corresponding polyline. Each
entry must be greater than or equal to two.
</param>
<param name="cCount">
The total number of entries in the <paramref name="lpdwPolyPoints"/> array.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>The line segments are drawn by using the current pen. The figures formed by the segments are not filled.</para>
<para>The current position is neither used nor updated by this function.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PolyBezierTo(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PolyBezierTo(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)"/> function draws one or more Bézier curves.
</summary>
<param name="hdc">A handle to a device context.</param>
<param name="lppt">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures that contains the endpoints and control points, in logical units.
</param>
<param name="cCount">
The number of points in the <paramref name="lppt"/> array. This value must be three times the number of curves to be drawn because each Bézier
curve requires two control points and an ending point.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
This function draws cubic Bézier curves by using the control points specified by the <paramref name="lppt"/> parameter. The first curve is
drawn from the current position to the third point by using the first two points as control points. For each subsequent curve, the function
needs exactly three more points, and uses the ending point of the previous curve as the starting point for the next.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.PolyBezierTo(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)"/> moves the current position to the ending point of the last Bézier curve. The figure is not filled.
</para>
<para>This function draws lines by using the current pen.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PlayMetaFile(System.IntPtr,System.IntPtr)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.PlayMetaFile(System.IntPtr,System.IntPtr)"/> function displays the picture stored in the given Windows-format metafile on the specified device.
</para>
<para>
Note: This function is provided only for compatibility with Windows-format metafiles. Enhanced-format metafiles provide superior
functionality and are recommended for new applications. The corresponding function for an enhanced-format metafile is
<see cref="M:Win32Interop.Methods.Gdi32.PlayEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Structs.RECT@)"/>.
</para>
</summary>
<param name="hdc">Handle to a device context.</param>
<param name="hmf">Handle to a Windows-format metafile.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
To convert a Windows-format metafile into an enhanced format metafile, use the <see cref="M:Win32Interop.Methods.Gdi32.SetWinMetaFileBits(System.UInt32,System.IntPtr,System.IntPtr,Win32Interop.Structs.METAFILEPICT@)"/> function.
</para>
<para>A Windows-format metafile can be played multiple times.</para>
<para>
A Windows-format metafile can be embedded in a second Windows-format metafile by calling the <see cref="M:Win32Interop.Methods.Gdi32.PlayMetaFile(System.IntPtr,System.IntPtr)"/> function and playing
the source metafile into the device context for the target metafile.
</para>
<para>Any object created but not deleted in the Windows-format metafile is deleted by this function.</para>
<para>
To stop this function, an application can call the <see cref="M:Win32Interop.Methods.Gdi32.CancelDC(System.IntPtr)"/> function from another thread to terminate the operation. In this
case, the function returns FALSE.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PathToRegion(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PathToRegion(System.IntPtr)"/> function creates a region from the path that is selected into the specified device context. The resulting region
uses device coordinates.
</summary>
<param name="hdc">Handle to a device context that contains a closed path.</param>
<returns>
<para>If the function succeeds, the return value identifies a valid region.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
When you no longer need the HRGN object call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>
The device context identified by the <paramref name="hdc"/> parameter must contain a closed path.
</para>
<para>
After <see cref="M:Win32Interop.Methods.Gdi32.PathToRegion(System.IntPtr)"/> converts a path into a region, the system discards the closed path from the specified device context.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetTextFace(System.IntPtr,System.Int32,System.Text.StringBuilder)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextFace(System.IntPtr,System.Int32,System.Text.StringBuilder)"/> function retrieves the typeface name of the font that is selected into the specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nCount">
The length of the buffer pointed to by <paramref name="lpFaceName"/>. For the ANSI function it is a BYTE count and for the Unicode function it
is a WORD count. Note that for the ANSI function, characters in SBCS code pages take one byte each, while most characters in DBCS code pages take
two bytes; for the Unicode function, most currently defined Unicode characters (those in the Basic Multilingual Plane (BMP)) are one WORD while
Unicode surrogates are two WORDs.
</param>
<param name="lpFaceName">
A pointer to the buffer that receives the typeface name. If this parameter is NULL, the function returns the number of characters in the name,
including the terminating null character.
</param>
<returns>
<para>If the function succeeds, the return value is the number of characters copied to the buffer.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>The typeface name is copied as a null-terminated character string.</para>
<para>
If the name is longer than the number of characters specified by the <paramref name="nCount"/> parameter, the name is truncated.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetTextColor(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextColor(System.IntPtr)"/> function retrieves the current text color for the specified device context.
</summary>
<param name="hdc">Handle to the device context.</param>
<returns>
<para>
If the function succeeds, the return value is the current text color as a <see cref="T:Win32Interop.Structs.COLORREF"/> value.
</para>
<para>If the function fails, the return value is CLR_INVALID. No extended error information is available.</para>
</returns>
<remarks>
The text color defines the foreground color of characters drawn by using the <see cref="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)"/> or <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> function.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetTextAlign(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetTextAlign(System.IntPtr)"/> function retrieves the text-alignment setting for the specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<returns>
If the function succeeds, the return value is the status of the text-alignment flags. For more information about the return value, see the
Remarks section. The return value is a combination of the following values.
</returns>
<remarks>
<para>
The bounding rectangle is a rectangle bounding all of the character cells in a string of text. Its dimensions can be obtained by calling the
<see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint32(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> function.
</para>
<para>
The text-alignment flags determine how the <see cref="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> functions align a string of text in relation
to the string's reference point provided to <see cref="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)"/> or <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/>.
</para>
<para>
The text-alignment flags are not necessarily single bit flags and may be equal to zero. The flags must be examined in groups of related
flags, as shown in the following list.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetRandomRgn(System.IntPtr,System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetRandomRgn(System.IntPtr,System.IntPtr,System.Int32)"/> function copies the system clipping region of a specified device context to a specific region.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="hrgn">
A handle to a region. Before the function is called, this identifies an existing region. After the function returns, this identifies a copy of
the current system region. The old region identified by <paramref name="hrgn"/> is overwritten.
</param>
<param name="iNum">This parameter must be SYSRGN.</param>
<returns>
If the function succeeds, the return value is 1. If the function fails, the return value is -1. If the region to be retrieved is NULL, the return
value is 0. If the function fails or the region to be retrieved is NULL, <paramref name="hrgn"/> is not initialized.
</returns>
<remarks>
<para>
When using the SYSRGN flag, note that the system clipping region might not be current because of window movements. Nonetheless, it is safe to
retrieve and use the system clipping region within the <see cref="M:Win32Interop.Methods.User32.BeginPaint(System.IntPtr,Win32Interop.Structs.PAINTSTRUCT@)"/>-<see cref="M:Win32Interop.Methods.User32.EndPaint(System.IntPtr,Win32Interop.Structs.PAINTSTRUCT@)"/> block during
<see cref="F:Win32Interop.Enums.WM.WM_PAINT"/>
processing. In this case, the system region is the intersection of the update region and the current visible area of the window. Any window
movement following the return of <see cref="M:Win32Interop.Methods.Gdi32.GetRandomRgn(System.IntPtr,System.IntPtr,System.Int32)"/> and before <see cref="M:Win32Interop.Methods.User32.EndPaint(System.IntPtr,Win32Interop.Structs.PAINTSTRUCT@)"/> will result in a new
<see cref="F:Win32Interop.Enums.WM.WM_PAINT"/>
message. Any other use of the SYSRGN flag may result in painting errors in your application.
</para>
<para>The region returned is in screen coordinates.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ExtFloodFill(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ExtFloodFill(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.UInt32)"/> function fills an area of the display surface with the current brush.
</summary>
<param name="hdc">A handle to a device context.</param>
<param name="nXStart">The x-coordinate, in logical units, of the point where filling is to start.</param>
<param name="nYStart">The y-coordinate, in logical units, of the point where filling is to start.</param>
<param name="crColor">
The color of the boundary or of the area to be filled. The interpretation of <paramref name="crColor"/> depends on the value of the
<paramref name="fuFillType"/> parameter. To create a <see cref="T:Win32Interop.Structs.COLORREF"/> color value, use the RGB macro.
</param>
<param name="fuFillType">
<para>The type of fill operation to be performed. This parameter must be one of the following values.</para>
<list type="table">
<item>
<term>FLOODFILLBORDER</term>
<description>
The fill area is bounded by the color specified by the <paramref name="crColor"/> parameter. This style is identical to the filling
performed by the <see cref="M:Win32Interop.Methods.Gdi32.FloodFill(System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function.
</description>
</item>
<item>
<term>FLOODFILLSURFACE</term>
<description>
The fill area is defined by the color that is specified by <paramref name="crColor"/>. Filling continues outward in all directions
as long as the color is encountered. This style is useful for filling areas with multicolored boundaries.
</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>The following are some of the reasons this function might fail:</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ExtCreatePen(System.UInt32,System.UInt32,Win32Interop.Structs.LOGBRUSH@,System.UInt32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ExtCreatePen(System.UInt32,System.UInt32,Win32Interop.Structs.LOGBRUSH@,System.UInt32,System.IntPtr)"/> function creates a logical cosmetic or geometric pen that has the specified style, width, and brush attributes.
</summary>
<param name="dwPenStyle">
<para>
A combination of type, style, end cap, and join attributes. The values from each category are combined by using the bitwise OR operator ( |
).
</para>
<para>The pen type can be one of the following values.</para>
<list type="table">
<item>
<term>PS_GEOMETRIC</term>
<description>The pen is geometric.</description>
</item>
<item>
<term>PS_COSMETIC</term>
<description>The pen is cosmetic.</description>
</item>
</list>
<para>The pen style can be one of the following values.</para>
<list type="table">
<item>
<term>PS_ALTERNATE</term>
<description>The pen sets every other pixel. (This style is applicable only for cosmetic pens.)</description>
</item>
<item>
<term>PS_SOLID</term>
<description>The pen is solid.</description>
</item>
<item>
<term>PS_DASH</term>
<description>The pen is dashed.</description>
</item>
<item>
<term>PS_DOT</term>
<description>The pen is dotted.</description>
</item>
<item>
<term>PS_DASHDOT</term>
<description>The pen has alternating dashes and dots.</description>
</item>
<item>
<term>PS_DASHDOTDOT</term>
<description>The pen has alternating dashes and double dots.</description>
</item>
<item>
<term>PS_NULL</term>
<description>The pen is invisible.</description>
</item>
<item>
<term>PS_USERSTYLE</term>
<description>The pen uses a styling array supplied by the user.</description>
</item>
<item>
<term>PS_INSIDEFRAME</term>
<description>
The pen is solid. When this pen is used in any GDI drawing function that takes a bounding rectangle, the dimensions of the figure are
shrunk so that it fits entirely in the bounding rectangle, taking into account the width of the pen. This applies only to geometric
pens.
</description>
</item>
</list>
<para>The end cap is only specified for geometric pens. The end cap can be one of the following values.</para>
<list type="table">
<item>
<term>PS_ENDCAP_ROUND</term>
<description>End caps are round.</description>
</item>
<item>
<term>PS_ENDCAP_SQUARE</term>
<description>End caps are square.</description>
</item>
<item>
<term>PS_ENDCAP_FLAT</term>
<description>End caps are flat.</description>
</item>
</list>
<para>The join is only specified for geometric pens. The join can be one of the following values.</para>
<list type="table">
<item>
<term>PS_JOIN_BEVEL</term>
<description>Joins are beveled.</description>
</item>
<item>
<term>PS_JOIN_MITER</term>
<description>
Joins are mitered when they are within the current limit set by the <see cref="M:Win32Interop.Methods.Gdi32.SetMiterLimit(System.IntPtr,System.Single,System.IntPtr)"/> function. If it exceeds this limit,
the join is beveled.
</description>
</item>
<item>
<term>PS_JOIN_ROUND</term>
<description>Joins are round.</description>
</item>
</list>
</param>
<param name="dwWidth">
The width of the pen. If the <paramref name="dwPenStyle"/> parameter is PS_GEOMETRIC, the width is given in logical units. If
<paramref name="dwPenStyle"/> is PS_COSMETIC, the width must be set to 1.
</param>
<param name="lplb">
A pointer to a <see cref="T:Win32Interop.Structs.LOGBRUSH"/> structure. If <paramref name="dwPenStyle"/> is PS_COSMETIC, the <see cref="F:Win32Interop.Structs.LOGBRUSH.lbColor"/> member
specifies the color of the pen and the <see cref="!:lpStyle"/> member must be set to BS_SOLID. If <paramref name="dwPenStyle"/> is PS_GEOMETRIC,
all members must be used to specify the brush attributes of the pen.
</param>
<param name="dwStyleCount">
<para>
The length, in DWORD units, of the <paramref name="lpStyle"/> array. This value must be zero if
<paramref name="dwPenStyle"/> is not PS_USERSTYLE.
</para>
<para>The style count is limited to 16.</para>
</param>
<param name="lpStyle">
<para>
A pointer to an array. The first value specifies the length of the first dash in a user-defined style, the second value specifies the length
of the first space, and so on. This pointer must be NULL if <paramref name="dwPenStyle"/> is not PS_USERSTYLE.
</para>
<para>
If the <paramref name="lpStyle"/> array is exceeded during line drawing, the pointer is reset to the beginning of the array. When this
happens and <paramref name="dwStyleCount"/> is an even number, the pattern of dashes and spaces repeats. However, if
<paramref name="dwStyleCount"/> is odd, the pattern reverses when the pointer is reset -- the first element of <paramref name="lpStyle"/>
now refers to spaces, the second refers to dashes, and so forth.
</para>
</param>
<returns>
<para>If the function succeeds, the return value is a handle that identifies a logical pen.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
A geometric pen can have any width and can have any of the attributes of a brush, such as dithers and patterns. A cosmetic pen can only be a
single pixel wide and must be a solid color, but cosmetic pens are generally faster than geometric pens.
</para>
<para>The width of a geometric pen is always specified in world units. The width of a cosmetic pen is always 1.</para>
<para>End caps and joins are only specified for geometric pens.</para>
<para>
After an application creates a logical pen, it can select that pen into a device context by calling the <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function.
After a pen is selected into a device context, it can be used to draw lines and curves.
</para>
<para>
If <paramref name="dwPenStyle"/> is PS_COSMETIC and PS_USERSTYLE, the entries in the <paramref name="lpStyle"/> array specify lengths of
dashes and spaces in style units. A style unit is defined by the device where the pen is used to draw a line.
</para>
<para>
If <paramref name="dwPenStyle"/> is PS_GEOMETRIC and PS_USERSTYLE, the entries in the <paramref name="lpStyle"/> array specify lengths of
dashes and spaces in logical units.
</para>
<para>
If <paramref name="dwPenStyle"/> is PS_ALTERNATE, the style unit is ignored and every other pixel is set.
</para>
<para>
If the <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/> member of the <see cref="T:Win32Interop.Structs.LOGBRUSH"/> structure pointed to by <paramref name="lplb"/> is BS_PATTERN,
the bitmap pointed to by the <see cref="F:Win32Interop.Structs.LOGBRUSH.lbHatch"/> member of that structure cannot be a DIB section. A DIB section is a bitmap
created by
<see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/>. If that bitmap is a DIB section, the <see cref="M:Win32Interop.Methods.Gdi32.ExtCreatePen(System.UInt32,System.UInt32,Win32Interop.Structs.LOGBRUSH@,System.UInt32,System.IntPtr)"/> function fails.
</para>
<para>
When an application no longer requires a specified pen, it should call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete the pen.
</para>
<para>
ICM: No color management is done at pen creation. However, color management is performed when the pen is selected into an ICM-enabled device
context.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.EnumMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnumMetaFileProc,System.Int32)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.EnumMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnumMetaFileProc,System.Int32)"/> function enumerates the records within a Windows-format metafile by retrieving each record and passing it to
the specified callback function. The application-supplied callback function processes each record as required. The enumeration continues
until the last record is processed or when the callback function returns zero.
</para>
<para>
Note: This function is provided only for compatibility with Windows-format metafiles. Enhanced-format metafiles provide superior
functionality and are recommended for new applications. The corresponding function for an enhanced-format metafile is
<see cref="M:Win32Interop.Methods.Gdi32.EnumEnhMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnhMetaFileProc,System.IntPtr,Win32Interop.Structs.RECT@)"/>.
</para>
</summary>
<param name="hdc">Handle to a device context. This handle is passed to the callback function.</param>
<param name="hmf">Handle to a Windows-format metafile.</param>
<param name="lpMetaFunc">
Pointer to an application-supplied callback function. For more information, see <see cref="T:Win32Interop.Methods.EnumMetaFileProc"/>.
</param>
<param name="lParam">Pointer to optional data.</param>
<returns>
<para>If the callback function successfully enumerates all the records in the Windows-format metafile, the return value is nonzero.</para>
<para>If the callback function does not successfully enumerate all the records in the Windows-format metafile, the return value is zero.</para>
</returns>
<remarks>
<para>
To convert a Windows-format metafile into an enhanced-format metafile, use the <see cref="M:Win32Interop.Methods.Gdi32.SetWinMetaFileBits(System.UInt32,System.IntPtr,System.IntPtr,Win32Interop.Structs.METAFILEPICT@)"/> function.
</para>
<para>
You can use the <see cref="M:Win32Interop.Methods.Gdi32.EnumMetaFile(System.IntPtr,System.IntPtr,Win32Interop.Methods.EnumMetaFileProc,System.Int32)"/> function to embed one Windows-format metafile within another.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function deletes a logical pen, brush, font, bitmap, region, or palette, freeing all system resources associated
with the object. After the object is deleted, the specified handle is no longer valid.
</summary>
<param name="hObject">A handle to a logical pen, brush, font, bitmap, region, or palette.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the specified handle is not valid or is currently selected into a DC, the return value is zero.</para>
</returns>
<remarks>
<para>Do not delete a drawing object (pen or brush) while it is still selected into a DC.</para>
<para>When a pattern brush is deleted, the bitmap associated with the brush is not deleted. The bitmap must be deleted independently.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateBitmap(System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmap(System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr)"/> function creates a bitmap with the specified width, height, and color format (color planes and bits-per-pixel).
</summary>
<param name="nWidth">The bitmap width, in pixels.</param>
<param name="nHeight">The bitmap height, in pixels.</param>
<param name="cPlanes">The number of color planes used by the device.</param>
<param name="cBitsPerPel">The number of bits required to identify the color of a single pixel.</param>
<param name="lpvBits">
A pointer to an array of color data used to set the colors in a rectangle of pixels. Each scan line in the rectangle must be word aligned (scan
lines that are not word aligned must be padded with zeros). If this parameter is NULL, the contents of the new bitmap is undefined.
</param>
<returns>
<para>If the function succeeds, the return value is a handle to a bitmap.</para>
<para>If the function fails, the return value is NULL.</para>
<para>This function can return the following value.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmap(System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr)"/> function creates a device-dependent bitmap.
</para>
<para>
After a bitmap is created, it can be selected into a device context by calling the <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function. However, the bitmap
can only be selected into a device context if the bitmap and the DC have the same format.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmap(System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr)"/> function can be used to create color bitmaps. However, for performance reasons applications should use
<see cref="M:Win32Interop.Methods.Gdi32.CreateBitmap(System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr)"/> to create monochrome bitmaps and <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/> to create color bitmaps. Whenever a color
bitmap returned from <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmap(System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr)"/> is selected into a device context, the system checks that the bitmap matches the format of
the device context it is being selected into. Because <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/> takes a device context, it returns a bitmap that
has the same format as the specified device context. Thus, subsequent calls to <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> are faster with a color bitmap
from <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleBitmap(System.IntPtr,System.Int32,System.Int32)"/> than with a color bitmap returned from <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmap(System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr)"/>.
</para>
<para>
If the bitmap is monochrome, zeros represent the foreground color and ones represent the background color for the destination device
context.
</para>
<para>
If an application sets the <paramref name="nWidth"/> or <paramref name="nHeight"/> parameters to zero, <see cref="M:Win32Interop.Methods.Gdi32.CreateBitmap(System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr)"/> returns
the handle to a 1-by-1 pixel, monochrome bitmap.
</para>
<para>
When you no longer need the bitmap, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SwapBuffers(System.IntPtr)">
<summary>
<para>Applies to: desktop apps only</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.SwapBuffers(System.IntPtr)"/> function exchanges the front and back buffers if the current pixel format for the window referenced by the
specified device context includes a back buffer.
</para>
</summary>
<param name="hdc">
Specifies a device context. If the current pixel format for the window referenced by this device context includes a back buffer, the function
exchanges the front and back buffers.
</param>
<returns>
<para>If the function succeeds, the return value is TRUE.</para>
<para>If the function fails, the return value is FALSE. To get extended error information, call GetLastError.</para>
</returns>
<remarks>
<para>
If the current pixel format for the window referenced by the device context does not include a back buffer, this call has no effect and the
content of the back buffer is undefined when the function returns.
</para>
<para>
With multithread applications, flush the drawing commands in any other threads drawing to the same window before calling
<see cref="M:Win32Interop.Methods.Gdi32.SwapBuffers(System.IntPtr)"/>.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.RectVisible(System.IntPtr,Win32Interop.Structs.RECT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.RectVisible(System.IntPtr,Win32Interop.Structs.RECT@)"/> function determines whether any part of the specified rectangle lies within the clipping region of a device
context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lprc">
A pointer to a <see cref="T:Win32Interop.Structs.RECT"/> structure that contains the logical coordinates of the specified rectangle.
</param>
<returns>
<para>If the current transform does not have a rotation and the rectangle lies within the clipping region, the return value is TRUE (1).</para>
<para>If the current transform does not have a rotation and the rectangle does not lie within the clipping region, the return value is FALSE (0).</para>
<para>If the current transform has a rotation and the rectangle lies within the clipping region, the return value is 2.</para>
<para>If the current transform has a rotation and the rectangle does not lie within the clipping region, the return value is 1.</para>
<para>All other return values are considered error codes. If the any parameter is not valid, the return value is undefined.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PolyPolygon(System.IntPtr,Win32Interop.Structs.POINT@,System.Int32[],System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PolyPolygon(System.IntPtr,Win32Interop.Structs.POINT@,System.Int32[],System.Int32)"/> function draws a series of closed polygons. Each polygon is outlined by using the current pen and filled by using
the current brush and polygon fill mode. The polygons drawn by this function can overlap.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpPoints">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures that define the vertices of the polygons, in logical coordinates. The polygons are
specified consecutively. Each polygon is closed automatically by drawing a line from the last vertex to the first. Each vertex should be
specified once.
</param>
<param name="lpPolyCounts">
A pointer to an array of integers, each of which specifies the number of points in the corresponding polygon. Each integer must be greater than
or equal to 2.
</param>
<param name="nCount">The total number of polygons.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>The current position is neither used nor updated by this function.</para>
<para>
Any extra points are ignored. To draw the polygons with more points, divide your data into groups, each of which have less than the maximum
number of points, and call the function for each group of points. Note, it is best to have a polygon in only one of the groups.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetFontData(System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetFontData(System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,System.UInt32)"/> function retrieves font metric data for a TrueType font.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="dwTable">
The name of a font metric table from which the font data is to be retrieved. This parameter can identify one of the metric tables documented in
the TrueType Font Files specification published by Microsoft Corporation. If this parameter is zero, the information is retrieved starting at the
beginning of the file for TrueType font files or from the beginning of the data for the currently selected font for TrueType Collection files. To
retrieve the data from the beginning of the file for TrueType Collection files specify 'ttcf' (0x66637474).
</param>
<param name="dwOffset">
The offset from the beginning of the font metric table to the location where the function should begin retrieving information. If this parameter
is zero, the information is retrieved starting at the beginning of the table specified by the <paramref name="dwTable"/> parameter. If this
value is greater than or equal to the size of the table, an error occurs.
</param>
<param name="lpvBuffer">
A pointer to a buffer that receives the font information. If this parameter is NULL, the function returns the size of the buffer required for the
font data.
</param>
<param name="cbData">
The length, in bytes, of the information to be retrieved. If this parameter is zero, <see cref="M:Win32Interop.Methods.Gdi32.GetFontData(System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,System.UInt32)"/> returns the size of the data
specified in the <paramref name="dwTable"/> parameter.
</param>
<returns>
<para>If the function succeeds, the return value is the number of bytes returned.</para>
<para>If the function fails, the return value is GDI_ERROR.</para>
</returns>
<remarks>
<para>
This function is intended to be used to retrieve TrueType font information directly from the font file by font-manipulation applications. For
information about embedding fonts see the Font Embedding Reference.
</para>
<para>
An application can sometimes use the <see cref="M:Win32Interop.Methods.Gdi32.GetFontData(System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,System.UInt32)"/> function to save a TrueType font with a document. To do this, the application
determines whether the font can be embedded by checking the <see cref="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmfsType"/> member of the
<see cref="T:Win32Interop.Structs.OUTLINETEXTMETRIC"/>
structure. If bit 1 of <see cref="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmfsType"/> is set, embedding is not permitted for the font. If bit 1 is clear, the
font can be embedded. If bit 2 is set, the embedding is read-only. If embedding is permitted, the application can retrieve the entire font
file, specifying zero for the <paramref name="dwTable"/>, <paramref name="dwOffset"/>, and <paramref name="cbData"/> parameters.
</para>
<para>If an application attempts to use this function to retrieve information for a non-TrueType font, an error occurs.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.FlattenPath(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.FlattenPath(System.IntPtr)"/> function transforms any curves in the path that is selected into the current device context (DC), turning each
curve into a sequence of lines.
</summary>
<param name="hdc">A handle to a DC that contains a valid path.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> function draws text using the currently selected font, background color, and text color. You can optionally provide
dimensions to be used for clipping, opaquing, or both.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="X">The x-coordinate, in logical coordinates, of the reference point used to position the string.</param>
<param name="Y">The y-coordinate, in logical coordinates, of the reference point used to position the string.</param>
<param name="fuOptions">
<para>Specifies how to use the application-defined rectangle. This parameter can be one or more of the following values.</para>
<list type="table">
<item>
<term>ETO_CLIPPED</term>
<description>The text will be clipped to the rectangle.</description>
</item>
<item>
<term>ETO_GLYPH_INDEX</term>
<description>
<para>
The <paramref name="lpString"/> array refers to an array returned from <see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> and should be parsed
directly by GDI as no further language-specific processing is required. Glyph indexing only applies to TrueType fonts, but the
flag can be used for bitmap and vector fonts to indicate that no further language processing is necessary and GDI should process
the string directly. Note that all glyph indexes are 16-bit values even though the string is assumed to be an array of 8-bit
values for raster fonts.
</para>
<para>
For ExtTextOutW, the glyph indexes are saved to a metafile. However, to display the correct characters the metafile must be
played back using the same font. For ExtTextOutA, the glyph indexes are not saved.
</para>
</description>
</item>
<item>
<term>ETO_IGNORELANGUAGE</term>
<description>
Reserved for system use. If an application sets this flag, it loses international scripting support and in some cases it may
display no text at all.
</description>
</item>
<item>
<term>ETO_NUMERICSLATIN</term>
<description>To display numbers, use European digits.</description>
</item>
<item>
<term>ETO_NUMERICSLOCAL</term>
<description>To display numbers, use digits appropriate to the locale.</description>
</item>
<item>
<term>ETO_OPAQUE</term>
<description>The current background color should be used to fill the rectangle.</description>
</item>
<item>
<term>ETO_PDY</term>
<description>
When this is set, the array pointed to by <paramref name="lpDx"/> contains pairs of values. The first value of each pair is, as
usual, the distance between origins of adjacent character cells, but the second value is the displacement along the vertical
direction of the font.
</description>
</item>
<item>
<term>ETO_RTLREADING</term>
<description>
Middle East language edition of Windows: If this value is specified and a Hebrew or Arabic font is selected into the device context,
the string is output using right-to-left reading order. If this value is not specified, the string is output in left-to-right order.
The same effect can be achieved by setting the TA_RTLREADING value in <see cref="M:Win32Interop.Methods.Gdi32.SetTextAlign(System.IntPtr,System.UInt32)"/>. This value is preserved for
backward compatibility.
</description>
</item>
</list>
<para>
The ETO_GLYPH_INDEX and ETO_RTLREADING values cannot be used together. Because ETO_GLYPH_INDEX implies that all language processing has been
completed, the function ignores the ETO_RTLREADING flag if also specified.
</para>
</param>
<param name="lprc">
A pointer to an optional <see cref="T:Win32Interop.Structs.RECT"/> structure that specifies the dimensions, in logical coordinates, of a rectangle that is used for
clipping, opaquing, or both.
</param>
<param name="lpString">
A pointer to a string that specifies the text to be drawn. The string does not need to be zero-terminated, since <paramref name="cbCount"/>
specifies the length of the string.
</param>
<param name="cbCount">
<para>
The length of the string pointed to by <paramref name="lpString"/>.
</para>
<para>This value may not exceed 8192.</para>
</param>
<param name="lpDx">
A pointer to an optional array of values that indicate the distance between origins of adjacent character cells. For example, lpDx[i] logical
units separate the origins of character cell i and character cell i + 1.
</param>
<returns>
<para>
If the string is drawn, the return value is nonzero. However, if the ANSI version of <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> is called with
ETO_GLYPH_INDEX, the function returns TRUE even though the function does nothing.
</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The current text-alignment settings for the specified device context determine how the reference point is used to position the text. The
text-alignment settings are retrieved by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetTextAlign(System.IntPtr)"/> function. The text-alignment settings are altered by calling
the <see cref="M:Win32Interop.Methods.Gdi32.SetTextAlign(System.IntPtr,System.UInt32)"/> function. You can use the following values for text alignment. Only one flag can be chosen from those that
affect horizontal and vertical alignment. In addition, only one of the two flags that alter the current position can be chosen.
</para>
<para></para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.EnumObjects(System.IntPtr,System.Int32,Win32Interop.Methods.EnumObjectsProc,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.EnumObjects(System.IntPtr,System.Int32,Win32Interop.Methods.EnumObjectsProc,System.Int32)"/> function enumerates the pens or brushes available for the specified device context (DC). This function calls the
application-defined callback function once for each available object, supplying data describing that object. <see cref="M:Win32Interop.Methods.Gdi32.EnumObjects(System.IntPtr,System.Int32,Win32Interop.Methods.EnumObjectsProc,System.Int32)"/> continues
calling the callback function until the callback function returns zero or until all of the objects have been enumerated.
</summary>
<param name="hdc">A handle to the DC.</param>
<param name="nObjectType">The object type. This parameter can be OBJ_BRUSH or OBJ_PEN.</param>
<param name="lpObjectFunc">
A pointer to the application-defined callback function. For more information about the callback function, see the <see cref="T:Win32Interop.Methods.EnumObjectsProc"/>
function.
</param>
<param name="lParam">A pointer to the application-defined data. The data is passed to the callback function along with the object information.</param>
<returns>
<para>If the function succeeds, the return value is the last value returned by the callback function. Its meaning is user-defined.</para>
<para>
If the objects cannot be enumerated (for example, there are too many objects), the function returns zero without calling the callback
function.
</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateFont(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.String)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateFont(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.String)"/> function creates a logical font with the specified characteristics. The logical font can subsequently be selected
as the font for any device.
</summary>
<param name="nHeight">
<para>
The height, in logical units, of the font's character cell or character. The character height value (also known as the em height) is the
character cell height value minus the internal-leading value. The font mapper interprets the value specified in <paramref name="nHeight"/>
in the following manner.
</para>
<list type="table">
<item>
<term>&gt; 0</term>
<description>The font mapper transforms this value into device units and matches it against the cell height of the available fonts.</description>
</item>
<item>
<term>0</term>
<description>The font mapper uses a default height value when it searches for a match.</description>
</item>
<item>
<term>&lt; 0</term>
<description>
The font mapper transforms this value into device units and matches its absolute value against the character height of the
available fonts.
</description>
</item>
</list>
<para>For all height comparisons, the font mapper looks for the largest font that does not exceed the requested size.</para>
<para>This mapping occurs when the font is used for the first time.</para>
<para>For the MM_TEXT mapping mode, you can use the following formula to specify a height for a font with a specified point size:</para>
</param>
<param name="nWidth">
The average width, in logical units, of characters in the requested font. If this value is zero, the font mapper chooses a closest match value.
The closest match value is determined by comparing the absolute values of the difference between the current device's aspect ratio and the
digitized aspect ratio of available fonts.
</param>
<param name="nEscapement">
<para>
The angle, in tenths of degrees, between the escapement vector and the x-axis of the device. The escapement vector is parallel to the base
line of a row of text.
</para>
<para>
When the graphics mode is set to GM_ADVANCED, you can specify the escapement angle of the string independently of the orientation angle of
the string's characters.
</para>
<para>
When the graphics mode is set to GM_COMPATIBLE, <paramref name="nEscapement"/> specifies both the escapement and orientation. You should set
<paramref name="nEscapement"/> and <paramref name="nOrientation"/> to the same value.
</para>
</param>
<param name="nOrientation">The angle, in tenths of degrees, between each character's base line and the x-axis of the device.</param>
<param name="fnWeight">
<para>
The weight of the font in the range 0 through 1000. For example, 400 is normal and 700 is bold. If this value is zero, a default weight is
used.
</para>
<para>The following values are defined for convenience.</para>
<list type="table">
<item>
<term>FW_DONTCARE</term>
<description>0</description>
</item>
<item>
<term>FW_THIN</term>
<description>100</description>
</item>
<item>
<term>FW_EXTRALIGHT</term>
<description>200</description>
</item>
<item>
<term>FW_ULTRALIGHT</term>
<description>200</description>
</item>
<item>
<term>FW_LIGHT</term>
<description>300</description>
</item>
<item>
<term>FW_NORMAL</term>
<description>400</description>
</item>
<item>
<term>FW_REGULAR</term>
<description>400</description>
</item>
<item>
<term>FW_MEDIUM</term>
<description>500</description>
</item>
<item>
<term>FW_SEMIBOLD</term>
<description>600</description>
</item>
<item>
<term>FW_DEMIBOLD</term>
<description>600</description>
</item>
<item>
<term>FW_BOLD</term>
<description>700</description>
</item>
<item>
<term>FW_EXTRABOLD</term>
<description>800</description>
</item>
<item>
<term>FW_ULTRABOLD</term>
<description>800</description>
</item>
<item>
<term>FW_HEAVY</term>
<description>900</description>
</item>
<item>
<term>FW_BLACK</term>
<description>900</description>
</item>
</list>
</param>
<param name="fdwItalic">Specifies an italic font if set to TRUE.</param>
<param name="fdwUnderline">Specifies an underlined font if set to TRUE.</param>
<param name="fdwStrikeOut">A strikeout font if set to TRUE.</param>
<param name="fdwCharSet">
<para>The character set. The following values are predefined:</para>
<para>Korean language edition of Windows:</para>
<para>Middle East language edition of Windows:</para>
<para>Thai language edition of Windows:</para>
<para>The OEM_CHARSET value specifies a character set that is operating-system dependent.</para>
<para>
DEFAULT_CHARSET is set to a value based on the current system locale. For example, when the system locale is English (United States), it is
set as ANSI_CHARSET.
</para>
<para>
Fonts with other character sets may exist in the operating system. If an application uses a font with an unknown character set, it should not
attempt to translate or interpret strings that are rendered with that font.
</para>
<para>
To ensure consistent results when creating a font, do not specify OEM_CHARSET or DEFAULT_CHARSET. If you specify a typeface name in the
<paramref name="lpszFace"/> parameter, make sure that the <paramref name="fdwCharSet"/> value matches the character set of the typeface
specified in <paramref name="lpszFace"/>.
</para>
</param>
<param name="fdwOutputPrecision">
<para>
The output precision. The output precision defines how closely the output must match the requested font's height, width, character
orientation, escapement, pitch, and font type. It can be one of the following values.
</para>
<list type="table">
<item>
<term>OUT_CHARACTER_PRECIS</term>
<description>Not used.</description>
</item>
<item>
<term>OUT_DEFAULT_PRECIS</term>
<description>The default font mapper behavior.</description>
</item>
<item>
<term>OUT_DEVICE_PRECIS</term>
<description>Instructs the font mapper to choose a Device font when the system contains multiple fonts with the same name.</description>
</item>
<item>
<term>OUT_OUTLINE_PRECIS</term>
<description>This value instructs the font mapper to choose from TrueType and other outline-based fonts.</description>
</item>
<item>
<term>OUT_PS_ONLY_PRECIS</term>
<description>
Instructs the font mapper to choose from only PostScript fonts. If there are no PostScript fonts installed in the system, the font
mapper returns to default behavior.
</description>
</item>
<item>
<term>OUT_RASTER_PRECIS</term>
<description>Instructs the font mapper to choose a raster font when the system contains multiple fonts with the same name.</description>
</item>
<item>
<term>OUT_STRING_PRECIS</term>
<description>This value is not used by the font mapper, but it is returned when raster fonts are enumerated.</description>
</item>
<item>
<term>OUT_STROKE_PRECIS</term>
<description>
This value is not used by the font mapper, but it is returned when TrueType, other outline-based fonts, and vector fonts are
enumerated.
</description>
</item>
<item>
<term>OUT_TT_ONLY_PRECIS</term>
<description>
Instructs the font mapper to choose from only TrueType fonts. If there are no TrueType fonts installed in the system, the font mapper
returns to default behavior.
</description>
</item>
<item>
<term>OUT_TT_PRECIS</term>
<description>Instructs the font mapper to choose a TrueType font when the system contains multiple fonts with the same name.</description>
</item>
</list>
<para>
Applications can use the OUT_DEVICE_PRECIS, OUT_RASTER_PRECIS, OUT_TT_PRECIS, and OUT_PS_ONLY_PRECIS values to control how the font mapper
chooses a font when the operating system contains more than one font with a specified name. For example, if an operating system contains a
font named Symbol in raster and TrueType form, specifying OUT_TT_PRECIS forces the font mapper to choose the TrueType version. Specifying
OUT_TT_ONLY_PRECIS forces the font mapper to choose a TrueType font, even if it must substitute a TrueType font of another name.
</para>
</param>
<param name="fdwClipPrecision">
<para>
The clipping precision. The clipping precision defines how to clip characters that are partially outside the clipping region. It can be one
or more of the following values.
</para>
<list type="table">
<item>
<term>CLIP_CHARACTER_PRECIS</term>
<description>Not used.</description>
</item>
<item>
<term>CLIP_DEFAULT_PRECIS</term>
<description>Specifies default clipping behavior.</description>
</item>
<item>
<term>CLIP_DFA_DISABLE</term>
<description>
Windows XP SP1: Turns off font association for the font. Note that this flag is not guaranteed to have any effect on any platform
after Windows Server 2003.
</description>
</item>
<item>
<term>CLIP_EMBEDDED</term>
<description>You must specify this flag to use an embedded read-only font.</description>
</item>
<item>
<term>CLIP_LH_ANGLES</term>
<description>
<para>
When this value is used, the rotation for all fonts depends on whether the orientation of the coordinate system is left-handed
or right-handed.
</para>
<para>
If not used, device fonts always rotate counterclockwise, but the rotation of other fonts is dependent on the orientation of
the coordinate system.
</para>
<para>
For more information about the orientation of coordinate systems, see the description of the <paramref name="nOrientation"/>
parameter
</para>
</description>
</item>
<item>
<term>CLIP_MASK</term>
<description>Not used.</description>
</item>
<item>
<term>CLIP_DFA_OVERRIDE</term>
<description>
Turns off font association for the font. This is identical to CLIP_DFA_DISABLE, but it can have problems in some situations; the
recommended flag to use is CLIP_DFA_DISABLE.
</description>
</item>
<item>
<term>CLIP_STROKE_PRECIS</term>
<description>
<para>Not used by the font mapper, but is returned when raster, vector, or TrueType fonts are enumerated.</para>
<para>For compatibility, this value is always returned when enumerating fonts.</para>
</description>
</item>
<item>
<term>CLIP_TT_ALWAYS</term>
<description>Not used.</description>
</item>
</list>
</param>
<param name="fdwQuality">
<para>
The output quality. The output quality defines how carefully GDI must attempt to match the logical-font attributes to those of an actual
physical font. It can be one of the following values.
</para>
<list type="table">
<item>
<term>ANTIALIASED_QUALITY</term>
<description>Font is antialiased, or smoothed, if the font supports it and the size of the font is not too small or too large.</description>
</item>
<item>
<term>CLEARTYPE_QUALITY</term>
<description>If set, text is rendered (when possible) using ClearType antialiasing method. See Remarks for more information.</description>
</item>
<item>
<term>DEFAULT_QUALITY</term>
<description>Appearance of the font does not matter.</description>
</item>
<item>
<term>DRAFT_QUALITY</term>
<description>
Appearance of the font is less important than when the PROOF_QUALITY value is used. For GDI raster fonts, scaling is enabled, which
means that more font sizes are available, but the quality may be lower. Bold, italic, underline, and strikeout fonts are synthesized,
if necessary.
</description>
</item>
<item>
<term>NONANTIALIASED_QUALITY</term>
<description>Font is never antialiased, that is, font smoothing is not done.</description>
</item>
<item>
<term>PROOF_QUALITY</term>
<description>
Character quality of the font is more important than exact matching of the logical-font attributes. For GDI raster fonts, scaling is
disabled and the font closest in size is chosen. Although the chosen font size may not be mapped exactly when PROOF_QUALITY is used,
the quality of the font is high and there is no distortion of appearance. Bold, italic, underline, and strikeout fonts are
synthesized, if necessary.
</description>
</item>
</list>
<para>
If the output quality is DEFAULT_QUALITY, DRAFT_QUALITY, or PROOF_QUALITY, then the font is antialiased if the SPI_GETFONTSMOOTHING system
parameter is TRUE. Users can control this system parameter from the Control Panel. (The precise wording of the setting in the Control panel
depends on the version of Windows, but it will be words to the effect of "Smooth edges of screen fonts".)
</para>
</param>
<param name="fdwPitchAndFamily">
<para>The pitch and family of the font. The two low-order bits specify the pitch of the font and can be one of the following values:</para>
<para>The four high-order bits specify the font family and can be one of the following values.</para>
<list type="table">
<item>
<term>FF_DECORATIVE</term>
<description>Novelty fonts. Old English is an example.</description>
</item>
<item>
<term>FF_DONTCARE</term>
<description>Use default font.</description>
</item>
<item>
<term>FF_MODERN</term>
<description>Fonts with constant stroke width, with or without serifs. Pica, Elite, and Courier New are examples.</description>
</item>
<item>
<term>FF_ROMAN</term>
<description>Fonts with variable stroke width and with serifs. MS Serif is an example.</description>
</item>
<item>
<term>FF_SCRIPT</term>
<description>Fonts designed to look like handwriting. Script and Cursive are examples.</description>
</item>
<item>
<term>FF_SWISS</term>
<description>Fonts with variable stroke width and without serifs. MS?Sans Serif is an example.</description>
</item>
</list>
<para>
An application can specify a value for the <paramref name="fdwPitchAndFamily"/> parameter by using the Boolean OR operator to join a pitch
constant with a family constant.
</para>
<para>
Font families describe the look of a font in a general way. They are intended for specifying fonts when the exact typeface requested is not
available.
</para>
</param>
<param name="lpszFace">
<para>
A pointer to a null-terminated string that specifies the typeface name of the font. The length of this string must not exceed 32 characters,
including the terminating null character. The <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamilies(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/> function can be used to enumerate the typeface names of all
currently available fonts. For more information, see the Remarks.
</para>
<para>
If <paramref name="lpszFace"/> is NULL or empty string, GDI uses the first font that matches the other specified attributes.
</para>
</param>
<returns>
<para>If the function succeeds, the return value is a handle to a logical font.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
When you no longer need the font, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>
To help protect the copyrights of vendors who provide fonts for Windows, applications should always report the exact name of a selected font.
Because available fonts can vary from system to system, do not assume that the selected font is always the same as the requested font. For
example, if you request a font named Palatino, but no such font is available on the system, the font mapper will substitute a font that has
similar attributes but a different name. Always report the name of the selected font to the user.
</para>
<para>
To get the appropriate font on different language versions of the OS, call <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> with the desired font
characteristics in the <see cref="T:Win32Interop.Structs.LOGFONT"/> structure, then retrieve the appropriate typeface name and create the font using
<see cref="M:Win32Interop.Methods.Gdi32.CreateFont(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.String)"/> or <see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirect(Win32Interop.Structs.LOGFONT@)"/>.
</para>
<para>
The font mapper for <see cref="M:Win32Interop.Methods.Gdi32.CreateFont(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.String)"/>,<see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirect(Win32Interop.Structs.LOGFONT@)"/>, and <see cref="M:Win32Interop.Methods.Gdi32.CreateFontIndirectEx(Win32Interop.Structs.ENUMLOGFONTEXDV@)"/> recognizes both the
English and the localized typeface name, regardless of locale.
</para>
<para>The following situations do not support ClearType antialiasing:</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CloseFigure(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CloseFigure(System.IntPtr)"/> function closes an open figure in a path.
</summary>
<param name="hdc">Handle to the device context in which the figure will be closed.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CloseFigure(System.IntPtr)"/> function closes the figure by drawing a line from the current position to the first point of the figure
(usually, the point specified by the most recent call to the <see cref="M:Win32Interop.Methods.Gdi32.MoveToEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function) and then connects the lines by using the line
join style. If a figure is closed by using the <see cref="M:Win32Interop.Methods.Gdi32.LineTo(System.IntPtr,System.Int32,System.Int32)"/> function instead of <see cref="M:Win32Interop.Methods.Gdi32.CloseFigure(System.IntPtr)"/>, end caps are used to
create the corner instead of a join.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CloseFigure(System.IntPtr)"/> function should only be called if there is an open path bracket in the specified device context.
</para>
<para>
A figure in a path is open unless it is explicitly closed by using this function. (A figure can be open even if the current point and the
starting point of the figure are the same.)
</para>
<para>
After a call to <see cref="M:Win32Interop.Methods.Gdi32.CloseFigure(System.IntPtr)"/>, adding a line or curve to the path starts a new figure.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.StrokePath(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.StrokePath(System.IntPtr)"/> function renders the specified path by using the current pen.
</summary>
<param name="hdc">Handle to a device context that contains the completed path.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The path, if it is to be drawn by <see cref="M:Win32Interop.Methods.Gdi32.StrokePath(System.IntPtr)"/>, must have been completed through a call to <see cref="M:Win32Interop.Methods.Gdi32.EndPath(System.IntPtr)"/>. Calling this
function on a path for which <see cref="M:Win32Interop.Methods.Gdi32.EndPath(System.IntPtr)"/> has not been called will cause this function to fail and return zero. Unlike other path
drawing functions such as <see cref="M:Win32Interop.Methods.Gdi32.StrokeAndFillPath(System.IntPtr)"/>, <see cref="M:Win32Interop.Methods.Gdi32.StrokePath(System.IntPtr)"/> will not attempt to close the path by drawing a straight
line from the first point on the path to the last point on the path.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> function copies a bitmap from a source rectangle into a destination rectangle, stretching or compressing the bitmap
to fit the dimensions of the destination rectangle, if necessary. The system stretches or compresses the bitmap according to the stretching mode
currently set in the destination device context.
</summary>
<param name="hdcDest">A handle to the destination device context.</param>
<param name="nXOriginDest">The x-coordinate, in logical units, of the upper-left corner of the destination rectangle.</param>
<param name="nYOriginDest">The y-coordinate, in logical units, of the upper-left corner of the destination rectangle.</param>
<param name="nWidthDest">The width, in logical units, of the destination rectangle.</param>
<param name="nHeightDest">The height, in logical units, of the destination rectangle.</param>
<param name="hdcSrc">A handle to the source device context.</param>
<param name="nXOriginSrc">The x-coordinate, in logical units, of the upper-left corner of the source rectangle.</param>
<param name="nYOriginSrc">The y-coordinate, in logical units, of the upper-left corner of the source rectangle.</param>
<param name="nWidthSrc">The width, in logical units, of the source rectangle.</param>
<param name="nHeightSrc">The height, in logical units, of the source rectangle.</param>
<param name="dwRop">
<para>
The raster operation to be performed. Raster operation codes define how the system combines colors in output operations that involve a brush,
a source bitmap, and a destination bitmap.
</para>
<para>
See <see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> for a list of common raster operation codes (ROPs). Note that the CAPTUREBLT ROP generally cannot be used for
printing device contexts.
</para>
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> stretches or compresses the source bitmap in memory and then copies the result to the destination rectangle. This
bitmap can be either a compatible bitmap (DDB) or the output from <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/>. The color data for pattern or destination
pixels is merged after the stretching or compression occurs.
</para>
<para>
When an enhanced metafile is being recorded, an error occurs (and the function returns FALSE) if the source device context identifies an
enhanced-metafile device context.
</para>
<para>If the specified raster operation requires a brush, the system uses the brush currently selected into the destination device context.</para>
<para>
The destination coordinates are transformed by using the transformation currently specified for the destination device context; the source
coordinates are transformed by using the transformation currently specified for the source device context.
</para>
<para>If the source transformation has a rotation or shear, an error occurs.</para>
<para>
If destination, source, and pattern bitmaps do not have the same color format, <see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> converts the source and pattern
bitmaps to match the destination bitmap.
</para>
<para>
If <see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> must convert a monochrome bitmap to a color bitmap, it sets white bits (1) to the background color and black
bits (0) to the foreground color. To convert a color bitmap to a monochrome bitmap, it sets pixels that match the background color to white
(1) and sets all other pixels to black (0). The foreground and background colors of the device context with color are used.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> creates a mirror image of a bitmap if the signs of the <paramref name="nWidthSrc"/> and
<paramref name="nWidthDest"/> parameters or if the <paramref name="nHeightSrc"/> and <paramref name="nHeightDest"/> parameters differ. If
<paramref name="nWidthSrc"/> and <paramref name="nWidthDest"/> have different signs, the function creates a mirror image of the bitmap
along the x-axis. If <paramref name="nHeightSrc"/> and <paramref name="nHeightDest"/> have different signs, the function creates a mirror
image of the bitmap along the y-axis.
</para>
<para>
Not all devices support the <see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> function. For more information, see the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/>.
</para>
<para>ICM: No color management is performed when a blit operation occurs.</para>
<para>
When used in a multiple monitor system, both <paramref name="hdcSrc"/> and <paramref name="hdcDest"/> must refer to the same device or the
function will fail. To transfer data between DCs for different devices, convert the memory bitmap to a DIB by calling
<see cref="M:Win32Interop.Methods.Gdi32.GetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/>. To display the DIB to the second device, call <see cref="M:Win32Interop.Methods.Gdi32.SetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> or <see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/>.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetRectRgn(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetRectRgn(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32)"/> function converts a region into a rectangular region with the specified coordinates.
</summary>
<param name="hrgn">Handle to the region.</param>
<param name="nLeftRect">Specifies the x-coordinate of the upper-left corner of the rectangular region in logical units.</param>
<param name="nTopRect">Specifies the y-coordinate of the upper-left corner of the rectangular region in logical units.</param>
<param name="nRightRect">Specifies the x-coordinate of the lower-right corner of the rectangular region in logical units.</param>
<param name="nBottomRect">Specifies the y-coordinate of the lower-right corner of the rectangular region in logical units.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>The region does not include the lower and right boundaries of the rectangle.</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetMetaRgn(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetMetaRgn(System.IntPtr)"/> function intersects the current clipping region for the specified device context with the current metaregion and
saves the combined region as the new metaregion for the specified device context. The clipping region is reset to a null region.
</summary>
<param name="hdc">A handle to the device context.</param>
<returns>The return value specifies the new clipping region's complexity and can be one of the following values.</returns>
<remarks>
<para>The current clipping region of a device context is defined by the intersection of its clipping region and its metaregion.</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.SetMetaRgn(System.IntPtr)"/> function should only be called after an application's original device context was saved by calling the
<see cref="M:Win32Interop.Methods.Gdi32.SaveDC(System.IntPtr)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetMapMode(System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetMapMode(System.IntPtr,System.Int32)"/> function sets the mapping mode of the specified device context. The mapping mode defines the unit of measure used
to transform page-space units into device-space units, and also defines the orientation of the device's x and y axes.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="fnMapMode">
<para>The new mapping mode. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>MM_ANISOTROPIC</term>
<description>
Logical units are mapped to arbitrary units with arbitrarily scaled axes. Use the <see cref="M:Win32Interop.Methods.Gdi32.SetWindowExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> and
<see cref="M:Win32Interop.Methods.Gdi32.SetViewportExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> functions to specify the units, orientation, and scaling.
</description>
</item>
<item>
<term>MM_HIENGLISH</term>
<description>Each logical unit is mapped to 0.001 inch. Positive x is to the right; positive y is up.</description>
</item>
<item>
<term>MM_HIMETRIC</term>
<description>Each logical unit is mapped to 0.01 millimeter. Positive x is to the right; positive y is up.</description>
</item>
<item>
<term>MM_ISOTROPIC</term>
<description>
Logical units are mapped to arbitrary units with equally scaled axes; that is, one unit along the x-axis is equal to one unit along
the y-axis. Use the <see cref="M:Win32Interop.Methods.Gdi32.SetWindowExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> and <see cref="M:Win32Interop.Methods.Gdi32.SetViewportExtEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> functions to specify the units and the
orientation of the axes. Graphics device interface (GDI) makes adjustments as necessary to ensure the x and y units remain the same
size (When the window extent is set, the viewport will be adjusted to keep the units isotropic).
</description>
</item>
<item>
<term>MM_LOENGLISH</term>
<description>Each logical unit is mapped to 0.01 inch. Positive x is to the right; positive y is up.</description>
</item>
<item>
<term>MM_LOMETRIC</term>
<description>Each logical unit is mapped to 0.1 millimeter. Positive x is to the right; positive y is up.</description>
</item>
<item>
<term>MM_TEXT</term>
<description>Each logical unit is mapped to one device pixel. Positive x is to the right; positive y is down.</description>
</item>
<item>
<term>MM_TWIPS</term>
<description>
Each logical unit is mapped to one twentieth of a printer's point (1/1440 inch, also called a twip). Positive x is to the
right; positive y is up.
</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value identifies the previous mapping mode.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>The MM_TEXT mode allows applications to work in device pixels, whose size varies from device to device.</para>
<para>
The MM_HIENGLISH, MM_HIMETRIC, MM_LOENGLISH, MM_LOMETRIC, and MM_TWIPS modes are useful for applications drawing in physically meaningful
units (such as inches or millimeters).
</para>
<para>The MM_ISOTROPIC mode ensures a 1:1 aspect ratio.</para>
<para>The MM_ANISOTROPIC mode allows the x-coordinates and y-coordinates to be adjusted independently.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetICMMode(System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetICMMode(System.IntPtr,System.Int32)"/> function causes Image Color Management to be enabled, disabled, or queried on a given device context (DC).
</summary>
<param name="hDC">Identifies handle to the device context.</param>
<param name="iEnableICM">
<para>Turns on and off image color management. This parameter can take one of the following constant values.</para>
<list type="table">
<item>
<term>ICM_ON</term>
<description>Turns on color management. Turns off old-style color correction of halftones.</description>
</item>
<item>
<term>ICM_OFF</term>
<description>Turns off color management. Turns on old-style color correction of halftones.</description>
</item>
<item>
<term>ICM_QUERY</term>
<description>Queries the current state of color management.</description>
</item>
<item>
<term>ICM_DONE_OUTSIDEDC</term>
<description>
Turns off color management inside DC. Under Windows 2000, also turns off old-style color correction of halftones. Not
supported under Windows 95.
</description>
</item>
</list>
</param>
<remarks>
<para>
If the system cannot find an ICC color profile to match the state of the device, <see cref="M:Win32Interop.Methods.Gdi32.SetICMMode(System.IntPtr,System.Int32)"/> fails and returns zero.
</para>
<para>
Once WCS is enabled for a device context (DC), colors passed into the DC using most Win32 API functions are color matched. The primary
exceptions are <see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/>. The assumption is that when performing a bit block transfer (blit) from
one DC to another, the two DCs are already compatible and need no color correction. If this is not the case, color correction may be
performed. Specifically, if a device independent bitmap (DIB) is used as the source for a blit, and the blit is performed into a DC that has
WCS enabled, color matching will be performed. If this is not what you want, turn WCS off for the destination DC by calling
<see cref="M:Win32Interop.Methods.Gdi32.SetICMMode(System.IntPtr,System.Int32)"/> before calling <see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> or <see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/>.
</para>
<para>
If the <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleDC(System.IntPtr)"/> function is used to create a bitmap in a DC, it is possible for the bitmap to be color matched
twice, once when it is created and once when a blit is performed. The reason is that a bitmap in a DC created by the
<see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleDC(System.IntPtr)"/> function acquires the current brush, pens, and palette of the source DC. However, WCS will be disabled by
default for the new DC. If WCS is later enabled for the new DC by using the <see cref="M:Win32Interop.Methods.Gdi32.SetICMMode(System.IntPtr,System.Int32)"/> function, a color correction will be
done. To prevent double color corrections through the use of the <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleDC(System.IntPtr)"/> function, use the
<see cref="M:Win32Interop.Methods.Gdi32.SetICMMode(System.IntPtr,System.Int32)"/> function to turn WCS off for the source DC before the <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleDC(System.IntPtr)"/> function is called.
</para>
<para>
When a compatible DC is created from a printer's DC (see <see cref="M:Win32Interop.Methods.Gdi32.CreateCompatibleDC(System.IntPtr)"/> ), the default is for color matching to always be
performed if it is enabled for the printer's DC. The default color profile for the printer is used when a blit is performed into the
printer's DC using <see cref="M:Win32Interop.Methods.Gdi32.SetDIBitsToDevice(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.UInt32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> or <see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/>. If this is not what you want, turn WCS off for the
printer's DC by calling <see cref="M:Win32Interop.Methods.Gdi32.SetICMMode(System.IntPtr,System.Int32)"/> before calling <see cref="M:Win32Interop.Methods.Gdi32.SetDIBitsToDevice(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.UInt32,System.Int32,System.Int32,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> or <see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/>.
</para>
<para>
Also, when printing to a printer's DC with WCS turned on, the <see cref="M:Win32Interop.Methods.Gdi32.SetICMMode(System.IntPtr,System.Int32)"/> function needs to be called after every call to the
<see cref="M:Win32Interop.Methods.Gdi32.StartPage(System.IntPtr)"/> function to turn back on WCS. The <see cref="M:Win32Interop.Methods.Gdi32.StartPage(System.IntPtr)"/> function calls the <see cref="M:Win32Interop.Methods.Gdi32.RestoreDC(System.IntPtr,System.Int32)"/> and
<see cref="M:Win32Interop.Methods.Gdi32.SaveDC(System.IntPtr)"/> functions, which result in WCS being turned off for the printer's DC.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetBkColor(System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetBkColor(System.IntPtr,System.UInt32)"/> function sets the current background color to the specified color value, or to the nearest physical color if the
device cannot represent the specified color value.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="crColor">
The new background color. To make a <see cref="T:Win32Interop.Structs.COLORREF"/> value, use the RGB macro.
</param>
<returns>
<para>
If the function succeeds, the return value specifies the previous background color as a <see cref="T:Win32Interop.Structs.COLORREF"/> value.
</para>
<para>If the function fails, the return value is CLR_INVALID.</para>
</returns>
<remarks>
<para>
This function fills the gaps between styled lines drawn using a pen created by the <see cref="M:Win32Interop.Methods.Gdi32.CreatePen(System.Int32,System.Int32,System.UInt32)"/> function; it does not fill the
gaps between styled lines drawn using a pen created by the <see cref="M:Win32Interop.Methods.Gdi32.ExtCreatePen(System.UInt32,System.UInt32,Win32Interop.Structs.LOGBRUSH@,System.UInt32,System.IntPtr)"/> function. The <see cref="M:Win32Interop.Methods.Gdi32.SetBkColor(System.IntPtr,System.UInt32)"/> function also
sets the background colors for <see cref="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/>.
</para>
<para>
If the background mode is OPAQUE, the background color is used to fill gaps between styled lines, gaps between hatched lines in brushes, and
character cells. The background color is also used when converting bitmaps from color to monochrome and vice versa.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PtInRegion(System.IntPtr,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PtInRegion(System.IntPtr,System.Int32,System.Int32)"/> function determines whether the specified point is inside the specified region.
</summary>
<param name="hrgn">Handle to the region to be examined.</param>
<param name="X">Specifies the x-coordinate of the point in logical units.</param>
<param name="Y">Specifies the y-coordinate of the point in logical units.</param>
<returns>
<para>If the specified point is in the region, the return value is nonzero.</para>
<para>If the specified point is not in the region, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PolylineTo(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PolylineTo(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)"/> function draws one or more straight lines.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lppt">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures that contains the vertices of the line, in logical units.
</param>
<param name="cCount">The number of points in the array.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
Unlike the <see cref="M:Win32Interop.Methods.Gdi32.Polyline(System.IntPtr,Win32Interop.Structs.POINT[],System.Int32)"/> function, the <see cref="M:Win32Interop.Methods.Gdi32.PolylineTo(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)"/> function uses and updates the current position.
</para>
<para>
A line is drawn from the current position to the first point specified by the <paramref name="lppt"/> parameter by using the current pen.
For each additional line, the function draws from the ending point of the previous line to the next point specified by
<paramref name="lppt"/>.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.PolylineTo(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)"/> moves the current position to the ending point of the last line.
</para>
<para>If the line segments drawn by this function form a closed figure, the figure is not filled.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PolyBezier(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PolyBezier(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)"/> function draws one or more Bézier curves.
</summary>
<param name="hdc">A handle to a device context.</param>
<param name="lppt">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures that contain the endpoints and control points of the curve(s), in logical units.
</param>
<param name="cPoints">
The number of points in the <paramref name="lppt"/> array. This value must be one more than three times the number of curves to be drawn,
because each Bézier curve requires two control points and an endpoint, and the initial curve requires an additional starting point.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.PolyBezier(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)"/> function draws cubic Bézier curves by using the endpoints and control points specified by the
<paramref name="lppt"/> parameter. The first curve is drawn from the first point to the fourth point by using the second and third points as
control points. Each subsequent curve in the sequence needs exactly three more points: the ending point of the previous curve is used as the
starting point, the next two points in the sequence are control points, and the third is the ending point.
</para>
<para>
The current position is neither used nor updated by the <see cref="M:Win32Interop.Methods.Gdi32.PolyBezier(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)"/> function. The figure is not filled.
</para>
<para>This function draws lines by using the current pen.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetObject(System.IntPtr,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetObject(System.IntPtr,System.Int32,System.IntPtr)"/> function retrieves information for the specified graphics object.
</summary>
<param name="hgdiobj">
A handle to the graphics object of interest. This can be a handle to one of the following: a logical bitmap, a brush, a font, a palette, a pen,
or a device independent bitmap created by calling the <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/> function.
</param>
<param name="cbBuffer">The number of bytes of information to be written to the buffer.</param>
<param name="lpvObject">
<para>A pointer to a buffer that receives the information about the specified graphics object.</para>
<para>
The following table shows the type of information the buffer receives for each type of graphics object you can specify with
<paramref name="hgdiobj"/>.
</para>
<list type="table">
<item>
<term>HBITMAP</term>
<description>
<see cref="T:Win32Interop.Structs.BITMAP"/>
</description>
</item>
<item>
<term>HBITMAP returned from a call to CreateDIBSection</term>
<description>
DIBSECTION, if <paramref name="cbBuffer"/> is set to sizeof (DIBSECTION), or <see cref="T:Win32Interop.Structs.BITMAP"/>, if
<paramref name="cbBuffer"/> is set to sizeof (BITMAP).
</description>
</item>
<item>
<term>HPALETTE</term>
<description>A WORD count of the number of entries in the logical palette</description>
</item>
<item>
<term>HPEN returned from a call to ExtCreatePen</term>
<description>
<see cref="T:Win32Interop.Structs.EXTLOGPEN"/>
</description>
</item>
<item>
<term>HPEN</term>
<description>
<see cref="T:Win32Interop.Structs.LOGPEN"/>
</description>
</item>
<item>
<term>HBRUSH</term>
<description>
<see cref="T:Win32Interop.Structs.LOGBRUSH"/>
</description>
</item>
<item>
<term>HFONT</term>
<description>
<see cref="T:Win32Interop.Structs.LOGFONT"/>
</description>
</item>
</list>
<para>
If the <paramref name="lpvObject"/> parameter is NULL, the function return value is the number of bytes required to store the information it
writes to the buffer for the specified graphics object.
</para>
</param>
<returns>
<para>
If the function succeeds, and <paramref name="lpvObject"/> is a valid pointer, the return value is the number of bytes stored into the
buffer.
</para>
<para>
If the function succeeds, and <paramref name="lpvObject"/> is NULL, the return value is the number of bytes required to hold the information
the function would store into the buffer.
</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The buffer pointed to by the <paramref name="lpvObject"/> parameter must be sufficiently large to receive the information about the graphics
object. Depending on the graphics object, the function uses a <see cref="T:Win32Interop.Structs.BITMAP"/>, DIBSECTION, <see cref="T:Win32Interop.Structs.EXTLOGPEN"/>,
<see cref="T:Win32Interop.Structs.LOGBRUSH"/>, <see cref="T:Win32Interop.Structs.LOGFONT"/>, or <see cref="T:Win32Interop.Structs.LOGPEN"/> structure, or a count of table entries (for a logical palette).
</para>
<para>
If <paramref name="hgdiobj"/> is a handle to a bitmap created by calling <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/>, and the specified buffer is large
enough, the <see cref="M:Win32Interop.Methods.Gdi32.GetObject(System.IntPtr,System.Int32,System.IntPtr)"/> function returns a DIBSECTION structure. In addition, the <see cref="F:Win32Interop.Structs.BITMAP.bmBits"/> member of the
<see cref="T:Win32Interop.Structs.BITMAP"/> structure contained within the DIBSECTION will contain a pointer to the bitmap's bit values.
</para>
<para>
If <paramref name="hgdiobj"/> is a handle to a bitmap created by any other means, <see cref="M:Win32Interop.Methods.Gdi32.GetObject(System.IntPtr,System.Int32,System.IntPtr)"/> returns only the width, height,
and color format information of the bitmap. You can obtain the bitmap's bit values by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> or
<see cref="M:Win32Interop.Methods.Gdi32.GetBitmapBits(System.IntPtr,System.Int32,System.IntPtr)"/> function.
</para>
<para>
If <paramref name="hgdiobj"/> is a handle to a logical palette, <see cref="M:Win32Interop.Methods.Gdi32.GetObject(System.IntPtr,System.Int32,System.IntPtr)"/> retrieves a 2-byte integer that specifies the
number of entries in the palette. The function does not retrieve the <see cref="T:Win32Interop.Structs.LOGPALETTE"/> structure defining the palette. To retrieve
information about palette entries, an application can call the <see cref="M:Win32Interop.Methods.Gdi32.GetPaletteEntries(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[]@)"/> function.
</para>
<para>
If <paramref name="hgdiobj"/> is a handle to a font, the <see cref="T:Win32Interop.Structs.LOGFONT"/> that is returned is the <see cref="T:Win32Interop.Structs.LOGFONT"/> used to
create the font. If Windows had to make some interpolation of the font because the precise <see cref="T:Win32Interop.Structs.LOGFONT"/> could not be represented,
the interpolation will not be reflected in the <see cref="T:Win32Interop.Structs.LOGFONT"/>. For example, if you ask for a vertical version of a font that doesn't
support vertical painting, the <see cref="T:Win32Interop.Structs.LOGFONT"/> indicates the font is vertical, but Windows will paint it horizontally.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetMetaRgn(System.IntPtr,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetMetaRgn(System.IntPtr,System.IntPtr)"/> function retrieves the current metaregion for the specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="hrgn">
A handle to an existing region before the function is called. After the function returns, this parameter is a handle to a copy of the current
metaregion.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
If the function succeeds, <paramref name="hrgn"/> is a handle to a copy of the current metaregion. Subsequent changes to this copy will not
affect the current metaregion.
</para>
<para>The current clipping region of a device context is defined by the intersection of its clipping region and its metaregion.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetMapMode(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetMapMode(System.IntPtr)"/> function retrieves the current mapping mode.
</summary>
<param name="hdc">A handle to the device context.</param>
<returns>
<para>If the function succeeds, the return value specifies the mapping mode.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>The following are the various mapping modes.</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetDCOrgEx(System.IntPtr,Win32Interop.Structs.POINT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetDCOrgEx(System.IntPtr,Win32Interop.Structs.POINT@)"/> function retrieves the final translation origin for a specified device context (DC). The final translation origin
specifies an offset that the system uses to translate device coordinates into client coordinates (for coordinates in an application's window).
</summary>
<param name="hdc">A handle to the DC whose final translation origin is to be retrieved.</param>
<param name="lpPoint">
A pointer to a <see cref="T:Win32Interop.Structs.POINT"/> structure that receives the final translation origin, in device coordinates.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>The final translation origin is relative to the physical origin of the screen.</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetClipRgn(System.IntPtr,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetClipRgn(System.IntPtr,System.IntPtr)"/> function retrieves a handle identifying the current application-defined clipping region for the specified device
context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="hrgn">
A handle to an existing region before the function is called. After the function returns, this parameter is a handle to a copy of the current
clipping region.
</param>
<returns>
If the function succeeds and there is no clipping region for the given device context, the return value is zero. If the function succeeds and
there is a clipping region for the given device context, the return value is 1. If an error occurs, the return value is -1.
</returns>
<remarks>
<para>
An application-defined clipping region is a clipping region identified by the <see cref="M:Win32Interop.Methods.Gdi32.SelectClipRgn(System.IntPtr,System.IntPtr)"/> function. It is not a clipping
region created when the application calls the <see cref="M:Win32Interop.Methods.User32.BeginPaint(System.IntPtr,Win32Interop.Structs.PAINTSTRUCT@)"/> function.
</para>
<para>
If the function succeeds, the <paramref name="hrgn"/> parameter is a handle to a copy of the current clipping region. Subsequent changes to
this copy will not affect the current clipping region.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetClipBox(System.IntPtr,Win32Interop.Structs.RECT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetClipBox(System.IntPtr,Win32Interop.Structs.RECT@)"/> function retrieves the dimensions of the tightest bounding rectangle that can be drawn around the current visible
area on the device. The visible area is defined by the current clipping region or clip path, as well as any overlapping windows.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lprc">
A pointer to a <see cref="T:Win32Interop.Structs.RECT"/> structure that is to receive the rectangle dimensions, in logical units.
</param>
<returns>If the function succeeds, the return value specifies the clipping box's complexity and can be one of the following values.</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetBkColor(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetBkColor(System.IntPtr)"/> function returns the current background color for the specified device context.
</summary>
<param name="hdc">Handle to the device context whose background color is to be returned.</param>
<returns>
<para>
If the function succeeds, the return value is a <see cref="T:Win32Interop.Structs.COLORREF"/> value for the current background color.
</para>
<para>If the function fails, the return value is CLR_INVALID.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GdiComment(System.IntPtr,System.UInt32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GdiComment(System.IntPtr,System.UInt32,System.IntPtr)"/> function copies a comment from a buffer into a specified enhanced-format metafile.
</summary>
<param name="hdc">A handle to an enhanced-metafile device context.</param>
<param name="cbSize">The length of the comment buffer, in bytes.</param>
<param name="lpData">A pointer to the buffer that contains the comment.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
A comment can include any kind of private information, for example, the source of a picture and the date it was created. A comment should
begin with an application signature, followed by the data.
</para>
<para>
Comments should not contain application-specific or position-specific data. Position-specific data specifies the location of a record, and it
should not be included because one metafile may be embedded within another metafile.
</para>
<para>
A public comment is a comment that begins with the comment signature identifier GDICOMMENT_IDENTIFIER. The following public comments are
defined.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.EnumFonts(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.EnumFonts(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/> function enumerates the fonts available on a specified device. For each font with the specified typeface name,
the <see cref="M:Win32Interop.Methods.Gdi32.EnumFonts(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/> function retrieves information about that font and passes it to the application defined callback function. This
callback function can process the font information as desired. Enumeration continues until there are no more fonts or the callback function
returns zero.
</para>
<para>
Note: This function is provided only for compatibility with 16-bit versions of Windows. Applications should use the
<see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> function.
</para>
</summary>
<param name="hdc">A handle to the device context from which to enumerate the fonts.</param>
<param name="lpFaceName">
A pointer to a null-terminated string that specifies the typeface name of the desired fonts. If <paramref name="lpFaceName"/> is NULL,
<see cref="M:Win32Interop.Methods.Gdi32.EnumFonts(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/> randomly selects and enumerates one font of each available typeface.
</param>
<param name="lpFontFunc">
A pointer to the application defined callback function. For more information, see <see cref="T:Win32Interop.Methods.EnumFontFamExProc"/>.
</param>
<param name="lParam">A pointer to any application-defined data. The data is passed to the callback function along with the font information.</param>
<returns>The return value is the last value returned by the callback function. Its meaning is defined by the application.</returns>
<remarks>
<para>
Use <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> instead of <see cref="M:Win32Interop.Methods.Gdi32.EnumFonts(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/>. The <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> function differs from the
<see cref="M:Win32Interop.Methods.Gdi32.EnumFonts(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/> function in that it retrieves the style names associated with a TrueType font. With
<see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/>, you can retrieve information about font styles that cannot be enumerated using the
<see cref="M:Win32Interop.Methods.Gdi32.EnumFonts(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/> function.
</para>
<para>
The fonts for many East Asian languages have two typeface names: an English name and a localized name. <see cref="M:Win32Interop.Methods.Gdi32.EnumFonts(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/>,
<see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamilies(System.IntPtr,System.String,Win32Interop.Methods.EnumFontFamExProc,System.Int32)"/>, and <see cref="M:Win32Interop.Methods.Gdi32.EnumFontFamiliesEx(System.IntPtr,Win32Interop.Structs.LOGFONT@,Win32Interop.Methods.EnumFontFamExProc,System.Int32,System.UInt32)"/> return the English typeface name if the system locale does not match
the language of the font.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.DrawEscape(System.IntPtr,System.Int32,System.Int32,System.String)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.DrawEscape(System.IntPtr,System.Int32,System.Int32,System.String)"/> function provides drawing capabilities of the specified video display that are not directly available through the
graphics device interface (GDI).
</summary>
<param name="hdc">A handle to the DC for the specified video display.</param>
<param name="nEscape">The escape function to be performed.</param>
<param name="cbInput">
The number of bytes of data pointed to by the <paramref name="lpszInData"/> parameter.
</param>
<param name="lpszInData">A pointer to the input structure required for the specified escape.</param>
<returns>
<para>
If the function is successful, the return value is greater than zero except for the QUERYESCSUPPORT draw escape, which checks for
implementation only.
</para>
<para>If the escape is not implemented, the return value is zero.</para>
<para>If an error occurred, the return value is less than zero.</para>
</returns>
<remarks>
When an application calls the <see cref="M:Win32Interop.Methods.Gdi32.DrawEscape(System.IntPtr,System.Int32,System.Int32,System.String)"/> function, the data identified by <paramref name="cbInput"/> and
<paramref name="lpszInData"/> is passed directly to the specified display driver.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CombineRgn(System.IntPtr,System.IntPtr,System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CombineRgn(System.IntPtr,System.IntPtr,System.IntPtr,System.Int32)"/> function combines two regions and stores the result in a third region. The two regions are combined according to
the specified mode.
</summary>
<param name="hrgnDest">
A handle to a new region with dimensions defined by combining two other regions. (This region must exist before <see cref="M:Win32Interop.Methods.Gdi32.CombineRgn(System.IntPtr,System.IntPtr,System.IntPtr,System.Int32)"/> is
called.)
</param>
<param name="hrgnSrc1">A handle to the first of two regions to be combined.</param>
<param name="hrgnSrc2">A handle to the second of two regions to be combined.</param>
<param name="fnCombineMode">
<para>A mode indicating how the two regions will be combined. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>RGN_AND</term>
<description>Creates the intersection of the two combined regions.</description>
</item>
<item>
<term>RGN_COPY</term>
<description>
Creates a copy of the region identified by <paramref name="hrgnSrc1"/>.
</description>
</item>
<item>
<term>RGN_DIFF</term>
<description>
Combines the parts of <paramref name="hrgnSrc1"/> that are not part of <paramref name="hrgnSrc2"/>.
</description>
</item>
<item>
<term>RGN_OR</term>
<description>Creates the union of two combined regions.</description>
</item>
<item>
<term>RGN_XOR</term>
<description>Creates the union of two combined regions except for any overlapping areas.</description>
</item>
</list>
</param>
<returns>The return value specifies the type of the resulting region. It can be one of the following values.</returns>
<remarks>
The three regions need not be distinct. For example, the <paramref name="hrgnSrc1"/> parameter can equal the <paramref name="hrgnDest"/>
parameter.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.WidenPath(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.WidenPath(System.IntPtr)"/> function redefines the current path as the area that would be painted if the path were stroked using the pen
currently selected into the given device context.
</summary>
<param name="hdc">A handle to a device context that contains a closed path.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.WidenPath(System.IntPtr)"/> function is successful only if the current pen is a geometric pen created by the <see cref="M:Win32Interop.Methods.Gdi32.ExtCreatePen(System.UInt32,System.UInt32,Win32Interop.Structs.LOGBRUSH@,System.UInt32,System.IntPtr)"/>
function, or if the pen is created with the <see cref="M:Win32Interop.Methods.Gdi32.CreatePen(System.Int32,System.Int32,System.UInt32)"/> function and has a width, in device units, of more than one.
</para>
<para>
The device context identified by the <paramref name="hdc"/> parameter must contain a closed path.
</para>
<para>
Any Bézier curves in the path are converted to sequences of straight lines approximating the widened curves. As such, no Bézier curves remain
in the path after <see cref="M:Win32Interop.Methods.Gdi32.WidenPath(System.IntPtr)"/> is called.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.StartPage(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.StartPage(System.IntPtr)"/> function prepares the printer driver to accept data.
</summary>
<param name="hDC">A handle to the device context for the print job.</param>
<returns>
<para>If the function succeeds, the return value is greater than zero.</para>
<para>If the function fails, the return value is less than or equal to zero.</para>
</returns>
<remarks>
<para>
Note: This is a blocking or synchronous function and might not return immediately. How quickly this function returns depends on run-time
factors such as network status, print server configuration, and printer driver implementation—factors that are difficult to predict when
writing an application. Calling this function from a thread that manages interaction with the user interface could make the application
appear to be unresponsive.
</para>
<para>
The system disables the <see cref="M:Win32Interop.Methods.Gdi32.ResetDC(System.IntPtr,Win32Interop.Structs.DEVMODE@)"/> function between calls to the <see cref="M:Win32Interop.Methods.Gdi32.StartPage(System.IntPtr)"/> and <see cref="M:Win32Interop.Methods.Gdi32.EndPage(System.IntPtr)"/> functions.
This means that you cannot change the device mode except at page boundaries. After calling <see cref="M:Win32Interop.Methods.Gdi32.EndPage(System.IntPtr)"/>, you can call
<see cref="M:Win32Interop.Methods.Gdi32.ResetDC(System.IntPtr,Win32Interop.Structs.DEVMODE@)"/> to change the device mode, if necessary. Note that a call to <see cref="M:Win32Interop.Methods.Gdi32.ResetDC(System.IntPtr,Win32Interop.Structs.DEVMODE@)"/> resets all device context
attributes back to default values.
</para>
<para>
Neither <see cref="M:Win32Interop.Methods.Gdi32.EndPage(System.IntPtr)"/> nor <see cref="M:Win32Interop.Methods.Gdi32.StartPage(System.IntPtr)"/> resets the device context attributes. Device context attributes remain constant
across subsequent pages. You do not need to re-select objects and set up the mapping mode again before printing the next page; however, doing
so will produce the same results and reduce code differences between versions of Windows.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.StartDoc(System.IntPtr,Win32Interop.Structs.DOCINFO@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.StartDoc(System.IntPtr,Win32Interop.Structs.DOCINFO@)"/> function starts a print job.
</summary>
<param name="hdc">A handle to the device context for the print job.</param>
<param name="lpdi">
A pointer to a <see cref="T:Win32Interop.Structs.DOCINFO"/> structure containing the name of the document file and the name of the output file.
</param>
<returns>
<para>If the function succeeds, the return value is greater than zero. This value is the print job identifier for the document.</para>
<para>If the function fails, the return value is less than or equal to zero.</para>
</returns>
<remarks>
<para>
Note: This is a blocking or synchronous function and might not return immediately. How quickly this function returns depends on run-time
factors such as network status, print server configuration, and printer driver implementation—factors that are difficult to predict when
writing an application. Calling this function from a thread that manages interaction with the user interface could make the application
appear to be unresponsive.
</para>
<para>
Applications should call the <see cref="M:Win32Interop.Methods.Gdi32.StartDoc(System.IntPtr,Win32Interop.Structs.DOCINFO@)"/> function immediately before beginning a print job. Using this function ensures that
multipage documents are not interspersed with other print jobs.
</para>
<para>
Applications can use the value returned by <see cref="M:Win32Interop.Methods.Gdi32.StartDoc(System.IntPtr,Win32Interop.Structs.DOCINFO@)"/> to retrieve or set the priority of a print job. Call the GetJob or SetJob
function and supply this value as one of the required arguments.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetPixelV(System.IntPtr,System.Int32,System.Int32,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetPixelV(System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function sets the pixel at the specified coordinates to the closest approximation of the specified color. The point
must be in the clipping region and the visible part of the device surface.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="X">The x-coordinate, in logical units, of the point to be set.</param>
<param name="Y">The y-coordinate, in logical units, of the point to be set.</param>
<param name="crColor">
The color to be used to paint the point. To create a <see cref="T:Win32Interop.Structs.COLORREF"/> color value, use the RGB macro.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
Not all devices support the <see cref="M:Win32Interop.Methods.Gdi32.SetPixelV(System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function. For more information, see the description of the RC_BITBLT capability in the
<see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.SetPixelV(System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> is faster than <see cref="M:Win32Interop.Methods.Gdi32.SetPixel(System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> because it does not need to return the color value of the point actually
painted.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetLayout(System.IntPtr,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetLayout(System.IntPtr,System.UInt32)"/> function changes the layout of a device context (DC).
</summary>
<param name="hdc">A handle to the DC.</param>
<param name="dwLayout">
<para>The DC layout. This parameter can be one or more of the following values.</para>
<list type="table">
<item>
<term>LAYOUT_BITMAPORIENTATIONPRESERVED</term>
<description>
Disables any reflection during <see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> operations.
</description>
</item>
<item>
<term>LAYOUT_RTL</term>
<description>Sets the default horizontal layout to be right to left.</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, it returns the previous layout of the DC.</para>
<para>If the function fails, it returns GDI_ERROR.</para>
</returns>
<remarks>
<para>
The layout specifies the order in which text and graphics are revealed in a window or a device context. The default is left to right. The
<see cref="M:Win32Interop.Methods.Gdi32.SetLayout(System.IntPtr,System.UInt32)"/> function changes this to be right to left, which is the standard in Arabic and Hebrew cultures.
</para>
<para>
Once the LAYOUT_RTL flag is selected, flags normally specifying right or left are reversed. To avoid confusion, consider defining alternate
words for standard flags, such as those in the following table.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> function sets the pixels in a compatible bitmap (DDB) using the color data found in the specified DIB.
</summary>
<param name="hdc">A handle to a device context.</param>
<param name="hbmp">A handle to the compatible bitmap (DDB) that is to be altered using the color data from the specified DIB.</param>
<param name="uStartScan">
The starting scan line for the device-independent color data in the array pointed to by the <paramref name="lpvBits"/> parameter.
</param>
<param name="cScanLines">The number of scan lines found in the array containing device-independent color data.</param>
<param name="lpvBits">
A pointer to the DIB color data, stored as an array of bytes. The format of the bitmap values depends on the
<see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure pointed to by the <paramref name="lpbmi"/>
parameter.
</param>
<param name="lpbmi">
A pointer to a <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure that contains information about the DIB.
</param>
<param name="fuColorUse">
<para>
Indicates whether the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure was provided and, if so, whether
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> contains explicit red, green, blue (RGB) values or palette indexes. The <paramref name="fuColorUse"/>
parameter must be one of the following values.
</para>
<list type="table">
<item>
<term>DIB_PAL_COLORS</term>
<description>
The color table consists of an array of 16-bit indexes into the logical palette of the device context identified by the
<paramref name="hdc"/> parameter.
</description>
</item>
<item>
<term>DIB_RGB_COLORS</term>
<description>The color table is provided and contains literal RGB values.</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value is the number of scan lines copied.</para>
<para>If the function fails, the return value is zero.</para>
<para>This can be the following value.</para>
</returns>
<remarks>
<para>Optimal bitmap drawing speed is obtained when the bitmap bits are indexes into the system palette.</para>
<para>
Applications can retrieve the system palette colors and indexes by calling the <see cref="M:Win32Interop.Methods.Gdi32.GetSystemPaletteEntries(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.PALETTEENTRY[]@)"/> function. After the
colors and indexes are retrieved, the application can create the DIB. For more information, see System Palette.
</para>
<para>
The device context identified by the <paramref name="hdc"/> parameter is used only if the DIB_PAL_COLORS constant is set for the
<paramref name="fuColorUse"/> parameter; otherwise it is ignored.
</para>
<para>
The bitmap identified by the <paramref name="hbmp"/> parameter must not be selected into a device context when the application calls this
function.
</para>
<para>The scan lines must be aligned on a DWORD except for RLE-compressed bitmaps.</para>
<para>The origin for bottom-up DIBs is the lower-left corner of the bitmap; the origin for top-down DIBs is the upper-left corner of the bitmap.</para>
<para>
ICM: Color management is performed if color management has been enabled with a call to <see cref="M:Win32Interop.Methods.Gdi32.SetICMMode(System.IntPtr,System.Int32)"/> with the iEnableICM
parameter set to ICM_ON. If the bitmap specified by <paramref name="lpbmi"/> has a
<see cref="T:Win32Interop.Structs.BITMAPV4HEADER"/> that specifies the gamma and endpoints members, or a <see cref="T:Win32Interop.Structs.BITMAPV5HEADER"/> that specifies either the
gamma and endpoints members or the profileData and profileSize members, then the call treats the bitmap's pixels as being expressed in the
color space described by those members, rather than in the device context's source color space.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetBkMode(System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetBkMode(System.IntPtr,System.Int32)"/> function sets the background mix mode of the specified device context. The background mix mode is used with text,
hatched brushes, and pen styles that are not solid lines.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="iBkMode">
<para>The background mode. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>OPAQUE</term>
<description>Background is filled with the current background color before the text, hatched brush, or pen is drawn.</description>
</item>
<item>
<term>TRANSPARENT</term>
<description>Background remains untouched.</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value specifies the previous background mode.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The <see cref="M:Win32Interop.Methods.Gdi32.SetBkMode(System.IntPtr,System.Int32)"/> function affects the line styles for lines drawn using a pen created by the <see cref="M:Win32Interop.Methods.Gdi32.CreatePen(System.Int32,System.Int32,System.UInt32)"/> function.
<see cref="M:Win32Interop.Methods.Gdi32.SetBkMode(System.IntPtr,System.Int32)"/> does not affect lines drawn using a pen created by the <see cref="M:Win32Interop.Methods.Gdi32.ExtCreatePen(System.UInt32,System.UInt32,Win32Interop.Structs.LOGBRUSH@,System.UInt32,System.IntPtr)"/> function.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.RoundRect(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.RoundRect(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/> function draws a rectangle with rounded corners. The rectangle is outlined by using the current pen and filled by
using the current brush.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nLeftRect">The x-coordinate, in logical coordinates, of the upper-left corner of the rectangle.</param>
<param name="nTopRect">The y-coordinate, in logical coordinates, of the upper-left corner of the rectangle.</param>
<param name="nRightRect">The x-coordinate, in logical coordinates, of the lower-right corner of the rectangle.</param>
<param name="nBottomRect">The y-coordinate, in logical coordinates, of the lower-right corner of the rectangle.</param>
<param name="nWidth">The width, in logical coordinates, of the ellipse used to draw the rounded corners.</param>
<param name="nHeight">The height, in logical coordinates, of the ellipse used to draw the rounded corners.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>The current position is neither used nor updated by this function.</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.RestoreDC(System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.RestoreDC(System.IntPtr,System.Int32)"/> function restores a device context (DC) to the specified state. The DC is restored by popping state information off
a stack created by earlier calls to the <see cref="M:Win32Interop.Methods.Gdi32.SaveDC(System.IntPtr)"/> function.
</summary>
<param name="hdc">A handle to the DC.</param>
<param name="nSavedDC">
The saved state to be restored. If this parameter is positive, <paramref name="nSavedDC"/> represents a specific instance of the state to be
restored. If this parameter is negative, <paramref name="nSavedDC"/> represents an instance relative to the current state. For example, -1
restores the most recently saved state.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The stack can contain the state information for several instances of the DC. If the state specified by the specified parameter is not at the top
of the stack, <see cref="M:Win32Interop.Methods.Gdi32.RestoreDC(System.IntPtr,System.Int32)"/> deletes all state information between the top of the stack and the specified instance.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.Rectangle(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.Rectangle(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32)"/> function draws a rectangle. The rectangle is outlined by using the current pen and filled by using the current
brush.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nLeftRect">The x-coordinate, in logical coordinates, of the upper-left corner of the rectangle.</param>
<param name="nTopRect">The y-coordinate, in logical coordinates, of the upper-left corner of the rectangle.</param>
<param name="nRightRect">The x-coordinate, in logical coordinates, of the lower-right corner of the rectangle.</param>
<param name="nBottomRect">The y-coordinate, in logical coordinates, of the lower-right corner of the rectangle.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The current position is neither used nor updated by <see cref="M:Win32Interop.Methods.Gdi32.Rectangle(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32)"/>.
</para>
<para>The rectangle that is drawn excludes the bottom and right edges.</para>
<para>If a PS_NULL pen is used, the dimensions of the rectangle are 1 pixel less in height and 1 pixel less in width.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PtVisible(System.IntPtr,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PtVisible(System.IntPtr,System.Int32,System.Int32)"/> function determines whether the specified point is within the clipping region of a device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="X">The x-coordinate, in logical units, of the point.</param>
<param name="Y">The y-coordinate, in logical units, of the point.</param>
<returns>
<para>If the specified point is within the clipping region of the device context, the return value is TRUE(1).</para>
<para>If the specified point is not within the clipping region of the device context, the return value is FALSE(0).</para>
<para>
If the <see cref="!:hdc"/> is not valid, the return value is (BOOL)-1.
</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.OffsetRgn(System.IntPtr,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.OffsetRgn(System.IntPtr,System.Int32,System.Int32)"/> function moves a region by the specified offsets.
</summary>
<param name="hrgn">Handle to the region to be moved.</param>
<param name="nXOffset">Specifies the number of logical units to move left or right.</param>
<param name="nYOffset">Specifies the number of logical units to move up or down.</param>
<returns>The return value specifies the new region's complexity. It can be one of the following values.</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.InvertRgn(System.IntPtr,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.InvertRgn(System.IntPtr,System.IntPtr)"/> function inverts the colors in the specified region.
</summary>
<param name="hdc">Handle to the device context.</param>
<param name="hrgn">Handle to the region for which colors are inverted. The region's coordinates are presumed to be logical coordinates.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
On monochrome screens, the <see cref="M:Win32Interop.Methods.Gdi32.InvertRgn(System.IntPtr,System.IntPtr)"/> function makes white pixels black and black pixels white. On color screens, this inversion is
dependent on the type of technology used to generate the colors for the screen.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetRgnBox(System.IntPtr,Win32Interop.Structs.RECT@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetRgnBox(System.IntPtr,Win32Interop.Structs.RECT@)"/> function retrieves the bounding rectangle of the specified region.
</summary>
<param name="hrgn">A handle to the region.</param>
<param name="lprc">
A pointer to a <see cref="T:Win32Interop.Structs.RECT"/> structure that receives the bounding rectangle in logical units.
</param>
<returns>The return value specifies the region's complexity. It can be one of the following values:</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetLayout(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetLayout(System.IntPtr)"/> function returns the layout of a device context (DC).
</summary>
<param name="hdc">A handle to the device context.</param>
<returns>
<para>If the function succeeds, it returns the layout flags for the current device context.</para>
<para>If the function fails, it returns GDI_ERROR. For extended error information, call GetLastError.</para>
</returns>
<remarks>
The layout specifies the order in which text and graphics are revealed in a window or device context. The default is left to right. The
<see cref="M:Win32Interop.Methods.Gdi32.GetLayout(System.IntPtr)"/> function tells you if the default has been changed through a call to <see cref="M:Win32Interop.Methods.Gdi32.SetLayout(System.IntPtr,System.UInt32)"/>. For more information, see
"Window Layout and Mirroring" in Window Features.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> function retrieves the bits of the specified compatible bitmap and copies them into a buffer as a DIB using the
specified format.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="hbmp">A handle to the bitmap. This must be a compatible bitmap (DDB).</param>
<param name="uStartScan">The first scan line to retrieve.</param>
<param name="cScanLines">The number of scan lines to retrieve.</param>
<param name="lpvBits">
A pointer to a buffer to receive the bitmap data. If this parameter is NULL, the function passes the dimensions and format of the bitmap to the
<see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure pointed to by the <paramref name="lpbi"/> parameter.
</param>
<param name="lpbi">
A pointer to a <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure that specifies the desired format for the DIB data.
</param>
<param name="uUsage">
<para>
The format of the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure. It must be one of the following
values.
</para>
<list type="table">
<item>
<term>DIB_PAL_COLORS</term>
<description>The color table should consist of an array of 16-bit indexes into the current logical palette.</description>
</item>
<item>
<term>DIB_RGB_COLORS</term>
<description>The color table should consist of literal red, green, blue (RGB) values.</description>
</item>
</list>
</param>
<returns>
<para>
If the <paramref name="lpvBits"/> parameter is non-NULL and the function succeeds, the return value is the number of scan lines copied from
the bitmap.
</para>
<para>
If the <paramref name="lpvBits"/> parameter is NULL and <see cref="M:Win32Interop.Methods.Gdi32.GetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> successfully fills the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure,
the return value is nonzero.
</para>
<para>If the function fails, the return value is zero.</para>
<para>This function can return the following value.</para>
</returns>
<remarks>
If the requested format for the DIB matches its internal format, the RGB values for the bitmap are copied. If the requested format doesn't match
the internal format, a color table is synthesized. The following table describes the color table synthesized for each format.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetBkMode(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetBkMode(System.IntPtr)"/> function returns the current background mix mode for a specified device context. The background mix mode of a device
context affects text, hatched brushes, and pen styles that are not solid lines.
</summary>
<param name="hdc">Handle to the device context whose background mode is to be returned.</param>
<returns>
<para>If the function succeeds, the return value specifies the current background mix mode, either OPAQUE or TRANSPARENT.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.FloodFill(System.IntPtr,System.Int32,System.Int32,System.UInt32)">
<summary>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.FloodFill(System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function fills an area of the display surface with the current brush. The area is assumed to be bounded as
specified by the <paramref name="crFill"/> parameter.
</para>
<para>
Note: The <see cref="M:Win32Interop.Methods.Gdi32.FloodFill(System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function is included only for compatibility with 16-bit versions of Windows. Applications should use the
<see cref="M:Win32Interop.Methods.Gdi32.ExtFloodFill(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.UInt32)"/> function with FLOODFILLBORDER specified.
</para>
</summary>
<param name="hdc">A handle to a device context.</param>
<param name="nXStart">The x-coordinate, in logical units, of the point where filling is to start.</param>
<param name="nYStart">The y-coordinate, in logical units, of the point where filling is to start.</param>
<param name="crFill">
The color of the boundary or the area to be filled. To create a <see cref="T:Win32Interop.Structs.COLORREF"/> color value, use the RGB macro.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>The following are reasons this function might fail:</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ExtEscape(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ExtEscape(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32,System.IntPtr)"/> function enables an application to access device capabilities that are not available through GDI.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nEscape">
<para>The escape function to be performed. It can be one of the following or it can be an application-defined escape function.</para>
<list type="table">
<item>
<term>CHECKJPEGFORMAT</term>
<description>Checks whether the printer supports a JPEG image.</description>
</item>
<item>
<term>CHECKPNGFORMAT</term>
<description>Checks whether the printer supports a PNG image.</description>
</item>
<item>
<term>DRAWPATTERNRECT</term>
<description>Draws a white, gray-scale, or black rectangle.</description>
</item>
<item>
<term>GET_PS_FEATURESETTING</term>
<description>Gets information on a specified feature setting for a PostScript driver.</description>
</item>
<item>
<term>GETTECHNOLOGY</term>
<description>Reports on whether or not the driver is a Postscript driver.</description>
</item>
<item>
<term>PASSTHROUGH</term>
<description>Allows the application to send data directly to a printer. Supported in compatibility mode and GDI-centric mode.</description>
</item>
<item>
<term>POSTSCRIPT_DATA</term>
<description>Allows the application to send data directly to a printer. Supported only in compatibility mode.</description>
</item>
<item>
<term>POSTSCRIPT_IDENTIFY</term>
<description>Sets a PostScript driver to GDI-centric or PostScript-centric mode.</description>
</item>
<item>
<term>POSTSCRIPT_INJECTION</term>
<description>Inserts a block of raw data in a PostScript job stream.</description>
</item>
<item>
<term>POSTSCRIPT_PASSTHROUGH</term>
<description>Sends data directly to a PostScript printer driver. Supported in compatibility mode and PostScript-centric mode.</description>
</item>
<item>
<term>QUERYESCSUPPORT</term>
<description>Determines whether a particular escape is implemented by the device driver.</description>
</item>
<item>
<term>SPCLPASSTHROUGH2</term>
<description>Enables applications to include private procedures and other resources at the document level-save context.</description>
</item>
</list>
</param>
<param name="cbInput">
The number of bytes of data pointed to by the <paramref name="lpszInData"/> parameter.
</param>
<param name="lpszInData">A pointer to the input structure required for the specified escape. See also Remarks.</param>
<param name="cbOutput">
The number of bytes of data pointed to by the <paramref name="lpszOutData"/> parameter.
</param>
<param name="lpszOutData">
A pointer to the structure that receives output from this escape. This parameter must not be NULL if <see cref="M:Win32Interop.Methods.Gdi32.ExtEscape(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32,System.IntPtr)"/> is called as a
query function. If no data is to be returned in this structure, set <paramref name="cbOutput"/> to 0. See also Remarks.
</param>
<returns>
The return value specifies the outcome of the function. It is greater than zero if the function is successful, except for the QUERYESCSUPPORT
printer escape, which checks for implementation only. The return value is zero if the escape is not implemented. A return value less than zero
indicates an error.
</returns>
<remarks>
<para>
Note: This is a blocking or synchronous function and might not return immediately. How quickly this function returns depends on run-time
factors such as network status, print server configuration, and printer driver implementation—factors that are difficult to predict when
writing an application. Calling this function from a thread that manages interaction with the user interface could make the application
appear to be unresponsive.
</para>
<para>Use this function to pass a driver-defined escape value to a device.</para>
<para>
Use the Escape function to pass one of the system-defined escape values to a device, unless the escape is one of the defined escapes in
<paramref name="nEscape"/>. <see cref="M:Win32Interop.Methods.Gdi32.ExtEscape(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32,System.IntPtr)"/> might not work properly with the system-defined escapes. In particular, escapes in
which <paramref name="lpszInData"/> is a pointer to a structure that contains a member that is a pointer will fail.
</para>
<para>Note, that the behavior described in this article is the expected behavior, but it is up to the driver to comply with this model.</para>
<para>
The variables referenced by <paramref name="lpszInData"/> and <paramref name="lpszOutData"/> should not be the same or overlap. If the
input and the output buffer size variables overlap, they may not contain the correct values after the call returns. For the best results,
<paramref name="lpszInData"/> and <paramref name="lpszOutData"/> should refer to different variables.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreatePen(System.Int32,System.Int32,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreatePen(System.Int32,System.Int32,System.UInt32)"/> function creates a logical pen that has the specified style, width, and color. The pen can subsequently be selected
into a device context and used to draw lines and curves.
</summary>
<param name="fnPenStyle">
<para>The pen style. It can be any one of the following values.</para>
<list type="table">
<item>
<term>PS_SOLID</term>
<description>The pen is solid.</description>
</item>
<item>
<term>PS_DASH</term>
<description>The pen is dashed. This style is valid only when the pen width is one or less in device units.</description>
</item>
<item>
<term>PS_DOT</term>
<description>The pen is dotted. This style is valid only when the pen width is one or less in device units.</description>
</item>
<item>
<term>PS_DASHDOT</term>
<description>The pen has alternating dashes and dots. This style is valid only when the pen width is one or less in device units.</description>
</item>
<item>
<term>PS_DASHDOTDOT</term>
<description>The pen has alternating dashes and double dots. This style is valid only when the pen width is one or less in device units.</description>
</item>
<item>
<term>PS_NULL</term>
<description>The pen is invisible.</description>
</item>
<item>
<term>PS_INSIDEFRAME</term>
<description>
The pen is solid. When this pen is used in any GDI drawing function that takes a bounding rectangle, the dimensions of the figure are
shrunk so that it fits entirely in the bounding rectangle, taking into account the width of the pen. This applies only to geometric
pens.
</description>
</item>
</list>
</param>
<param name="nWidth">
<para>
The width of the pen, in logical units. If <paramref name="nWidth"/> is zero, the pen is a single pixel wide, regardless of the current
transformation.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.CreatePen(System.Int32,System.Int32,System.UInt32)"/> returns a pen with the specified width bit with the PS_SOLID style if you specify a width greater than one for the
following styles: PS_DASH, PS_DOT, PS_DASHDOT, PS_DASHDOTDOT.
</para>
</param>
<param name="crColor">
A color reference for the pen color. To generate a <see cref="T:Win32Interop.Structs.COLORREF"/> structure, use the RGB macro.
</param>
<returns>
<para>If the function succeeds, the return value is a handle that identifies a logical pen.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
After an application creates a logical pen, it can select that pen into a device context by calling the <see cref="M:Win32Interop.Methods.Gdi32.SelectObject(System.IntPtr,System.IntPtr)"/> function.
After a pen is selected into a device context, it can be used to draw lines and curves.
</para>
<para>
If the value specified by the <paramref name="nWidth"/> parameter is zero, a line drawn with the created pen always is a single pixel wide
regardless of the current transformation.
</para>
<para>
If the value specified by <paramref name="nWidth"/> is greater than 1, the <paramref name="fnPenStyle"/> parameter must be PS_NULL,
PS_SOLID, or PS_INSIDEFRAME.
</para>
<para>
If the value specified by <paramref name="nWidth"/> is greater than 1 and <paramref name="fnPenStyle"/> is PS_INSIDEFRAME, the line
associated with the pen is drawn inside the frame of all primitives except polygons and polylines.
</para>
<para>
If the value specified by <paramref name="nWidth"/> is greater than 1, <paramref name="fnPenStyle"/> is PS_INSIDEFRAME, and the color
specified by the <paramref name="crColor"/> parameter does not match one of the entries in the logical palette, the system draws lines by
using a dithered color. Dithered colors are not available with solid pens.
</para>
<para>
When you no longer need the pen, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteObject(System.IntPtr)"/> function to delete it.
</para>
<para>
ICM: No color management is done at creation. However, color management is performed when the pen is selected into an ICM-enabled device
context.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateIC(System.String,System.String,System.String,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateIC(System.String,System.String,System.String,System.IntPtr)"/> function creates an information context for the specified device. The information context provides a fast way to get
information about the device without creating a device context (DC). However, GDI drawing functions cannot accept a handle to an information
context.
</summary>
<param name="lpszDriver">A pointer to a null-terminated character string that specifies the name of the device driver (for example, Epson).</param>
<param name="lpszDevice">
A pointer to a null-terminated character string that specifies the name of the specific output device being used, as shown by the Print Manager
(for example, Epson FX-80). It is not the printer model name. The <paramref name="lpszDevice"/> parameter must be used.
</param>
<param name="lpszOutput">This parameter is ignored and should be set to NULL. It is provided only for compatibility with 16-bit Windows.</param>
<param name="lpdvmInit">
A pointer to a <see cref="T:Win32Interop.Structs.DEVMODE"/> structure containing device-specific initialization data for the device driver. The DocumentProperties
function retrieves this structure filled in for a specified device. The <paramref name="lpdvmInit"/> parameter must be NULL if the device driver
is to use the default initialization (if any) specified by the user.
</param>
<returns>
<para>If the function succeeds, the return value is the handle to an information context.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
When you no longer need the information DC, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteDC(System.IntPtr)"/> function.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CreateDC(System.String,System.String,System.String,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CreateDC(System.String,System.String,System.String,System.IntPtr)"/> function creates a device context (DC) for a device using the specified name.
</summary>
<param name="lpszDriver">
A pointer to a null-terminated character string that specifies either DISPLAY or the name of a specific display device. For printing, we
recommend that you pass NULL to <paramref name="lpszDriver"/> because GDI ignores <paramref name="lpszDriver"/> for printer devices.
</param>
<param name="lpszDevice">
<para>
A pointer to a null-terminated character string that specifies the name of the specific output device being used, as shown by the Print
Manager (for example, Epson FX-80). It is not the printer model name. The <paramref name="lpszDevice"/> parameter must be used.
</para>
<para>
To obtain valid names for displays, call <see cref="M:Win32Interop.Methods.User32.EnumDisplayDevices(System.String,System.UInt32,Win32Interop.Structs.DISPLAY_DEVICE@,Win32Interop.Enums.EDD)"/>.
</para>
<para>
If <paramref name="lpszDriver"/> is DISPLAY or the device name of a specific display device, then <paramref name="lpszDevice"/> must be
NULL or that same device name. If <paramref name="lpszDevice"/> is NULL, then a DC is created for the primary display device.
</para>
<para>If there are multiple monitors on the system, calling CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL) will create a DC covering all the monitors.</para>
</param>
<param name="lpszOutput">This parameter is ignored and should be set to NULL. It is provided only for compatibility with 16-bit Windows.</param>
<param name="lpInitData">
<para>
A pointer to a <see cref="T:Win32Interop.Structs.DEVMODE"/> structure containing device-specific initialization data for the device driver. The DocumentProperties
function retrieves this structure filled in for a specified device. The <paramref name="lpInitData"/>
parameter must be NULL if the device driver is to use the default initialization (if any) specified by the user.
</para>
<para>
If <paramref name="lpszDriver"/> is DISPLAY, <paramref name="lpInitData"/> must be NULL; GDI then uses the display device's current
<see cref="T:Win32Interop.Structs.DEVMODE"/>.
</para>
</param>
<returns>
<para>If the function succeeds, the return value is the handle to a DC for the specified device.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>Note that the handle to the DC can only be used by a single thread at any one time.</para>
<para>
For parameters <paramref name="lpszDriver"/> and <paramref name="lpszDevice"/>, call <see cref="M:Win32Interop.Methods.User32.EnumDisplayDevices(System.String,System.UInt32,Win32Interop.Structs.DISPLAY_DEVICE@,Win32Interop.Enums.EDD)"/> to obtain
valid names for displays.
</para>
<para>
When you no longer need the DC, call the <see cref="M:Win32Interop.Methods.Gdi32.DeleteDC(System.IntPtr)"/> function.
</para>
<para>
If <paramref name="lpszDriver"/> or <paramref name="lpszDevice"/> is DISPLAY, the thread that calls <see cref="M:Win32Interop.Methods.Gdi32.CreateDC(System.String,System.String,System.String,System.IntPtr)"/> owns the HDC
that is created. When this thread is destroyed, the HDC is no longer valid. Thus, if you create the HDC and pass it to another thread, then
exit the first thread, the second thread will not be able to use the HDC.
</para>
<para>
When you call <see cref="M:Win32Interop.Methods.Gdi32.CreateDC(System.String,System.String,System.String,System.IntPtr)"/> to create the HDC&gt; for a display device, you must pass to <paramref name="lpInitData"/>
either NULL or a pointer to <see cref="T:Win32Interop.Structs.DEVMODE"/> that matches the current <see cref="T:Win32Interop.Structs.DEVMODE"/> of the display device that
<paramref name="lpszDevice"/> specifies. We recommend to pass NULL and not to try to exactly match the <see cref="T:Win32Interop.Structs.DEVMODE"/> for the
current display device.
</para>
<para>
When you call <see cref="M:Win32Interop.Methods.Gdi32.CreateDC(System.String,System.String,System.String,System.IntPtr)"/> to create the HDC for a printer device, the printer driver validates the
<see cref="T:Win32Interop.Structs.DEVMODE"/>. If the printer driver determines that the <see cref="T:Win32Interop.Structs.DEVMODE"/> is invalid (that is, printer driver cant convert or
consume the DEVMODE), the printer driver provides a default <see cref="T:Win32Interop.Structs.DEVMODE"/> to create the HDC for the printer device.
</para>
<para>
ICM: To enable ICM, set the <see cref="!:DEVMODE.dmICMMethod"/> member of the <see cref="T:Win32Interop.Structs.DEVMODE"/> structure (pointed to by the
<paramref name="lpInitData"/> parameter) to the appropriate value.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.BeginPath(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.BeginPath(System.IntPtr)"/> function opens a path bracket in the specified device context.
</summary>
<param name="hdc">A handle to the device context.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
After a path bracket is open, an application can begin calling GDI drawing functions to define the points that lie in the path. An
application can close an open path bracket by calling the <see cref="M:Win32Interop.Methods.Gdi32.EndPath(System.IntPtr)"/> function.
</para>
<para>
When an application calls <see cref="M:Win32Interop.Methods.Gdi32.BeginPath(System.IntPtr)"/> for a device context, any previous paths are discarded from that device context. The
following list shows which drawing functions can be used.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.AbortPath(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.AbortPath(System.IntPtr)"/> function closes and discards any paths in the specified device context.
</summary>
<param name="hdc">Handle to the device context from which a path will be discarded.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
If there is an open path bracket in the given device context, the path bracket is closed and the path is discarded. If there is a closed path in
the device context, the path is discarded.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.TextOut(System.IntPtr,System.Int32,System.Int32,System.String,System.Int32)"/> function writes a character string at the specified location, using the currently selected font, background color, and
text color.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nXStart">The x-coordinate, in logical coordinates, of the reference point that the system uses to align the string.</param>
<param name="nYStart">The y-coordinate, in logical coordinates, of the reference point that the system uses to align the string.</param>
<param name="lpString">
A pointer to the string to be drawn. The string does not need to be zero-terminated, because <paramref name="cchString"/> specifies the length
of the string.
</param>
<param name="cchString">
The length of the string pointed to by <paramref name="lpString"/>, in characters.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The interpretation of the reference point depends on the current text-alignment mode. An application can retrieve this mode by calling the
<see cref="M:Win32Interop.Methods.Gdi32.GetTextAlign(System.IntPtr)"/> function; an application can alter this mode by calling the <see cref="M:Win32Interop.Methods.Gdi32.SetTextAlign(System.IntPtr,System.UInt32)"/> function. You can use the
following values for text alignment. Only one flag can be chosen from those that affect horizontal and vertical alignment. In addition, only
one of the two flags that alter the current position can be chosen.
</para>
<para></para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetPixel(System.IntPtr,System.Int32,System.Int32,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetPixel(System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function sets the pixel at the specified coordinates to the specified color.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="X">The x-coordinate, in logical units, of the point to be set.</param>
<param name="Y">The y-coordinate, in logical units, of the point to be set.</param>
<param name="crColor">
The color to be used to paint the point. To create a <see cref="T:Win32Interop.Structs.COLORREF"/> color value, use the RGB macro.
</param>
<returns>
<para>
If the function succeeds, the return value is the RGB value that the function sets the pixel to. This value may differ from the color
specified by <paramref name="crColor"/>; that occurs when an exact match for the specified color cannot be found.
</para>
<para>If the function fails, the return value is -1.</para>
<para>This can be the following value.</para>
</returns>
<remarks>
<para>The function fails if the pixel coordinates lie outside of the current clipping region.</para>
<para>
Not all devices support the <see cref="M:Win32Interop.Methods.Gdi32.SetPixel(System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function. For more information, see <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/>.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ResetDC(System.IntPtr,Win32Interop.Structs.DEVMODE@)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ResetDC(System.IntPtr,Win32Interop.Structs.DEVMODE@)"/> function updates the specified printer or plotter device context (DC) using the specified information.
</summary>
<param name="hdc">A handle to the DC to update.</param>
<param name="lpInitData">
A pointer to a <see cref="T:Win32Interop.Structs.DEVMODE"/> structure containing information about the new DC.
</param>
<returns>
<para>If the function succeeds, the return value is a handle to the original DC.</para>
<para>If the function fails, the return value is NULL.</para>
</returns>
<remarks>
<para>
An application will typically use the <see cref="M:Win32Interop.Methods.Gdi32.ResetDC(System.IntPtr,Win32Interop.Structs.DEVMODE@)"/> function when a window receives a <see cref="F:Win32Interop.Enums.WM.WM_DEVMODECHANGE"/> message.
<see cref="M:Win32Interop.Methods.Gdi32.ResetDC(System.IntPtr,Win32Interop.Structs.DEVMODE@)"/> can also be used to change the paper orientation or paper bins while printing a document.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.ResetDC(System.IntPtr,Win32Interop.Structs.DEVMODE@)"/> function cannot be used to change the driver name, device name, or the output port. When the user changes the port
connection or device name, the application must delete the original DC and create a new DC with the new information.
</para>
<para>
An application can pass an information DC to the <see cref="M:Win32Interop.Methods.Gdi32.ResetDC(System.IntPtr,Win32Interop.Structs.DEVMODE@)"/> function. In that situation, <see cref="M:Win32Interop.Methods.Gdi32.ResetDC(System.IntPtr,Win32Interop.Structs.DEVMODE@)"/> will always
return a printer DC.
</para>
<para>
ICM: The color profile of the DC specified by the <paramref name="hdc"/> parameter will be reset based on the information contained in the
<see cref="!:lpInitData"/> member of the <see cref="T:Win32Interop.Structs.DEVMODE"/> structure.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.Polyline(System.IntPtr,Win32Interop.Structs.POINT[],System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.Polyline(System.IntPtr,Win32Interop.Structs.POINT[],System.Int32)"/> function draws a series of line segments by connecting the points in the specified array.
</summary>
<param name="hdc">A handle to a device context.</param>
<param name="lppt">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures, in logical units.
</param>
<param name="cPoints">The number of points in the array. This number must be greater than or equal to two.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The lines are drawn from the first point through subsequent points by using the current pen. Unlike the <see cref="M:Win32Interop.Methods.Gdi32.LineTo(System.IntPtr,System.Int32,System.Int32)"/> or
<see cref="M:Win32Interop.Methods.Gdi32.PolylineTo(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)"/> functions, the <see cref="M:Win32Interop.Methods.Gdi32.Polyline(System.IntPtr,Win32Interop.Structs.POINT[],System.Int32)"/> function neither uses nor updates the current position.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PolyDraw(System.IntPtr,Win32Interop.Structs.POINT[],System.Byte[],System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PolyDraw(System.IntPtr,Win32Interop.Structs.POINT[],System.Byte[],System.Int32)"/> function draws a set of line segments and Bézier curves.
</summary>
<param name="hdc">A handle to a device context.</param>
<param name="lppt">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures that contains the endpoints for each line segment and the endpoints and control points
for each Bézier curve, in logical units.
</param>
<param name="lpbTypes">
<para>
A pointer to an array that specifies how each point in the <paramref name="lppt"/> array is used. This parameter can be one of the following
values.
</para>
<list type="table">
<item>
<term>PT_MOVETO</term>
<description>Specifies that this point starts a disjoint figure. This point becomes the new current position.</description>
</item>
<item>
<term>PT_LINETO</term>
<description>Specifies that a line is to be drawn from the current position to this point, which then becomes the new current position.</description>
</item>
<item>
<term>PT_BEZIERTO</term>
<description>
<para>Specifies that this point is a control point or ending point for a Bézier curve.</para>
<para>
PT_BEZIERTO types always occur in sets of three. The current position defines the starting point for the Bézier curve. The first
two PT_BEZIERTO points are the control points, and the third PT_BEZIERTO point is the ending point. The ending point becomes the
new current position. If there are not three consecutive PT_BEZIERTO points, an error results.
</para>
</description>
</item>
</list>
<para>
A PT_LINETO or PT_BEZIERTO type can be combined with the following value by using the bitwise operator OR to indicate that the corresponding
point is the last point in a figure and the figure is closed.
</para>
<list type="table">
<item>
<term>PT_CLOSEFIGURE</term>
<description>
<para>
Specifies that the figure is automatically closed after the PT_LINETO or PT_BEZIERTO type for this point is done. A line is drawn
from this point to the most recent PT_MOVETO or <see cref="M:Win32Interop.Methods.Gdi32.MoveToEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> point.
</para>
<para>
This value is combined with the PT_LINETO type for a line, or with the PT_BEZIERTO type of the ending point for a Bézier curve,
by using the bitwise operator OR.
</para>
<para>The current position is set to the ending point of the closing line.</para>
</description>
</item>
</list>
</param>
<param name="cCount">
The total number of points in the <paramref name="lppt"/> array, the same as the number of bytes in the <paramref name="lpbTypes"/> array.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.PolyDraw(System.IntPtr,Win32Interop.Structs.POINT[],System.Byte[],System.Int32)"/> function can be used in place of consecutive calls to <see cref="M:Win32Interop.Methods.Gdi32.MoveToEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/>, <see cref="M:Win32Interop.Methods.Gdi32.LineTo(System.IntPtr,System.Int32,System.Int32)"/>, and
<see cref="M:Win32Interop.Methods.Gdi32.PolyBezierTo(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)"/> functions to draw disjoint figures. The lines and curves are drawn using the current pen and figures are not
filled. If there is an active path started by calling <see cref="M:Win32Interop.Methods.Gdi32.BeginPath(System.IntPtr)"/>, <see cref="M:Win32Interop.Methods.Gdi32.PolyDraw(System.IntPtr,Win32Interop.Structs.POINT[],System.Byte[],System.Int32)"/> adds to the path.
</para>
<para>
The points contained in the <paramref name="lppt"/> array and in the <paramref name="lpbTypes"/> array indicate whether each point is part
of a <see cref="M:Win32Interop.Methods.Gdi32.MoveToEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/>, <see cref="M:Win32Interop.Methods.Gdi32.LineTo(System.IntPtr,System.Int32,System.Int32)"/>, or <see cref="M:Win32Interop.Methods.Gdi32.PolyBezierTo(System.IntPtr,Win32Interop.Structs.POINT[],System.UInt32)"/> operation. It is also possible to close figures.
</para>
<para>This function updates the current position.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PaintRgn(System.IntPtr,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PaintRgn(System.IntPtr,System.IntPtr)"/> function paints the specified region by using the brush currently selected into the device context.
</summary>
<param name="hdc">Handle to the device context.</param>
<param name="hrgn">Handle to the region to be filled. The region's coordinates are presumed to be logical coordinates.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.MoveToEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.MoveToEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function updates the current position to the specified point and optionally returns the previous position.
</summary>
<param name="hdc">Handle to a device context.</param>
<param name="X">Specifies the x-coordinate, in logical units, of the new position, in logical units.</param>
<param name="Y">Specifies the y-coordinate, in logical units, of the new position, in logical units.</param>
<param name="lpPoint">
Pointer to a <see cref="T:Win32Interop.Structs.POINT"/> structure that receives the previous current position. If this parameter is a NULL pointer, the previous
position is not returned.
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The <see cref="M:Win32Interop.Methods.Gdi32.MoveToEx(System.IntPtr,System.Int32,System.Int32,System.IntPtr)"/> function affects all drawing functions.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetPixel(System.IntPtr,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetPixel(System.IntPtr,System.Int32,System.Int32)"/> function retrieves the red, green, blue (RGB) color value of the pixel at the specified coordinates.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nXPos">The x-coordinate, in logical units, of the pixel to be examined.</param>
<param name="nYPos">The y-coordinate, in logical units, of the pixel to be examined.</param>
<returns>
The return value is the <see cref="T:Win32Interop.Structs.COLORREF"/> value that specifies the RGB of the pixel. If the pixel is outside of the current clipping
region, the return value is CLR_INVALID (0xFFFFFFFF defined in Wingdi.h).
</returns>
<remarks>
<para>The pixel must be within the boundaries of the current clipping region.</para>
<para>
Not all devices support <see cref="M:Win32Interop.Methods.Gdi32.GetPixel(System.IntPtr,System.Int32,System.Int32)"/>. An application should call <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> to determine whether a specified
device supports this function.
</para>
<para>A bitmap must be selected within the device context, otherwise, CLR_INVALID is returned on all pixels.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GdiFlush">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GdiFlush"/> function flushes the calling thread's current batch.
</summary>
<returns>
<para>If all functions in the current batch succeed, the return value is nonzero.</para>
<para>If not all functions in the current batch succeed, the return value is zero, indicating that at least one function returned an error.</para>
</returns>
<remarks>
Batching enhances drawing performance by minimizing the amount of time needed to call GDI drawing functions that return Boolean values. The
system accumulates the parameters for calls to these functions in the current batch and then calls the functions when the batch is flushed by any
of the following means:
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.FrameRgn(System.IntPtr,System.IntPtr,System.IntPtr,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.FrameRgn(System.IntPtr,System.IntPtr,System.IntPtr,System.Int32,System.Int32)"/> function draws a border around the specified region by using the specified brush.
</summary>
<param name="hdc">Handle to the device context.</param>
<param name="hrgn">Handle to the region to be enclosed in a border. The region's coordinates are presumed to be in logical units.</param>
<param name="hbr">Handle to the brush to be used to draw the border.</param>
<param name="nWidth">Specifies the width, in logical units, of vertical brush strokes.</param>
<param name="nHeight">Specifies the height, in logical units, of horizontal brush strokes.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.FillPath(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.FillPath(System.IntPtr)"/> function closes any open figures in the current path and fills the path's interior by using the current brush and
polygon-filling mode.
</summary>
<param name="hdc">A handle to a device context that contains a valid path.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
After its interior is filled, the path is discarded from the DC identified by the <paramref name="hdc"/> parameter.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.EqualRgn(System.IntPtr,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.EqualRgn(System.IntPtr,System.IntPtr)"/> function checks the two specified regions to determine whether they are identical. The function considers two regions
identical if they are equal in size and shape.
</summary>
<param name="hSrcRgn1">Handle to a region.</param>
<param name="hSrcRgn2">Handle to a region.</param>
<returns>
<para>If the two regions are equal, the return value is nonzero.</para>
<para>If the two regions are not equal, the return value is zero. A return value of ERROR means at least one of the region handles is invalid.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.DeleteDC(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.DeleteDC(System.IntPtr)"/> function deletes the specified device context (DC).
</summary>
<param name="hdc">A handle to the device context.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
An application must not delete a DC whose handle was obtained by calling the <see cref="M:Win32Interop.Methods.User32.GetDC(System.IntPtr)"/> function. Instead, it must call the
<see cref="M:Win32Interop.Methods.User32.ReleaseDC(System.IntPtr,System.IntPtr)"/> function to free the DC.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.CancelDC(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.CancelDC(System.IntPtr)"/> function cancels any pending operation on the specified device context (DC).
</summary>
<param name="hdc">A handle to the DC.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.CancelDC(System.IntPtr)"/> function is used by multithreaded applications to cancel lengthy drawing operations. If thread A initiates a
lengthy drawing operation, thread B may cancel that operation by calling this function.
</para>
<para>
If an operation is canceled, the affected thread returns an error and the result of its drawing operation is undefined. The results are also
undefined if no drawing operation was in progress when the function was called.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.AngleArc(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.Single,System.Single)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.AngleArc(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.Single,System.Single)"/> function draws a line segment and an arc. The line segment is drawn from the current position to the beginning of the
arc. The arc is drawn along the perimeter of a circle with the given radius and center. The length of the arc is defined by the given start and
sweep angles.
</summary>
<param name="hdc">Handle to a device context.</param>
<param name="X">Specifies the x-coordinate, in logical units, of the center of the circle.</param>
<param name="Y">Specifies the y-coordinate, in logical units, of the center of the circle.</param>
<param name="dwRadius">Specifies the radius, in logical units, of the circle. This value must be positive.</param>
<param name="eStartAngle">Specifies the start angle, in degrees, relative to the x-axis.</param>
<param name="eSweepAngle">Specifies the sweep angle, in degrees, relative to the starting angle.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.AngleArc(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.Single,System.Single)"/> function moves the current position to the ending point of the arc.
</para>
<para>
The arc drawn by this function may appear to be elliptical, depending on the current transformation and mapping mode. Before drawing the arc,
<see cref="M:Win32Interop.Methods.Gdi32.AngleArc(System.IntPtr,System.Int32,System.Int32,System.UInt32,System.Single,System.Single)"/> draws the line segment from the current position to the beginning of the arc.
</para>
<para>
The arc is drawn by constructing an imaginary circle around the specified center point with the specified radius. The starting point of the
arc is determined by measuring counterclockwise from the x-axis of the circle by the number of degrees in the start angle. The ending point
is similarly located by measuring counterclockwise from the starting point by the number of degrees in the sweep angle.
</para>
<para>If the sweep angle is greater than 360 degrees, the arc is swept multiple times.</para>
<para>This function draws lines by using the current pen. The figure is not filled.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.AbortDoc(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.AbortDoc(System.IntPtr)"/> function stops the current print job and erases everything drawn since the last call to the <see cref="M:Win32Interop.Methods.Gdi32.StartDoc(System.IntPtr,Win32Interop.Structs.DOCINFO@)"/>
function.
</summary>
<param name="hdc">Handle to the device context for the print job.</param>
<returns>
<para>If the function succeeds, the return value is greater than zero.</para>
<para>If the function fails, the return value is SP_ERROR.</para>
</returns>
<remarks>
<para>
Note: This is a blocking or synchronous function and might not return immediately. How quickly this function returns depends on run-time
factors such as network status, print server configuration, and printer driver implementation—factors that are difficult to predict when
writing an application. Calling this function from a thread that manages interaction with the user interface could make the application
appear to be unresponsive.
</para>
<para>
Applications should call the <see cref="M:Win32Interop.Methods.Gdi32.AbortDoc(System.IntPtr)"/> function to stop a print job if an error occurs, or to stop a print job after the user
cancels that job. To end a successful print job, an application should call the <see cref="M:Win32Interop.Methods.Gdi32.EndDoc(System.IntPtr)"/> function.
</para>
<para>
If Print Manager was used to start the print job, calling <see cref="M:Win32Interop.Methods.Gdi32.AbortDoc(System.IntPtr)"/> erases the entire spool job, so that the printer receives
nothing. If Print Manager was not used to start the print job, the data may already have been sent to the printer. In this case, the printer
driver resets the printer (when possible) and ends the print job.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SetROP2(System.IntPtr,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SetROP2(System.IntPtr,System.Int32)"/> function sets the current foreground mix mode. GDI uses the foreground mix mode to combine pens and interiors of
filled objects with the colors already on the screen. The foreground mix mode defines how colors from the brush or pen and the colors in the
existing image are to be combined.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="fnDrawMode">
<para>The mix mode. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>R2_BLACK</term>
<description>Pixel is always 0.</description>
</item>
<item>
<term>R2_COPYPEN</term>
<description>Pixel is the pen color.</description>
</item>
<item>
<term>R2_MASKNOTPEN</term>
<description>Pixel is a combination of the colors common to both the screen and the inverse of the pen.</description>
</item>
<item>
<term>R2_MASKPEN</term>
<description>Pixel is a combination of the colors common to both the pen and the screen.</description>
</item>
<item>
<term>R2_MASKPENNOT</term>
<description>Pixel is a combination of the colors common to both the pen and the inverse of the screen.</description>
</item>
<item>
<term>R2_MERGENOTPEN</term>
<description>Pixel is a combination of the screen color and the inverse of the pen color.</description>
</item>
<item>
<term>R2_MERGEPEN</term>
<description>Pixel is a combination of the pen color and the screen color.</description>
</item>
<item>
<term>R2_MERGEPENNOT</term>
<description>Pixel is a combination of the pen color and the inverse of the screen color.</description>
</item>
<item>
<term>R2_NOP</term>
<description>Pixel remains unchanged.</description>
</item>
<item>
<term>R2_NOT</term>
<description>Pixel is the inverse of the screen color.</description>
</item>
<item>
<term>R2_NOTCOPYPEN</term>
<description>Pixel is the inverse of the pen color.</description>
</item>
<item>
<term>R2_NOTMASKPEN</term>
<description>Pixel is the inverse of the R2_MASKPEN color.</description>
</item>
<item>
<term>R2_NOTMERGEPEN</term>
<description>Pixel is the inverse of the R2_MERGEPEN color.</description>
</item>
<item>
<term>R2_NOTXORPEN</term>
<description>Pixel is the inverse of the R2_XORPEN color.</description>
</item>
<item>
<term>R2_WHITE</term>
<description>Pixel is always 1.</description>
</item>
<item>
<term>R2_XORPEN</term>
<description>Pixel is a combination of the colors in the pen and in the screen, but not in both.</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value specifies the previous mix mode.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
Mix modes define how GDI combines source and destination colors when drawing with the current pen. The mix modes are binary raster operation
codes, representing all possible Boolean functions of two variables, using the binary operations AND, OR, and XOR (exclusive OR), and the unary
operation NOT. The mix mode is for raster devices only; it is not available for vector devices.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.Polygon(System.IntPtr,Win32Interop.Structs.POINT[],System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.Polygon(System.IntPtr,Win32Interop.Structs.POINT[],System.Int32)"/> function draws a polygon consisting of two or more vertices connected by straight lines. The polygon is outlined by
using the current pen and filled by using the current brush and polygon fill mode.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpPoints">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures that specify the vertices of the polygon, in logical coordinates.
</param>
<param name="nCount">The number of vertices in the array. This value must be greater than or equal to 2.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>The polygon is closed automatically by drawing a line from the last vertex to the first.</para>
<para>
The current position is neither used nor updated by the <see cref="M:Win32Interop.Methods.Gdi32.Polygon(System.IntPtr,Win32Interop.Structs.POINT[],System.Int32)"/> function.
</para>
<para>
Any extra points are ignored. To draw a line with more points, divide your data into groups, each of which have less than the maximum number
of points, and call the function for each group of points. Remember to connect the line segments.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.MaskBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.MaskBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function combines the color data for the source and destination bitmaps using the specified mask and raster operation.
</summary>
<param name="hdcDest">A handle to the destination device context.</param>
<param name="nXDest">The x-coordinate, in logical units, of the upper-left corner of the destination rectangle.</param>
<param name="nYDest">The y-coordinate, in logical units, of the upper-left corner of the destination rectangle.</param>
<param name="nWidth">The width, in logical units, of the destination rectangle and source bitmap.</param>
<param name="nHeight">The height, in logical units, of the destination rectangle and source bitmap.</param>
<param name="hdcSrc">
A handle to the device context from which the bitmap is to be copied. It must be zero if the <paramref name="dwRop"/> parameter specifies a
raster operation that does not include a source.
</param>
<param name="nXSrc">The x-coordinate, in logical units, of the upper-left corner of the source bitmap.</param>
<param name="nYSrc">The y-coordinate, in logical units, of the upper-left corner of the source bitmap.</param>
<param name="hbmMask">A handle to the monochrome mask bitmap combined with the color bitmap in the source device context.</param>
<param name="xMask">
The horizontal pixel offset for the mask bitmap specified by the <paramref name="hbmMask"/> parameter.
</param>
<param name="yMask">
The vertical pixel offset for the mask bitmap specified by the <paramref name="hbmMask"/> parameter.
</param>
<param name="dwRop">
<para>
The foreground and background ternary raster operation codes (ROPs) that the function uses to control the combination of source and
destination data. The background raster operation code is stored in the high-order byte of the high-order word of this value; the foreground
raster operation code is stored in the low-order byte of the high-order word of this value; the low-order word of this value is ignored, and
should be zero. The macro MAKEROP4 creates such combinations of foreground and background raster operation codes.
</para>
<para>For a discussion of foreground and background in the context of this function, see the following Remarks section.</para>
<para>
For a list of common raster operation codes (ROPs), see the <see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function. Note that the CAPTUREBLT ROP generally cannot be
used for printing device contexts.
</para>
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.MaskBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function uses device-dependent bitmaps.
</para>
<para>
A value of 1 in the mask specified by <paramref name="hbmMask"/> indicates that the foreground raster operation code specified by
<paramref name="dwRop"/> should be applied at that location. A value of 0 in the mask indicates that the background raster operation code
specified by <paramref name="dwRop"/> should be applied at that location.
</para>
<para>
If the raster operations require a source, the mask rectangle must cover the source rectangle. If it does not, the function will fail. If the
raster operations do not require a source, the mask rectangle must cover the destination rectangle. If it does not, the function will fail.
</para>
<para>
If a rotation or shear transformation is in effect for the source device context when this function is called, an error occurs. However,
other types of transformation are allowed.
</para>
<para>
If the color formats of the source, pattern, and destination bitmaps differ, this function converts the pattern or source format, or both, to
match the destination format.
</para>
<para>If the mask bitmap is not a monochrome bitmap, an error occurs.</para>
<para>
When an enhanced metafile is being recorded, an error occurs (and the function returns FALSE) if the source device context identifies an
enhanced-metafile device context.
</para>
<para>
Not all devices support the <see cref="M:Win32Interop.Methods.Gdi32.MaskBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function. An application should call the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function with the
nIndex parameter as RC_BITBLT to determine whether a device supports this function.
</para>
<para>
If no mask bitmap is supplied, this function behaves exactly like <see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/>, using the foreground raster operation code.
</para>
<para>ICM: No color management is performed when blits occur.</para>
<para>
When used in a multiple monitor system, both <paramref name="hdcSrc"/> and <paramref name="hdcDest"/> must refer to the same device or the
function will fail. To transfer data between DCs for different devices, convert the memory bitmap (compatible bitmap, or DDB) to a DIB by
calling <see cref="M:Win32Interop.Methods.Gdi32.GetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/>. To display the DIB to the second device, call <see cref="M:Win32Interop.Methods.Gdi32.SetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> or <see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/>.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.LineDDA(System.Int32,System.Int32,System.Int32,System.Int32,Win32Interop.Methods.LineDDAProc,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.LineDDA(System.Int32,System.Int32,System.Int32,System.Int32,Win32Interop.Methods.LineDDAProc,System.Int32)"/> function determines which pixels should be highlighted for a line defined by the specified starting and ending points.
</summary>
<param name="nXStart">Specifies the x-coordinate, in logical units, of the line's starting point.</param>
<param name="nYStart">Specifies the y-coordinate, in logical units, of the line's starting point.</param>
<param name="nXEnd">Specifies the x-coordinate, in logical units, of the line's ending point.</param>
<param name="nYEnd">Specifies the y-coordinate, in logical units, of the line's ending point.</param>
<param name="lpLineFunc">
Pointer to an application-defined callback function. For more information, see the <see cref="T:Win32Interop.Methods.LineDDAProc"/> callback function.
</param>
<param name="lpData">Pointer to the application-defined data.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.LineDDA(System.Int32,System.Int32,System.Int32,System.Int32,Win32Interop.Methods.LineDDAProc,System.Int32)"/> function passes the coordinates for each point along the line, except for the line's ending point, to the
application-defined callback function. In addition to passing the coordinates of a point, this function passes any existing
application-defined data.
</para>
<para>
The coordinates passed to the callback function match pixels on a video display only if the default transformations and mapping modes are
used.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetROP2(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetROP2(System.IntPtr)"/> function retrieves the foreground mix mode of the specified device context. The mix mode specifies how the pen or
interior color and the color already on the screen are combined to yield a new color.
</summary>
<param name="hdc">Handle to the device context.</param>
<returns>
<para>If the function succeeds, the return value specifies the foreground mix mode.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>Following are the foreground mix modes.</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetPath(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Byte[]@,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.GetPath(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Byte[]@,System.Int32)"/> function retrieves the coordinates defining the endpoints of lines and the control points of curves found in the path
that is selected into the specified device context.
</summary>
<param name="hdc">A handle to a device context that contains a closed path.</param>
<param name="lpPoints">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures that receives the line endpoints and curve control points, in logical coordinates.
</param>
<param name="lpTypes">
<para>A pointer to an array of bytes that receives the vertex types. This parameter can be one of the following values.</para>
<list type="table">
<item>
<term>PT_MOVETO</term>
<description>
Specifies that the corresponding point in the <paramref name="lpPoints"/> parameter starts a disjoint figure.
</description>
</item>
<item>
<term>PT_LINETO</term>
<description>
Specifies that the previous point and the corresponding point in <paramref name="lpPoints"/> are the endpoints of a line.
</description>
</item>
<item>
<term>PT_BEZIERTO</term>
<description>
<para>
Specifies that the corresponding point in <paramref name="lpPoints"/> is a control point or ending point for a Bézier curve.
</para>
<para>
PT_BEZIERTO values always occur in sets of three. The point in the path immediately preceding them defines the starting point for
the Bézier curve. The first two PT_BEZIERTO points are the control points, and the third PT_BEZIERTO point is the ending (if
hard-coded) point.
</para>
</description>
</item>
</list>
<para>
A PT_LINETO or PT_BEZIERTO value may be combined with the following value (by using the bitwise operator OR) to indicate that the
corresponding point is the last point in a figure and the figure should be closed.
</para>
<list type="table">
<item>
<term>PT_CLOSEFIGURE</term>
<description>
Specifies that the figure is automatically closed after the corresponding line or curve is drawn. The figure is closed by drawing a
line from the line or curve endpoint to the point corresponding to the last PT_MOVETO.
</description>
</item>
</list>
</param>
<param name="nSize">
The total number of <see cref="T:Win32Interop.Structs.POINT"/> structures that can be stored in the array pointed to by <paramref name="lpPoints"/>. This value must
be the same as the number of bytes that can be placed in the array pointed to by <paramref name="lpTypes"/>.
</param>
<returns>
If the <paramref name="nSize"/> parameter is nonzero, the return value is the number of points enumerated. If <paramref name="nSize"/> is 0,
the return value is the total number of points in the path (and <see cref="M:Win32Interop.Methods.Gdi32.GetPath(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Byte[]@,System.Int32)"/> writes nothing to the buffers). If
<paramref name="nSize"/> is nonzero and is less than the number of points in the path, the return value is 1.
</returns>
<remarks>
<para>
The device context identified by the <paramref name="hdc"/> parameter must contain a closed path.
</para>
<para>
The points of the path are returned in logical coordinates. Points are stored in the path in device coordinates, so <see cref="M:Win32Interop.Methods.Gdi32.GetPath(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Byte[]@,System.Int32)"/>
changes the points from device coordinates to logical coordinates by using the inverse of the current transformation.
</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.FlattenPath(System.IntPtr)"/> function may be called before <see cref="M:Win32Interop.Methods.Gdi32.GetPath(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Byte[]@,System.Int32)"/> to convert all curves in the path into line segments.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.FillRgn(System.IntPtr,System.IntPtr,System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.FillRgn(System.IntPtr,System.IntPtr,System.IntPtr)"/> function fills a region by using the specified brush.
</summary>
<param name="hdc">Handle to the device context.</param>
<param name="hrgn">Handle to the region to be filled. The region's coordinates are presumed to be in logical units.</param>
<param name="hbr">Handle to the brush to be used to fill the region.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.EndPath(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.EndPath(System.IntPtr)"/> function closes a path bracket and selects the path defined by the bracket into the specified device context.
</summary>
<param name="hdc">A handle to the device context into which the new path is selected.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
</member>
<member name="M:Win32Interop.Methods.Gdi32.EndPage(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.EndPage(System.IntPtr)"/> function notifies the device that the application has finished writing to a page. This function is typically used to
direct the device driver to advance to a new page.
</summary>
<param name="hdc">A handle to the device context for the print job.</param>
<returns>
<para>If the function succeeds, the return value is greater than zero.</para>
<para>If the function fails, the return value is less than or equal to zero.</para>
</returns>
<remarks>
<para>
Note: This is a blocking or synchronous function and might not return immediately. How quickly this function returns depends on run-time
factors such as network status, print server configuration, and printer driver implementation—factors that are difficult to predict when
writing an application. Calling this function from a thread that manages interaction with the user interface could make the application
appear to be unresponsive.
</para>
<para>
Use the <see cref="M:Win32Interop.Methods.Gdi32.ResetDC(System.IntPtr,Win32Interop.Structs.DEVMODE@)"/> function to change the device mode, if necessary, after calling the <see cref="M:Win32Interop.Methods.Gdi32.EndPage(System.IntPtr)"/> function. Note that
a call to <see cref="M:Win32Interop.Methods.Gdi32.ResetDC(System.IntPtr,Win32Interop.Structs.DEVMODE@)"/> resets all device context attributes back to default values. Neither <see cref="M:Win32Interop.Methods.Gdi32.EndPage(System.IntPtr)"/> nor
<see cref="M:Win32Interop.Methods.Gdi32.StartPage(System.IntPtr)"/> resets the device context attributes. Device context attributes remain constant across subsequent pages. You do not
need to re-select objects and set up the mapping mode again before printing the next page; however, doing so will produce the same results
and reduce code differences between versions of Windows.
</para>
<para>
When a page in a spooled file exceeds approximately 350 MB, it may fail to print and not send an error message. For example, this can occur
when printing large EMF files. The page size limit depends on many factors including the amount of virtual memory available, the amount of
memory allocated by calling processes, and the amount of fragmentation in the process heap.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.Ellipse(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.Ellipse(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32)"/> function draws an ellipse. The center of the ellipse is the center of the specified bounding rectangle. The ellipse is
outlined by using the current pen and is filled by using the current brush.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nLeftRect">The x-coordinate, in logical coordinates, of the upper-left corner of the bounding rectangle.</param>
<param name="nTopRect">The y-coordinate, in logical coordinates, of the upper-left corner of the bounding rectangle.</param>
<param name="nRightRect">The x-coordinate, in logical coordinates, of the lower-right corner of the bounding rectangle.</param>
<param name="nBottomRect">The y-coordinate, in logical coordinates, of the lower-right corner of the bounding rectangle.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The current position is neither used nor updated by <see cref="M:Win32Interop.Methods.Gdi32.Ellipse(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32)"/>.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.SaveDC(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.SaveDC(System.IntPtr)"/> function saves the current state of the specified device context (DC) by copying data describing selected objects and
graphic modes (such as the bitmap, brush, palette, font, pen, region, drawing mode, and mapping mode) to a context stack.
</summary>
<param name="hdc">A handle to the DC whose state is to be saved.</param>
<returns>
<para>If the function succeeds, the return value identifies the saved state.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.SaveDC(System.IntPtr)"/> function can be used any number of times to save any number of instances of the DC state.
</para>
<para>
A saved state can be restored by using the <see cref="M:Win32Interop.Methods.Gdi32.RestoreDC(System.IntPtr,System.Int32)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PlgBlt(System.IntPtr,Win32Interop.Structs.POINT[],System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PlgBlt(System.IntPtr,Win32Interop.Structs.POINT[],System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32)"/> function performs a bit-block transfer of the bits of color data from the specified rectangle in the source device
context to the specified parallelogram in the destination device context. If the given bitmask handle identifies a valid monochrome bitmap, the
function uses this bitmap to mask the bits of color data from the source rectangle.
</summary>
<param name="hdcDest">A handle to the destination device context.</param>
<param name="lpPoint">
A pointer to an array of three points in logical space that identify three corners of the destination parallelogram. The upper-left corner of the
source rectangle is mapped to the first point in this array, the upper-right corner to the second point in this array, and the lower-left corner
to the third point. The lower-right corner of the source rectangle is mapped to the implicit fourth point in the parallelogram.
</param>
<param name="hdcSrc">A handle to the source device context.</param>
<param name="nXSrc">The x-coordinate, in logical units, of the upper-left corner of the source rectangle.</param>
<param name="nYSrc">The y-coordinate, in logical units, of the upper-left corner of the source rectangle.</param>
<param name="nWidth">The width, in logical units, of the source rectangle.</param>
<param name="nHeight">The height, in logical units, of the source rectangle.</param>
<param name="hbmMask">A handle to an optional monochrome bitmap that is used to mask the colors of the source rectangle.</param>
<param name="xMask">The x-coordinate, in logical units, of the upper-left corner of the monochrome bitmap.</param>
<param name="yMask">The y-coordinate, in logical units, of the upper-left corner of the monochrome bitmap.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.PlgBlt(System.IntPtr,Win32Interop.Structs.POINT[],System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32)"/> function works with device-dependent bitmaps.
</para>
<para>The fourth vertex of the parallelogram (D) is defined by treating the first three points (A, B, and C ) as vectors and computing D = B +CA.</para>
<para>
If the bitmask exists, a value of one in the mask indicates that the source pixel color should be copied to the destination. A value of zero
in the mask indicates that the destination pixel color is not to be changed. If the mask rectangle is smaller than the source and destination
rectangles, the function replicates the mask pattern.
</para>
<para>
Scaling, translation, and reflection transformations are allowed in the source device context; however, rotation and shear transformations
are not. If the mask bitmap is not a monochrome bitmap, an error occurs. The stretching mode for the destination device context is used to
determine how to stretch or compress the pixels, if that is necessary.
</para>
<para>When an enhanced metafile is being recorded, an error occurs if the source device context identifies an enhanced-metafile device context.</para>
<para>
The destination coordinates are transformed according to the destination device context; the source coordinates are transformed according to
the source device context. If the source transformation has a rotation or shear, an error is returned.
</para>
<para>
If the destination and source rectangles do not have the same color format, <see cref="M:Win32Interop.Methods.Gdi32.PlgBlt(System.IntPtr,Win32Interop.Structs.POINT[],System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32)"/> converts the source rectangle to match the
destination rectangle.
</para>
<para>
Not all devices support the <see cref="M:Win32Interop.Methods.Gdi32.PlgBlt(System.IntPtr,Win32Interop.Structs.POINT[],System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32)"/> function. For more information, see the description of the RC_BITBLT raster capability in
the <see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function.
</para>
<para>
If the source and destination device contexts represent incompatible devices, <see cref="M:Win32Interop.Methods.Gdi32.PlgBlt(System.IntPtr,Win32Interop.Structs.POINT[],System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32)"/> returns an error.
</para>
<para>
When used in a multiple monitor system, both <paramref name="hdcSrc"/> and <paramref name="hdcDest"/> must refer to the same device or the
function will fail. To transfer data between DCs for different devices, convert the memory bitmap to a DIB by calling
<see cref="M:Win32Interop.Methods.Gdi32.GetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/>. To display the DIB to the second device, call <see cref="M:Win32Interop.Methods.Gdi32.SetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> or <see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/>.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.PatBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.PatBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> function paints the specified rectangle using the brush that is currently selected into the specified device context.
The brush color and the surface color or colors are combined by using the specified raster operation.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nXLeft">The x-coordinate, in logical units, of the upper-left corner of the rectangle to be filled.</param>
<param name="nYLeft">The y-coordinate, in logical units, of the upper-left corner of the rectangle to be filled.</param>
<param name="nWidth">The width, in logical units, of the rectangle.</param>
<param name="nHeight">The height, in logical units, of the rectangle.</param>
<param name="dwRop">
<para>The raster operation code. This code can be one of the following values.</para>
<list type="table">
<item>
<term>PATCOPY</term>
<description>Copies the specified pattern into the destination bitmap.</description>
</item>
<item>
<term>PATINVERT</term>
<description>Combines the colors of the specified pattern with the colors of the destination rectangle by using the Boolean XOR operator.</description>
</item>
<item>
<term>DSTINVERT</term>
<description>Inverts the destination rectangle.</description>
</item>
<item>
<term>BLACKNESS</term>
<description>
Fills the destination rectangle using the color associated with index 0 in the physical palette. (This color is black for the default
physical palette.)
</description>
</item>
<item>
<term>WHITENESS</term>
<description>
Fills the destination rectangle using the color associated with index 1 in the physical palette. (This color is white for the default
physical palette.)
</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The values of the <paramref name="dwRop"/> parameter for this function are a limited subset of the full 256 ternary raster-operation codes;
in particular, an operation code that refers to a source rectangle cannot be used.
</para>
<para>
Not all devices support the <see cref="M:Win32Interop.Methods.Gdi32.PatBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> function. For more information, see the description of the RC_BITBLT capability in the
<see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.LPtoDP(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.LPtoDP(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Int32)"/> function converts logical coordinates into device coordinates. The conversion depends on the mapping mode of the device
context, the settings of the origins and extents for the window and viewport, and the world transformation.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpPoints">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures. The x-coordinates and y-coordinates contained in each of the <see cref="T:Win32Interop.Structs.POINT"/>
structures will be transformed.
</param>
<param name="nCount">The number of points in the array.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.LPtoDP(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Int32)"/> function fails if the logical coordinates exceed 32 bits, or if the converted device coordinates exceed 27 bits. In
the case of such an overflow, the results for all the points are undefined.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.LPtoDP(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Int32)"/> calculates complex floating-point arithmetic, and it has a caching system for efficiency. Therefore, the conversion
result of an initial call to <see cref="M:Win32Interop.Methods.Gdi32.LPtoDP(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Int32)"/> might not exactly match the conversion result of a later call to <see cref="M:Win32Interop.Methods.Gdi32.LPtoDP(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Int32)"/>. We
recommend not to write code that relies on the exact match of the conversion results from multiple calls to <see cref="M:Win32Interop.Methods.Gdi32.LPtoDP(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Int32)"/> even if the
parameters that are passed to each call are identical.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.LineTo(System.IntPtr,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.LineTo(System.IntPtr,System.Int32,System.Int32)"/> function draws a line from the current position up to, but not including, the specified point.
</summary>
<param name="hdc">Handle to a device context.</param>
<param name="nXEnd">Specifies the x-coordinate, in logical units, of the line's ending point.</param>
<param name="nYEnd">Specifies the y-coordinate, in logical units, of the line's ending point.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>The line is drawn by using the current pen and, if the pen is a geometric pen, the current brush.</para>
<para>
If <see cref="M:Win32Interop.Methods.Gdi32.LineTo(System.IntPtr,System.Int32,System.Int32)"/> succeeds, the current position is set to the specified ending point.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.EndDoc(System.IntPtr)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.EndDoc(System.IntPtr)"/> function ends a print job.
</summary>
<param name="hdc">Handle to the device context for the print job.</param>
<returns>
<para>If the function succeeds, the return value is greater than zero.</para>
<para>If the function fails, the return value is less than or equal to zero.</para>
</returns>
<remarks>
<para>
Note: This is a blocking or synchronous function and might not return immediately. How quickly this function returns depends on run-time
factors such as network status, print server configuration, and printer driver implementation—factors that are difficult to predict when
writing an application. Calling this function from a thread that manages interaction with the user interface could make the application
appear to be unresponsive.
</para>
<para>
Applications should call <see cref="M:Win32Interop.Methods.Gdi32.EndDoc(System.IntPtr)"/> immediately after finishing a print job.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.DPtoLP(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.DPtoLP(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Int32)"/> function converts device coordinates into logical coordinates. The conversion depends on the mapping mode of the device
context, the settings of the origins and extents for the window and viewport, and the world transformation.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="lpPoints">
A pointer to an array of <see cref="T:Win32Interop.Structs.POINT"/> structures. The x- and y-coordinates contained in each <see cref="T:Win32Interop.Structs.POINT"/> structure will be
transformed.
</param>
<param name="nCount">The number of points in the array.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
The <see cref="M:Win32Interop.Methods.Gdi32.DPtoLP(System.IntPtr,Win32Interop.Structs.POINT[]@,System.Int32)"/> function fails if the device coordinates exceed 27 bits, or if the converted logical coordinates exceed 32 bits. In the
case of such an overflow, the results for all the points are undefined.
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function performs a bit-block transfer of the color data corresponding to a rectangle of pixels from the specified
source device context into a destination device context.
</summary>
<param name="hdcDest">A handle to the destination device context.</param>
<param name="nXDest">The x-coordinate, in logical units, of the upper-left corner of the destination rectangle.</param>
<param name="nYDest">The y-coordinate, in logical units, of the upper-left corner of the destination rectangle.</param>
<param name="nWidth">The width, in logical units, of the source and destination rectangles.</param>
<param name="nHeight">The height, in logical units, of the source and the destination rectangles.</param>
<param name="hdcSrc">A handle to the source device context.</param>
<param name="nXSrc">The x-coordinate, in logical units, of the upper-left corner of the source rectangle.</param>
<param name="nYSrc">The y-coordinate, in logical units, of the upper-left corner of the source rectangle.</param>
<param name="dwRop">
<para>
A raster-operation code. These codes define how the color data for the source rectangle is to be combined with the color data for the
destination rectangle to achieve the final color.
</para>
<para>The following list shows some common raster operation codes.</para>
<list type="table">
<item>
<term>BLACKNESS</term>
<description>
Fills the destination rectangle using the color associated with index 0 in the physical palette. (This color is black for the default
physical palette.)
</description>
</item>
<item>
<term>CAPTUREBLT</term>
<description>
Includes any windows that are layered on top of your window in the resulting image. By default, the image only contains your window.
Note that this generally cannot be used for printing device contexts.
</description>
</item>
<item>
<term>DSTINVERT</term>
<description>Inverts the destination rectangle.</description>
</item>
<item>
<term>MERGECOPY</term>
<description>
Merges the colors of the source rectangle with the brush currently selected in <paramref name="hdcDest"/>, by using the Boolean AND
operator.
</description>
</item>
<item>
<term>MERGEPAINT</term>
<description>
Merges the colors of the inverted source rectangle with the colors of the destination rectangle by using the Boolean OR
operator.
</description>
</item>
<item>
<term>NOMIRRORBITMAP</term>
<description>Prevents the bitmap from being mirrored.</description>
</item>
<item>
<term>NOTSRCCOPY</term>
<description>Copies the inverted source rectangle to the destination.</description>
</item>
<item>
<term>NOTSRCERASE</term>
<description>
Combines the colors of the source and destination rectangles by using the Boolean OR operator and then inverts the resultant
color.
</description>
</item>
<item>
<term>PATCOPY</term>
<description>
Copies the brush currently selected in <paramref name="hdcDest"/>, into the destination bitmap.
</description>
</item>
<item>
<term>PATINVERT</term>
<description>
Combines the colors of the brush currently selected in <paramref name="hdcDest"/>, with the colors of the destination rectangle by
using the Boolean XOR operator.
</description>
</item>
<item>
<term>PATPAINT</term>
<description>
Combines the colors of the brush currently selected in <paramref name="hdcDest"/>, with the colors of the inverted source rectangle
by using the Boolean OR operator. The result of this operation is combined with the colors of the destination rectangle by using the
Boolean OR operator.
</description>
</item>
<item>
<term>SRCAND</term>
<description>Combines the colors of the source and destination rectangles by using the Boolean AND operator.</description>
</item>
<item>
<term>SRCCOPY</term>
<description>Copies the source rectangle directly to the destination rectangle.</description>
</item>
<item>
<term>SRCERASE</term>
<description>
Combines the inverted colors of the destination rectangle with the colors of the source rectangle by using the Boolean AND
operator.
</description>
</item>
<item>
<term>SRCINVERT</term>
<description>Combines the colors of the source and destination rectangles by using the Boolean XOR operator.</description>
</item>
<item>
<term>SRCPAINT</term>
<description>Combines the colors of the source and destination rectangles by using the Boolean OR operator.</description>
</item>
<item>
<term>WHITENESS</term>
<description>
Fills the destination rectangle using the color associated with index 1 in the physical palette. (This color is white for the default
physical palette.)
</description>
</item>
</list>
</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero. To get extended error information, call GetLastError.</para>
</returns>
<remarks>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> only does clipping on the destination DC.
</para>
<para>
If a rotation or shear transformation is in effect in the source device context, <see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> returns an error. If other
transformations exist in the source device context (and a matching transformation is not in effect in the destination device context), the
rectangle in the destination device context is stretched, compressed, or rotated, as necessary.
</para>
<para>
If the color formats of the source and destination device contexts do not match, the <see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function converts the source color
format to match the destination format.
</para>
<para>When an enhanced metafile is being recorded, an error occurs if the source device context identifies an enhanced-metafile device context.</para>
<para>
Not all devices support the <see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> function. For more information, see the RC_BITBLT raster capability entry in the
<see cref="M:Win32Interop.Methods.Gdi32.GetDeviceCaps(System.IntPtr,System.Int32)"/> function as well as the following functions: <see cref="M:Win32Interop.Methods.Gdi32.MaskBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/>, <see cref="M:Win32Interop.Methods.Gdi32.PlgBlt(System.IntPtr,Win32Interop.Structs.POINT[],System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32)"/>, and
<see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/>.
</para>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.BitBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.UInt32)"/> returns an error if the source and destination device contexts represent different devices. To transfer data between
DCs for different devices, convert the memory bitmap to a DIB by calling <see cref="M:Win32Interop.Methods.Gdi32.GetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/>. To display the DIB to the second device,
call <see cref="M:Win32Interop.Methods.Gdi32.SetDIBits(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32)"/> or <see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/>.
</para>
<para>ICM: No color management is performed when blits occur.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.Chord(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.Chord(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/> function draws a chord (a region bounded by the intersection of an ellipse and a line segment, called a secant). The
chord is outlined by using the current pen and filled by using the current brush.
</summary>
<param name="hdc">A handle to the device context in which the chord appears.</param>
<param name="nLeftRect">The x-coordinate, in logical coordinates, of the upper-left corner of the bounding rectangle.</param>
<param name="nTopRect">The y-coordinate, in logical coordinates, of the upper-left corner of the bounding rectangle.</param>
<param name="nRightRect">The x-coordinate, in logical coordinates, of the lower-right corner of the bounding rectangle.</param>
<param name="nBottomRect">The y-coordinate, in logical coordinates, of the lower-right corner of the bounding rectangle.</param>
<param name="nXRadial1">The x-coordinate, in logical coordinates, of the endpoint of the radial defining the beginning of the chord.</param>
<param name="nYRadial1">The y-coordinate, in logical coordinates, of the endpoint of the radial defining the beginning of the chord.</param>
<param name="nXRadial2">The x-coordinate, in logical coordinates, of the endpoint of the radial defining the end of the chord.</param>
<param name="nYRadial2">The y-coordinate, in logical coordinates, of the endpoint of the radial defining the end of the chord.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The curve of the chord is defined by an ellipse that fits the specified bounding rectangle. The curve begins at the point where the ellipse
intersects the first radial and extends counterclockwise to the point where the ellipse intersects the second radial. The chord is closed by
drawing a line from the intersection of the first radial and the curve to the intersection of the second radial and the curve.
</para>
<para>If the starting point and ending point of the curve are the same, a complete ellipse is drawn.</para>
<para>
The current position is neither used nor updated by <see cref="M:Win32Interop.Methods.Gdi32.Chord(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/>.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.ArcTo(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.ArcTo(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/> function draws an elliptical arc.
</summary>
<param name="hdc">A handle to the device context where drawing takes place.</param>
<param name="nLeftRect">The x-coordinate, in logical units, of the upper-left corner of the bounding rectangle.</param>
<param name="nTopRect">The y-coordinate, in logical units, of the upper-left corner of the bounding rectangle.</param>
<param name="nRightRect">The x-coordinate, in logical units, of the lower-right corner of the bounding rectangle.</param>
<param name="nBottomRect">The y-coordinate, in logical units, of the lower-right corner of the bounding rectangle.</param>
<param name="nXRadial1">The x-coordinate, in logical units, of the endpoint of the radial defining the starting point of the arc.</param>
<param name="nYRadial1">The y-coordinate, in logical units, of the endpoint of the radial defining the starting point of the arc.</param>
<param name="nXRadial2">The x-coordinate, in logical units, of the endpoint of the radial defining the ending point of the arc.</param>
<param name="nYRadial2">The y-coordinate, in logical units, of the endpoint of the radial defining the ending point of the arc.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
<see cref="M:Win32Interop.Methods.Gdi32.ArcTo(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/> is similar to the <see cref="M:Win32Interop.Methods.Gdi32.Arc(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/> function, except that the current position is updated.
</para>
<para>
The points (<paramref name="nLeftRect"/>, <paramref name="nTopRect"/>) and (<paramref name="nRightRect"/>, <paramref name="nBottomRect"/>
) specify the bounding rectangle. An ellipse formed by the specified bounding rectangle defines the curve of the arc. The arc extends
counterclockwise from the point where it intersects the radial line from the center of the bounding rectangle to the (
<paramref name="nXRadial1"/>, <paramref name="nYRadial1"/>) point. The arc ends where it intersects the radial line from the center of the
bounding rectangle to the (<paramref name="nXRadial2"/>, <paramref name="nYRadial2"/>) point. If the starting point and ending point are
the same, a complete ellipse is drawn.
</para>
<para>
A line is drawn from the current position to the starting point of the arc. If no error occurs, the current position is set to the ending
point of the arc.
</para>
<para>The arc is drawn using the current pen; it is not filled.</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.Pie(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.Pie(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/> function draws a pie-shaped wedge bounded by the intersection of an ellipse and two radials. The pie is outlined by using
the current pen and filled by using the current brush.
</summary>
<param name="hdc">A handle to the device context.</param>
<param name="nLeftRect">The x-coordinate, in logical coordinates, of the upper-left corner of the bounding rectangle.</param>
<param name="nTopRect">The y-coordinate, in logical coordinates, of the upper-left corner of the bounding rectangle.</param>
<param name="nRightRect">The x-coordinate, in logical coordinates, of the lower-right corner of the bounding rectangle.</param>
<param name="nBottomRect">The y-coordinate, in logical coordinates, of the lower-right corner of the bounding rectangle.</param>
<param name="nXRadial1">The x-coordinate, in logical coordinates, of the endpoint of the first radial.</param>
<param name="nYRadial1">The y-coordinate, in logical coordinates, of the endpoint of the first radial.</param>
<param name="nXRadial2">The x-coordinate, in logical coordinates, of the endpoint of the second radial.</param>
<param name="nYRadial2">The y-coordinate, in logical coordinates, of the endpoint of the second radial.</param>
<returns>
<para>If the function succeeds, the return value is nonzero.</para>
<para>If the function fails, the return value is zero.</para>
</returns>
<remarks>
<para>
The curve of the pie is defined by an ellipse that fits the specified bounding rectangle. The curve begins at the point where the ellipse
intersects the first radial and extends counterclockwise to the point where the ellipse intersects the second radial.
</para>
<para>
The current position is neither used nor updated by the <see cref="M:Win32Interop.Methods.Gdi32.Pie(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/> function.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.Arc(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
The <see cref="M:Win32Interop.Methods.Gdi32.Arc(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/> function draws an elliptical arc.
</summary>
<param name="hdc">A handle to the device context where drawing takes place.</param>
<param name="nLeftRect">The x-coordinate, in logical units, of the upper-left corner of the bounding rectangle.</param>
<param name="nTopRect">The y-coordinate, in logical units, of the upper-left corner of the bounding rectangle.</param>
<param name="nRightRect">The x-coordinate, in logical units, of the lower-right corner of the bounding rectangle.</param>
<param name="nBottomRect">The y-coordinate, in logical units, of the lower-right corner of the bounding rectangle.</param>
<param name="nXStartArc">The x-coordinate, in logical units, of the ending point of the radial line defining the starting point of the arc.</param>
<param name="nYStartArc">The y-coordinate, in logical units, of the ending point of the radial line defining the starting point of the arc.</param>
<param name="nXEndArc">The x-coordinate, in logical units, of the ending point of the radial line defining the ending point of the arc.</param>
<param name="nYEndArc">The y-coordinate, in logical units, of the ending point of the radial line defining the ending point of the arc.</param>
<returns>
<para>If the arc is drawn, the return value is nonzero.</para>
<para>If the arc is not drawn, the return value is zero.</para>
</returns>
<remarks>
<para>
The points (<paramref name="nLeftRect"/>, <paramref name="nTopRect"/>) and (<paramref name="nRightRect"/>, <paramref name="nBottomRect"/>
) specify the bounding rectangle. An ellipse formed by the specified bounding rectangle defines the curve of the arc. The arc extends in the
current drawing direction from the point where it intersects the radial from the center of the bounding rectangle to the (
<paramref name="nXStartArc"/>, <paramref name="nYStartArc"/>) point. The arc ends where it intersects the radial from the center of the
bounding rectangle to the (<paramref name="nXEndArc"/>, <paramref name="nYEndArc"/>) point. If the starting point and ending point are the
same, a complete ellipse is drawn.
</para>
<para>The arc is drawn using the current pen; it is not filled.</para>
<para>
The current position is neither used nor updated by <see cref="M:Win32Interop.Methods.Gdi32.Arc(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/>.
</para>
<para>
Use the <see cref="M:Win32Interop.Methods.Gdi32.GetArcDirection(System.IntPtr)"/> and <see cref="M:Win32Interop.Methods.Gdi32.SetArcDirection(System.IntPtr,System.Int32)"/> functions to get and set the current drawing direction for a device
context. The default drawing direction is counterclockwise.
</para>
</remarks>
</member>
<member name="M:Win32Interop.Methods.Gdi32.GetEnhMetaFilePixelFormat(System.IntPtr,System.UInt32,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)">
<summary>
<para>Applies to: desktop apps only</para>
<para>
The <see cref="M:Win32Interop.Methods.Gdi32.GetEnhMetaFilePixelFormat(System.IntPtr,System.UInt32,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)"/> function retrieves pixel format information for an enhanced metafile.
</para>
</summary>
<param name="hemf">Identifies the enhanced metafile.</param>
<param name="cbBuffer">Specifies the size, in bytes, of the buffer into which the pixel format information is copied.</param>
<param name="ppfd">
Pointer to a <see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/> structure that contains the logical pixel format specification. The metafile uses this
structure to record the logical pixel format specification.
</param>
<returns>
<para>If the function succeeds and finds a pixel format, the return value is the size of the metafile's pixel format.</para>
<para>If no pixel format is present, the return value is zero.</para>
<para>If an error occurs and the function fails, the return value is GDI_ERROR. To get extended error information, call GetLastError.</para>
</returns>
<remarks>
<para>
When an enhanced metafile specifies a pixel format in its <see cref="T:Win32Interop.Structs.ENHMETAHEADER"/> structure and the pixel format fits in the buffer, the
pixel format information is copied into <paramref name="ppfd"/>. When <paramref name="cbBuffer"/> is too small to contain the pixel format
of the metafile, the pixel format is not copied to the buffer. In either case, the function returns the size of the metafile's pixel format.
</para>
<para>For information on metafile recording and other operations, see Enhanced Metafile Operations.</para>
</remarks>
</member>
<member name="T:Win32Interop.Structs.ENHMETARECORD">
<summary>
The <see cref="T:Win32Interop.Structs.ENHMETARECORD"/> structure contains data that describes a graphics device interface (GDI) function used to create part of a
picture in an enhanced-format metafile.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETARECORD.iType">
<summary>The record type.</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETARECORD.nSize">
<summary>The size of the record, in bytes.</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETARECORD.dParm">
<summary>An array of parameters passed to the GDI function identified by the record.</summary>
</member>
<member name="T:Win32Interop.Structs.ENUMLOGFONTEXDV">
<summary>
The <see cref="T:Win32Interop.Structs.ENUMLOGFONTEXDV"/> structure contains the information used to create a font.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENUMLOGFONTEXDV.elfEnumLogfontEx">
<summary>
An <see cref="T:Win32Interop.Structs.ENUMLOGFONTEX"/> structure that contains information about the logical attributes of the font.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENUMLOGFONTEXDV.elfDesignVector">
<summary>
A <see cref="T:Win32Interop.Structs.DESIGNVECTOR"/> structure. This is zero-filled unless the font described is a multiple master OpenType font.
</summary>
</member>
<member name="T:Win32Interop.Structs.XFORM">
<summary>
The <see cref="T:Win32Interop.Structs.XFORM"/> structure specifies a world-space to page-space transformation.
</summary>
</member>
<member name="F:Win32Interop.Structs.XFORM.eM11">
<summary>
<para>The following.</para>
<list type="table">
<item>
<term>Scaling</term>
<description>Horizontal scaling component</description>
</item>
<item>
<term>Rotation</term>
<description>Cosine of rotation angle</description>
</item>
<item>
<term>Reflection</term>
<description>Horizontal component</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.XFORM.eM12">
<summary>
<para>The following.</para>
<list type="table">
<item>
<term>Shear</term>
<description>Horizontal proportionality constant</description>
</item>
<item>
<term>Rotation</term>
<description>Sine of the rotation angle</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.XFORM.eM21">
<summary>
<para>The following.</para>
<list type="table">
<item>
<term>Shear</term>
<description>Vertical proportionality constant</description>
</item>
<item>
<term>Rotation</term>
<description>Negative sine of the rotation angle</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.XFORM.eM22">
<summary>
<para>The following.</para>
<list type="table">
<item>
<term>Scaling</term>
<description>Vertical scaling component</description>
</item>
<item>
<term>Rotation</term>
<description>Cosine of rotation angle</description>
</item>
<item>
<term>Reflection</term>
<description>Vertical reflection component</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.XFORM.eDx">
<summary>The horizontal translation component, in logical units.</summary>
</member>
<member name="F:Win32Interop.Structs.XFORM.eDy">
<summary>The vertical translation component, in logical units.</summary>
</member>
<member name="T:Win32Interop.Structs.BITMAP">
<summary>
The <see cref="T:Win32Interop.Structs.BITMAP"/> structure defines the type, width, height, color format, and bit values of a bitmap.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAP.bmType">
<summary>The bitmap type. This member must be zero.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAP.bmWidth">
<summary>The width, in pixels, of the bitmap. The width must be greater than zero.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAP.bmHeight">
<summary>The height, in pixels, of the bitmap. The height must be greater than zero.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAP.bmWidthBytes">
<summary>
The number of bytes in each scan line. This value must be divisible by 2, because the system assumes that the bit values of a bitmap form an
array that is word aligned.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAP.bmPlanes">
<summary>The count of color planes.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAP.bmBitsPixel">
<summary>The number of bits required to indicate the color of a pixel.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAP.bmBits">
<summary>
A pointer to the location of the bit values for the bitmap. The <see cref="F:Win32Interop.Structs.BITMAP.bmBits"/> member must be a pointer to an array of character (1-byte)
values.
</summary>
</member>
<member name="T:Win32Interop.Structs.LOGBRUSH">
<summary>
The <see cref="T:Win32Interop.Structs.LOGBRUSH"/> structure defines the style, color, and pattern of a physical brush. It is used by the
<see cref="M:Win32Interop.Methods.Gdi32.CreateBrushIndirect(Win32Interop.Structs.LOGBRUSH@)"/> and <see cref="M:Win32Interop.Methods.Gdi32.ExtCreatePen(System.UInt32,System.UInt32,Win32Interop.Structs.LOGBRUSH@,System.UInt32,System.IntPtr)"/> functions.
</summary>
</member>
<member name="F:Win32Interop.Structs.LOGBRUSH.lbStyle">
<summary>
<para>
The brush style. The <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/> member must be one of the following styles.
</para>
<list type="table">
<item>
<term>BS_DIBPATTERN</term>
<description>
A pattern brush defined by a device-independent bitmap (DIB) specification. If <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/> is BS_DIBPATTERN, the
<see cref="F:Win32Interop.Structs.LOGBRUSH.lbHatch"/> member contains a handle to a packed DIB. For more information, see discussion in <see cref="F:Win32Interop.Structs.LOGBRUSH.lbHatch"/>.
</description>
</item>
<item>
<term>BS_DIBPATTERN8X8</term>
<description>See BS_DIBPATTERN.</description>
</item>
<item>
<term>BS_DIBPATTERNPT</term>
<description>
A pattern brush defined by a device-independent bitmap (DIB) specification. If <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/> is BS_DIBPATTERNPT, the
<see cref="F:Win32Interop.Structs.LOGBRUSH.lbHatch"/> member contains a pointer to a packed DIB. For more information, see discussion in <see cref="F:Win32Interop.Structs.LOGBRUSH.lbHatch"/>.
</description>
</item>
<item>
<term>BS_HATCHED</term>
<description>Hatched brush.</description>
</item>
<item>
<term>BS_HOLLOW</term>
<description>Hollow brush.</description>
</item>
<item>
<term>BS_NULL</term>
<description>Same as BS_HOLLOW.</description>
</item>
<item>
<term>BS_PATTERN</term>
<description>Pattern brush defined by a memory bitmap.</description>
</item>
<item>
<term>BS_PATTERN8X8</term>
<description>See BS_PATTERN.</description>
</item>
<item>
<term>BS_SOLID</term>
<description>Solid brush.</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.LOGBRUSH.lbColor">
<summary>
<para>
The color in which the brush is to be drawn. If <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/> is the BS_HOLLOW or BS_PATTERN style, <see cref="F:Win32Interop.Structs.LOGBRUSH.lbColor"/> is
ignored.
</para>
<para>
If <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/> is BS_DIBPATTERN or BS_DIBPATTERNPT, the low-order word of <see cref="F:Win32Interop.Structs.LOGBRUSH.lbColor"/> specifies whether the
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> members of the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure contain explicit red, green, blue (RGB) values or
indexes into the currently realized logical palette. The <see cref="F:Win32Interop.Structs.LOGBRUSH.lbColor"/> member must be one of the following values.
</para>
<list type="table">
<item>
<term>DIB_PAL_COLORS</term>
<description>The color table consists of an array of 16-bit indexes into the currently realized logical palette.</description>
</item>
<item>
<term>DIB_RGB_COLORS</term>
<description>The color table contains literal RGB values.</description>
</item>
</list>
<para>
If <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/> is BS_HATCHED or BS_SOLID, <see cref="F:Win32Interop.Structs.LOGBRUSH.lbColor"/> is a <see cref="T:Win32Interop.Structs.COLORREF"/> color value. To create a
<see cref="T:Win32Interop.Structs.COLORREF"/> color value, use the RGB macro.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.LOGBRUSH.lbHatch">
<summary>
<para>
A hatch style. The meaning depends on the brush style defined by <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/>.
</para>
<para>
If <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/> is BS_DIBPATTERN, the <see cref="F:Win32Interop.Structs.LOGBRUSH.lbHatch"/> member contains a handle to a packed DIB. To obtain this handle, an
application calls the GlobalAlloc function with GMEM_MOVEABLE (or LocalAlloc with LMEM_MOVEABLE) to allocate a block of memory and then fills
the memory with the packed DIB. A packed DIB consists of a <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure immediately followed by the array of bytes
that define the pixels of the bitmap.
</para>
<para>
If <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/> is BS_DIBPATTERNPT, the <see cref="F:Win32Interop.Structs.LOGBRUSH.lbHatch"/> member contains a pointer to a packed DIB. The pointer derives from
the memory block created by LocalAlloc with LMEM_FIXED set or by GlobalAlloc with GMEM_FIXED set, or it is the pointer returned by a call
like LocalLock (handle_to_the_dib). A packed DIB consists of a <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure immediately followed by the array of bytes
that define the pixels of the bitmap.
</para>
<para>
If <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/> is BS_HATCHED, the <see cref="F:Win32Interop.Structs.LOGBRUSH.lbHatch"/> member specifies the orientation of the lines used to create the hatch.
It can be one of the following values.
</para>
<list type="table">
<item>
<term>HS_BDIAGONAL</term>
<description>A 45-degree upward, left-to-right hatch</description>
</item>
<item>
<term>HS_CROSS</term>
<description>Horizontal and vertical cross-hatch</description>
</item>
<item>
<term>HS_DIAGCROSS</term>
<description>45-degree crosshatch</description>
</item>
<item>
<term>HS_FDIAGONAL</term>
<description>A 45-degree downward, left-to-right hatch</description>
</item>
<item>
<term>HS_HORIZONTAL</term>
<description>Horizontal hatch</description>
</item>
<item>
<term>HS_VERTICAL</term>
<description>Vertical hatch</description>
</item>
</list>
<para>
If <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/> is BS_PATTERN, <see cref="F:Win32Interop.Structs.LOGBRUSH.lbHatch"/> is a handle to the bitmap that defines the pattern. The bitmap cannot be a
DIB section bitmap, which is created by the <see cref="M:Win32Interop.Methods.Gdi32.CreateDIBSection(System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.IntPtr@,System.IntPtr,System.UInt32)"/> function.
</para>
<para>
If <see cref="F:Win32Interop.Structs.LOGBRUSH.lbStyle"/> is BS_SOLID or BS_HOLLOW, <see cref="F:Win32Interop.Structs.LOGBRUSH.lbHatch"/> is ignored.
</para>
</summary>
</member>
<member name="T:Win32Interop.Structs.METAFILEPICT">
<summary>Defines the metafile picture format used for exchanging metafile data through the clipboard.</summary>
</member>
<member name="F:Win32Interop.Structs.METAFILEPICT.mm">
<summary>The mapping mode in which the picture is drawn.</summary>
</member>
<member name="F:Win32Interop.Structs.METAFILEPICT.xExt">
<summary>
The size of the metafile picture for all modes except the MM_ISOTROPIC and MM_ANISOTROPIC modes. (For more information about these modes, see the
<see cref="F:Win32Interop.Structs.METAFILEPICT.yExt"/> member.) The x-extent specifies the width of the rectangle within which the picture is drawn. The coordinates are in units
that correspond to the mapping mode.
</summary>
</member>
<member name="F:Win32Interop.Structs.METAFILEPICT.yExt">
<summary>
The size of the metafile picture for all modes except the MM_ISOTROPIC and MM_ANISOTROPIC modes. The y-extent specifies the height of the
rectangle within which the picture is drawn. The coordinates are in units that correspond to the mapping mode. For MM_ISOTROPIC and
MM_ANISOTROPIC modes, which can be scaled, the <see cref="F:Win32Interop.Structs.METAFILEPICT.xExt"/> and <see cref="F:Win32Interop.Structs.METAFILEPICT.yExt"/> members contain an optional suggested size in
MM_HIMETRIC units. For MM_ANISOTROPIC pictures, <see cref="F:Win32Interop.Structs.METAFILEPICT.xExt"/> and
<see cref="F:Win32Interop.Structs.METAFILEPICT.yExt"/> can be zero when no suggested size is supplied. For MM_ISOTROPIC pictures, an aspect ratio must be supplied even when no
suggested size is given. (If a suggested size is given, the aspect ratio is implied by the size.) To give an aspect ratio without implying a
suggested size, set <see cref="F:Win32Interop.Structs.METAFILEPICT.xExt"/> and <see cref="F:Win32Interop.Structs.METAFILEPICT.yExt"/> to negative values whose ratio is the appropriate aspect ratio. The magnitude of
the negative <see cref="F:Win32Interop.Structs.METAFILEPICT.xExt"/> and <see cref="F:Win32Interop.Structs.METAFILEPICT.yExt"/> values is ignored; only the ratio is used.
</summary>
</member>
<member name="F:Win32Interop.Structs.METAFILEPICT.hMF">
<summary>A handle to a memory metafile.</summary>
</member>
<member name="T:Win32Interop.Structs.COLORADJUSTMENT">
<summary>
The <see cref="T:Win32Interop.Structs.COLORADJUSTMENT"/> structure defines the color adjustment values used by the <see cref="M:Win32Interop.Methods.Gdi32.StretchBlt(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)"/> and
<see cref="M:Win32Interop.Methods.Gdi32.StretchDIBits(System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.IntPtr,Win32Interop.Structs.BITMAPINFO@,System.UInt32,System.UInt32)"/> functions when the stretch mode is HALFTONE. You can set the color adjustment values by calling the
<see cref="M:Win32Interop.Methods.Gdi32.SetColorAdjustment(System.IntPtr,Win32Interop.Structs.COLORADJUSTMENT@)"/> function.
</summary>
</member>
<member name="F:Win32Interop.Structs.COLORADJUSTMENT.caSize">
<summary>The size, in bytes, of the structure.</summary>
</member>
<member name="F:Win32Interop.Structs.COLORADJUSTMENT.caFlags">
<summary>
<para>Specifies how the output image should be prepared. This member may be set to NULL or any combination of the following values.</para>
<list type="table">
<item>
<term>CA_NEGATIVE</term>
<description>Specifies that the negative of the original image should be displayed.</description>
</item>
<item>
<term>CA_LOG_FILTER</term>
<description>
Specifies that a logarithmic function should be applied to the final density of the output colors. This will increase the color
contrast when the luminance is low.
</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.COLORADJUSTMENT.caIlluminantIndex">
<summary>
<para>The type of standard light source under which the image is viewed. This member may be set to one of the following values.</para>
<list type="table">
<item>
<term>ILLUMINANT_DEVICE_DEFAULT</term>
<description>Device's default. Standard used by output devices.</description>
</item>
<item>
<term>ILLUMINANT_A</term>
<description>Tungsten lamp.</description>
</item>
<item>
<term>ILLUMINANT_B</term>
<description>Noon sunlight.</description>
</item>
<item>
<term>ILLUMINANT_C</term>
<description>NTSC daylight.</description>
</item>
<item>
<term>ILLUMINANT_D50</term>
<description>Normal print.</description>
</item>
<item>
<term>ILLUMINANT_D55</term>
<description>Bond paper print.</description>
</item>
<item>
<term>ILLUMINANT_D65</term>
<description>Standard daylight. Standard for CRTs and pictures.</description>
</item>
<item>
<term>ILLUMINANT_D75</term>
<description>Northern daylight.</description>
</item>
<item>
<term>ILLUMINANT_F2</term>
<description>Cool white lamp.</description>
</item>
<item>
<term>ILLUMINANT_TUNGSTEN</term>
<description>Same as ILLUMINANT_A.</description>
</item>
<item>
<term>ILLUMINANT_DAYLIGHT</term>
<description>Same as ILLUMINANT_C.</description>
</item>
<item>
<term>ILLUMINANT_FLUORESCENT</term>
<description>Same as ILLUMINANT_F2.</description>
</item>
<item>
<term>ILLUMINANT_NTSC</term>
<description>Same as ILLUMINANT_C.</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.COLORADJUSTMENT.caRedGamma">
<summary>
Specifies the nth power gamma-correction value for the red primary of the source colors. The value must be in the range from 2500 to 65,000. A
value of 10,000 means no gamma correction.
</summary>
</member>
<member name="F:Win32Interop.Structs.COLORADJUSTMENT.caGreenGamma">
<summary>
Specifies the nth power gamma-correction value for the green primary of the source colors. The value must be in the range from 2500 to 65,000. A
value of 10,000 means no gamma correction.
</summary>
</member>
<member name="F:Win32Interop.Structs.COLORADJUSTMENT.caBlueGamma">
<summary>
Specifies the nth power gamma-correction value for the blue primary of the source colors. The value must be in the range from 2500 to 65,000. A
value of 10,000 means no gamma correction.
</summary>
</member>
<member name="F:Win32Interop.Structs.COLORADJUSTMENT.caReferenceBlack">
<summary>
The black reference for the source colors. Any colors that are darker than this are treated as black. The value must be in the range from 0
to 4000.
</summary>
</member>
<member name="F:Win32Interop.Structs.COLORADJUSTMENT.caReferenceWhite">
<summary>
The white reference for the source colors. Any colors that are lighter than this are treated as white. The value must be in the range from 6000
to 10,000.
</summary>
</member>
<member name="F:Win32Interop.Structs.COLORADJUSTMENT.caContrast">
<summary>
The amount of contrast to be applied to the source object. The value must be in the range from -100 to 100. A value of 0 means no contrast
adjustment.
</summary>
</member>
<member name="F:Win32Interop.Structs.COLORADJUSTMENT.caBrightness">
<summary>
The amount of brightness to be applied to the source object. The value must be in the range from -100 to 100. A value of 0 means no brightness
adjustment.
</summary>
</member>
<member name="F:Win32Interop.Structs.COLORADJUSTMENT.caColorfulness">
<summary>
The amount of colorfulness to be applied to the source object. The value must be in the range from -100 to 100. A value of 0 means no
colorfulness adjustment.
</summary>
</member>
<member name="F:Win32Interop.Structs.COLORADJUSTMENT.caRedGreenTint">
<summary>
The amount of red or green tint adjustment to be applied to the source object. The value must be in the range from -100 to 100. Positive numbers
adjust toward red and negative numbers adjust toward green. Zero means no tint adjustment.
</summary>
</member>
<member name="T:Win32Interop.Structs.PALETTEENTRY">
<summary>
The <see cref="T:Win32Interop.Structs.PALETTEENTRY"/> structure specifies the color and usage of an entry in a logical palette. A logical palette is defined by a
<see cref="T:Win32Interop.Structs.LOGPALETTE"/> structure.
</summary>
</member>
<member name="F:Win32Interop.Structs.PALETTEENTRY.peRed">
<summary>The red intensity value for the palette entry.</summary>
</member>
<member name="F:Win32Interop.Structs.PALETTEENTRY.peGreen">
<summary>The green intensity value for the palette entry.</summary>
</member>
<member name="F:Win32Interop.Structs.PALETTEENTRY.peBlue">
<summary>The blue intensity value for the palette entry.</summary>
</member>
<member name="F:Win32Interop.Structs.PALETTEENTRY.peFlags">
<summary>
<para>Indicates how the palette entry is to be used. This member may be set to 0 or one of the following values.</para>
<list type="table">
<item>
<term>PC_EXPLICIT</term>
<description>
Specifies that the low-order word of the logical palette entry designates a hardware palette index. This flag allows the application
to show the contents of the display device palette.
</description>
</item>
<item>
<term>PC_NOCOLLAPSE</term>
<description>
Specifies that the color be placed in an unused entry in the system palette instead of being matched to an existing color in the
system palette. If there are no unused entries in the system palette, the color is matched normally. Once this color is in the system
palette, colors in other logical palettes can be matched to this color.
</description>
</item>
<item>
<term>PC_RESERVED</term>
<description>
Specifies that the logical palette entry be used for palette animation. This flag prevents other windows from matching colors to the
palette entry since the color frequently changes. If an unused system-palette entry is available, the color is placed in that entry.
Otherwise, the color is not available for animation.
</description>
</item>
</list>
</summary>
</member>
<member name="T:Win32Interop.Structs.BITMAPINFO">
<summary>
The <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure defines the dimensions and color information for a DIB.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFO.bmiHeader">
<summary>
<para>
A <see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/> structure that contains information about the dimensions of color format.
</para>
<para>.</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFO.bmiColors">
<summary>
<para>
The <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member contains one of the following:
</para>
<para>
The number of entries in the array depends on the values of the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount"/> and
<see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biClrUsed"/> members of the
<see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/> structure.
</para>
<para>
The colors in the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> table appear in order of importance. For more information, see the Remarks section.
</para>
</summary>
</member>
<member name="T:Win32Interop.Structs.LOGPEN">
<summary>
The <see cref="T:Win32Interop.Structs.LOGPEN"/> structure defines the style, width, and color of a pen. The <see cref="M:Win32Interop.Methods.Gdi32.CreatePenIndirect(Win32Interop.Structs.LOGPEN@)"/> function uses the
<see cref="T:Win32Interop.Structs.LOGPEN"/> structure.
</summary>
</member>
<member name="F:Win32Interop.Structs.LOGPEN.lopnStyle">
<summary>
<para>The pen style, which can be one of the following values.</para>
<list type="table">
<item>
<term>PS_SOLID</term>
<description>The pen is solid.</description>
</item>
<item>
<term>PS_DASH</term>
<description>The pen is dashed.</description>
</item>
<item>
<term>PS_DOT</term>
<description>The pen is dotted.</description>
</item>
<item>
<term>PS_DASHDOT</term>
<description>The pen has alternating dashes and dots.</description>
</item>
<item>
<term>PS_DASHDOTDOT</term>
<description>The pen has dashes and double dots.</description>
</item>
<item>
<term>PS_NULL</term>
<description>The pen is invisible.</description>
</item>
<item>
<term>PS_INSIDEFRAME</term>
<description>
The pen is solid. When this pen is used in any GDI drawing function that takes a bounding rectangle, the dimensions of the figure are
shrunk so that it fits entirely in the bounding rectangle, taking into account the width of the pen. This applies only to geometric
pens.
</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.LOGPEN.lopnWidth">
<summary>
The <see cref="T:Win32Interop.Structs.POINT"/> structure that contains the pen width, in logical units. If the pointer member is NULL, the pen is one pixel wide on
raster devices. The <see cref="F:Win32Interop.Structs.POINT.y"/> member in the <see cref="T:Win32Interop.Structs.POINT"/> structure for <see cref="F:Win32Interop.Structs.LOGPEN.lopnWidth"/> is not used.
</summary>
</member>
<member name="F:Win32Interop.Structs.LOGPEN.lopnColor">
<summary>
The pen color. To generate a <see cref="T:Win32Interop.Structs.COLORREF"/> structure, use the RGB macro.
</summary>
</member>
<member name="T:Win32Interop.Structs.ENUMTEXTMETRIC">
<summary>
The <see cref="T:Win32Interop.Structs.ENUMTEXTMETRIC"/> structure contains information about a physical font.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENUMTEXTMETRIC.etmNewTextMetricEx">
<summary>
A <see cref="T:Win32Interop.Structs.NEWTEXTMETRICEX"/> structure, containing information about a physical font.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENUMTEXTMETRIC.etmAxesList">
<summary>
An <see cref="T:Win32Interop.Structs.AXESLIST"/> structure, containing information about the axes for the font. This is only used for multiple master fonts.
</summary>
</member>
<member name="T:Win32Interop.Structs.AXESLIST">
<summary>
The <see cref="T:Win32Interop.Structs.AXESLIST"/> structure contains information on all the axes of a multiple master font.
</summary>
</member>
<member name="F:Win32Interop.Structs.AXESLIST.axlReserved">
<summary>Reserved. Must be STAMP_AXESLIST.</summary>
</member>
<member name="F:Win32Interop.Structs.AXESLIST.axlNumAxes">
<summary>Number of axes for a specified multiple master font.</summary>
</member>
<member name="F:Win32Interop.Structs.AXESLIST.axlAxisInfo">
<summary>
An array of <see cref="T:Win32Interop.Structs.AXISINFO"/> structures. Each <see cref="T:Win32Interop.Structs.AXISINFO"/> structure contains information on an axis of a specified multiple
master font. This corresponds to the <see cref="F:Win32Interop.Structs.DESIGNVECTOR.dvValues"/> array in the <see cref="T:Win32Interop.Structs.DESIGNVECTOR"/> structure.
</summary>
</member>
<member name="T:Win32Interop.Structs.AXISINFO">
<summary>
The <see cref="T:Win32Interop.Structs.AXISINFO"/> structure contains information about an axis of a multiple master font.
</summary>
</member>
<member name="F:Win32Interop.Structs.AXISINFO.axMinValue">
<summary>The minimum value for this axis.</summary>
</member>
<member name="F:Win32Interop.Structs.AXISINFO.axMaxValue">
<summary>The maximum value for this axis.</summary>
</member>
<member name="F:Win32Interop.Structs.AXISINFO.axAxisName">
<summary>The name of the axis, specified as an array of characters.</summary>
</member>
<member name="T:Win32Interop.Structs.NEWTEXTMETRICEX">
<summary>
The <see cref="T:Win32Interop.Structs.NEWTEXTMETRICEX"/> structure contains information about a physical font.
</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRICEX.ntmTm">
<summary>
A <see cref="T:Win32Interop.Structs.NEWTEXTMETRIC"/> structure.
</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRICEX.ntmFontSig">
<summary>
A <see cref="T:Win32Interop.Structs.FONTSIGNATURE"/> structure indicating the coverage of the font.
</summary>
</member>
<member name="T:Win32Interop.Structs.NEWTEXTMETRIC">
<summary>
The <see cref="T:Win32Interop.Structs.NEWTEXTMETRIC"/> structure contains data that describes a physical font.
</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmHeight">
<summary>The height (ascent + descent) of characters.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmAscent">
<summary>The ascent (units above the base line) of characters.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmDescent">
<summary>The descent (units below the base line) of characters.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmInternalLeading">
<summary>
The amount of leading (space) inside the bounds set by the <see cref="F:Win32Interop.Structs.NEWTEXTMETRIC.tmHeight"/> member. Accent marks and other diacritical characters may
occur in this area. The designer may set this member to zero.
</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmExternalLeading">
<summary>
The amount of extra leading (space) that the application adds between rows. Since this area is outside the font, it contains no marks and is not
altered by text output calls in either OPAQUE or TRANSPARENT mode. The designer may set this member to zero.
</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmAveCharWidth">
<summary>
The average width of characters in the font (generally defined as the width of the letter x). This value does not include overhang required for
bold or italic characters.
</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmMaxCharWidth">
<summary>The width of the widest character in the font.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmWeight">
<summary>The weight of the font.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmOverhang">
<summary>
<para>
The extra width per string that may be added to some synthesized fonts. When synthesizing some attributes, such as bold or italic, graphics
device interface (GDI) or a device may have to add width to a string on both a per-character and per-string basis. For example, GDI makes a
string bold by expanding the spacing of each character and overstriking by an offset value; it italicizes a font by shearing the string. In
either case, there is an overhang past the basic string. For bold strings, the overhang is the distance by which the overstrike is offset.
For italic strings, the overhang is the amount the top of the font is sheared past the bottom of the font.
</para>
<para>
The <see cref="F:Win32Interop.Structs.NEWTEXTMETRIC.tmOverhang"/> member enables the application to determine how much of the character width returned by a
<see cref="M:Win32Interop.Methods.Gdi32.GetTextExtentPoint32(System.IntPtr,System.String,System.Int32,Win32Interop.Structs.SIZE@)"/> function call on a single character is the actual character width and how much is the per-string
extra width. The actual width is the extent minus the overhang.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmDigitizedAspectX">
<summary>The horizontal aspect of the device for which the font was designed.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmDigitizedAspectY">
<summary>
The vertical aspect of the device for which the font was designed. The ratio of the <see cref="F:Win32Interop.Structs.NEWTEXTMETRIC.tmDigitizedAspectX"/> and
<see cref="F:Win32Interop.Structs.NEWTEXTMETRIC.tmDigitizedAspectY"/> members is the aspect ratio of the device for which the font was designed.
</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmFirstChar">
<summary>The value of the first character defined in the font.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmLastChar">
<summary>The value of the last character defined in the font.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmDefaultChar">
<summary>The value of the character to be substituted for characters that are not in the font.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmBreakChar">
<summary>The value of the character to be used to define word breaks for text justification.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmItalic">
<summary>An italic font if it is nonzero.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmUnderlined">
<summary>An underlined font if it is nonzero.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmStruckOut">
<summary>A strikeout font if it is nonzero.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmPitchAndFamily">
<summary>
<para>
The pitch and family of the selected font. The low-order bit (bit 0) specifies the pitch of the font. If it is 1, the font is variable pitch
(or proportional). If it is 0, the font is fixed pitch (or monospace). Bits 1 and 2 specify the font type. If both bits are 0, the font is a
raster font; if bit 1 is 1 and bit 2 is 0, the font is a vector font; if bit 1 is 0 and bit 2 is set, or if both bits are 1, the font is some
other type. Bit 3 is 1 if the font is a device font; otherwise, it is 0.
</para>
<para>
The four high-order bits designate the font family. The <see cref="F:Win32Interop.Structs.NEWTEXTMETRIC.tmPitchAndFamily"/> member can be combined with the hexadecimal value
0xF0 by using the bitwise AND operator and can then be compared with the font family names for an identical match. For more information about
the font families, see <see cref="T:Win32Interop.Structs.LOGFONT"/>.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.tmCharSet">
<summary>The character set of the font.</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.ntmFlags">
<summary>
<para>Specifies whether the font is italic, underscored, outlined, bold, and so forth. May be any reasonable combination of the following values.</para>
<list type="table">
<item>
<term>0</term>
<description>NTM_ITALIC</description>
</item>
<item>
<term>5</term>
<description>NTM_BOLD</description>
</item>
<item>
<term>8</term>
<description>NTM_REGULAR</description>
</item>
<item>
<term>16</term>
<description>NTM_NONNEGATIVE_AC</description>
</item>
<item>
<term>17</term>
<description>NTM_PS_OPENTYPE</description>
</item>
<item>
<term>18</term>
<description>NTM_TT_OPENTYPE</description>
</item>
<item>
<term>19</term>
<description>NTM_MULTIPLEMASTER</description>
</item>
<item>
<term>20</term>
<description>NTM_TYPE1</description>
</item>
<item>
<term>21</term>
<description>NTM_DSIG</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.ntmSizeEM">
<summary>The size of the em square for the font. This value is in notional units (that is, the units for which the font was designed).</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.ntmCellHeight">
<summary>
The height, in notional units, of the font. This value should be compared with the value of the <see cref="F:Win32Interop.Structs.NEWTEXTMETRIC.ntmSizeEM"/> member.
</summary>
</member>
<member name="F:Win32Interop.Structs.NEWTEXTMETRIC.ntmAvgWidth">
<summary>
The average width of characters in the font, in notional units. This value should be compared with the value of the <see cref="F:Win32Interop.Structs.NEWTEXTMETRIC.ntmSizeEM"/>
member.
</summary>
</member>
<member name="T:Win32Interop.Structs.TTPOLYCURVE">
<summary>
The <see cref="T:Win32Interop.Structs.TTPOLYCURVE"/> structure contains information about a curve in the outline of a TrueType character.
</summary>
</member>
<member name="F:Win32Interop.Structs.TTPOLYCURVE.wType">
<summary>
<para>The type of curve described by the structure. This member can be one of the following values.</para>
<list type="table">
<item>
<term>TT_PRIM_LINE</term>
<description>Curve is a polyline.</description>
</item>
<item>
<term>TT_PRIM_QSPLINE</term>
<description>Curve is a quadratic Bézier spline.</description>
</item>
<item>
<term>TT_PRIM_CSPLINE</term>
<description>Curve is a cubic Bézier spline.</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.TTPOLYCURVE.cpfx">
<summary>
The number of <see cref="T:Win32Interop.Structs.POINTFX"/> structures in the array.
</summary>
</member>
<member name="F:Win32Interop.Structs.TTPOLYCURVE.apfx">
<summary>
Specifies an array of <see cref="T:Win32Interop.Structs.POINTFX"/> structures that define the polyline or Bézier spline.
</summary>
</member>
<member name="T:Win32Interop.Structs.TTPOLYGONHEADER">
<summary>
The <see cref="T:Win32Interop.Structs.TTPOLYGONHEADER"/> structure specifies the starting position and type of a contour in a TrueType character outline.
</summary>
</member>
<member name="F:Win32Interop.Structs.TTPOLYGONHEADER.cb">
<summary>
The number of bytes required by the <see cref="T:Win32Interop.Structs.TTPOLYGONHEADER"/> structure and <see cref="T:Win32Interop.Structs.TTPOLYCURVE"/> structure or structures required to
describe the contour of the character.
</summary>
</member>
<member name="F:Win32Interop.Structs.TTPOLYGONHEADER.dwType">
<summary>The type of character outline returned. Currently, this value must be TT_POLYGON_TYPE.</summary>
</member>
<member name="F:Win32Interop.Structs.TTPOLYGONHEADER.pfxStart">
<summary>The starting point of the contour in the character outline.</summary>
</member>
<member name="T:Win32Interop.Structs.POINTFX">
<summary>
The <see cref="T:Win32Interop.Structs.POINTFX"/> structure contains the coordinates of points that describe the outline of a character in a TrueType font.
</summary>
</member>
<member name="F:Win32Interop.Structs.POINTFX.x">
<summary>The x-component of a point on the outline of a TrueType character.</summary>
</member>
<member name="F:Win32Interop.Structs.POINTFX.y">
<summary>The y-component of a point on the outline of a TrueType character.</summary>
</member>
<member name="T:Win32Interop.Structs.EXTLOGPEN">
<summary>
The <see cref="T:Win32Interop.Structs.EXTLOGPEN"/> structure defines the pen style, width, and brush attributes for an extended pen. This structure is used by the
<see cref="M:Win32Interop.Methods.Gdi32.GetObject(System.IntPtr,System.Int32,System.IntPtr)"/> function when it retrieves a description of a pen that was created when an application called the
<see cref="M:Win32Interop.Methods.Gdi32.ExtCreatePen(System.UInt32,System.UInt32,Win32Interop.Structs.LOGBRUSH@,System.UInt32,System.IntPtr)"/> function.
</summary>
</member>
<member name="F:Win32Interop.Structs.EXTLOGPEN.elpPenStyle">
<summary>
<para>
A combination of pen type, style, end cap style, and join style. The values from each category can be retrieved by using a bitwise AND
operator with the appropriate mask.
</para>
<para>
The <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpPenStyle"/> member masked with PS_TYPE_MASK has one of the following pen type values.
</para>
<list type="table">
<item>
<term>PS_GEOMETRIC</term>
<description>The pen is geometric.</description>
</item>
<item>
<term>PS_COSMETIC</term>
<description>The pen is cosmetic.</description>
</item>
</list>
<para>
The <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpPenStyle"/> member masked with PS_STYLE_MASK has one of the following pen styles values:
</para>
<list type="table">
<item>
<term>PS_DASH</term>
<description>The pen is dashed.</description>
</item>
<item>
<term>PS_DASHDOT</term>
<description>The pen has alternating dashes and dots.</description>
</item>
<item>
<term>PS_DASHDOTDOT</term>
<description>The pen has alternating dashes and double dots.</description>
</item>
<item>
<term>PS_DOT</term>
<description>The pen is dotted.</description>
</item>
<item>
<term>PS_INSIDEFRAME</term>
<description>
The pen is solid. When this pen is used in any GDI drawing function that takes a bounding rectangle, the dimensions of the figure are
shrunk so that it fits entirely in the bounding rectangle, taking into account the width of the pen. This applies only to
PS_GEOMETRIC pens.
</description>
</item>
<item>
<term>PS_NULL</term>
<description>The pen is invisible.</description>
</item>
<item>
<term>PS_SOLID</term>
<description>The pen is solid.</description>
</item>
<item>
<term>PS_USERSTYLE</term>
<description>The pen uses a styling array supplied by the user.</description>
</item>
</list>
<para>
The following category applies only to PS_GEOMETRIC pens. The <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpPenStyle"/> member masked with PS_ENDCAP_MASK has one of the
following end cap values.
</para>
<list type="table">
<item>
<term>PS_ENDCAP_FLAT</term>
<description>Line end caps are flat.</description>
</item>
<item>
<term>PS_ENDCAP_ROUND</term>
<description>Line end caps are round.</description>
</item>
<item>
<term>PS_ENDCAP_SQUARE</term>
<description>Line end caps are square.</description>
</item>
</list>
<para>
The following category applies only to PS_GEOMETRIC pens. The <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpPenStyle"/> member masked with PS_JOIN_MASK has one of the
following join values.
</para>
<list type="table">
<item>
<term>PS_JOIN_BEVEL</term>
<description>Line joins are beveled.</description>
</item>
<item>
<term>PS_JOIN_MITER</term>
<description>
Line joins are mitered when they are within the current limit set by the <see cref="M:Win32Interop.Methods.Gdi32.SetMiterLimit(System.IntPtr,System.Single,System.IntPtr)"/> function. A join is
beveled when it would exceed the limit.
</description>
</item>
<item>
<term>PS_JOIN_ROUND</term>
<description>Line joins are round.</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.EXTLOGPEN.elpWidth">
<summary>
The width of the pen. If the <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpPenStyle"/> member is PS_GEOMETRIC, this value is the width of the line in logical units. Otherwise,
the lines are cosmetic and this value is 1, which indicates a line with a width of one pixel.
</summary>
</member>
<member name="F:Win32Interop.Structs.EXTLOGPEN.elpBrushStyle">
<summary>
<para>
The brush style of the pen. The <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpBrushStyle"/> member value can be one of the following.
</para>
<list type="table">
<item>
<term>BS_DIBPATTERN</term>
<description>
Specifies a pattern brush defined by a DIB specification. If <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpBrushStyle"/> is BS_DIBPATTERN, the
<see cref="F:Win32Interop.Structs.EXTLOGPEN.elpHatch"/> member contains a handle to a packed DIB. For more information, see discussion in <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpHatch"/>
///
</description>
</item>
<item>
<term>BS_DIBPATTERNPT</term>
<description>
Specifies a pattern brush defined by a DIB specification. If <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpBrushStyle"/> is BS_DIBPATTERNPT, the
<see cref="F:Win32Interop.Structs.EXTLOGPEN.elpHatch"/> member contains a pointer to a packed DIB. For more information, see discussion in <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpHatch"/>.
///
</description>
</item>
<item>
<term>BS_HATCHED</term>
<description>Specifies a hatched brush.</description>
</item>
<item>
<term>BS_HOLLOW</term>
<description>Specifies a hollow or NULL brush.</description>
</item>
<item>
<term>BS_PATTERN</term>
<description>Specifies a pattern brush defined by a memory bitmap.</description>
</item>
<item>
<term>BS_SOLID</term>
<description>Specifies a solid brush.</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.EXTLOGPEN.elpColor">
<summary>
<para>
If <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpBrushStyle"/> is BS_SOLID or BS_HATCHED, <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpColor"/> specifies the color in which the pen is to be drawn. For
BS_HATCHED, the <see cref="M:Win32Interop.Methods.Gdi32.SetBkMode(System.IntPtr,System.Int32)"/> and <see cref="M:Win32Interop.Methods.Gdi32.SetBkColor(System.IntPtr,System.UInt32)"/> functions determine the background color.
</para>
<para>
If <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpBrushStyle"/> is BS_HOLLOW or BS_PATTERN, <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpColor"/> is ignored.
</para>
<para>
If <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpBrushStyle"/> is BS_DIBPATTERN or BS_DIBPATTERNPT, the low-order word of <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpColor"/> specifies whether the
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure contain explicit RGB values or indices into the
currently realized logical palette. The <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpColor"/> value must be one of the following.
</para>
<list type="table">
<item>
<term>DIB_PAL_COLORS</term>
<description>The color table consists of an array of 16-bit indices into the currently realized logical palette.</description>
</item>
<item>
<term>DIB_RGB_COLORS</term>
<description>The color table contains literal RGB values.</description>
</item>
</list>
<para>
The RGB macro is used to generate a <see cref="T:Win32Interop.Structs.COLORREF"/> structure.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.EXTLOGPEN.elpHatch">
<summary>
<para>
If <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpBrushStyle"/> is BS_PATTERN, <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpHatch"/> is a handle to the bitmap that defines the pattern.
</para>
<para>
If <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpBrushStyle"/> is BS_SOLID or BS_HOLLOW, <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpHatch"/> is ignored.
</para>
<para>
If <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpBrushStyle"/> is BS_DIBPATTERN, the <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpHatch"/> member is a handle to a packed DIB. To obtain this handle, an
application calls the GlobalAlloc function with GMEM_MOVEABLE (or LocalAlloc with LMEM_MOVEABLE) to allocate a block of memory and then fills
the memory with the packed DIB. A packed DIB consists of a <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure immediately followed by the array of bytes
that define the pixels of the bitmap.
</para>
<para>
If <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpBrushStyle"/> is BS_DIBPATTERNPT, the <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpHatch"/> member is a pointer to a packed DIB. The pointer derives from
the memory block created by LocalAlloc with LMEM_FIXED set or by GlobalAlloc with GMEM_FIXED set, or it is the pointer returned by a call
like LocalLock (handle_to_the_dib). A packed DIB consists of a <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure immediately followed by the array of bytes
that define the pixels of the bitmap.
</para>
<para>
If <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpBrushStyle"/> is BS_HATCHED, the <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpHatch"/> member specifies the orientation of the lines used to create the
hatch. It can be one of the following values.
</para>
<list type="table">
<item>
<term>HS_BDIAGONAL</term>
<description>45-degree upward hatch (left to right)</description>
</item>
<item>
<term>HS_CROSS</term>
<description>Horizontal and vertical crosshatch</description>
</item>
<item>
<term>HS_DIAGCROSS</term>
<description>45-degree crosshatch</description>
</item>
<item>
<term>HS_FDIAGONAL</term>
<description>45-degree downward hatch (left to right)</description>
</item>
<item>
<term>HS_HORIZONTAL</term>
<description>Horizontal hatch</description>
</item>
<item>
<term>HS_VERTICAL</term>
<description>Vertical hatch</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.EXTLOGPEN.elpNumEntries">
<summary>
The number of entries in the style array in the <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpStyleEntry"/> member. This value is zero if <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpPenStyle"/> does not
specify PS_USERSTYLE.
</summary>
</member>
<member name="F:Win32Interop.Structs.EXTLOGPEN.elpStyleEntry">
<summary>
<para>
A user-supplied style array. The array is specified with a finite length, but it is used as if it repeated indefinitely. The first entry in
the array specifies the length of the first dash. The second entry specifies the length of the first gap. Thereafter, lengths of dashes and
gaps alternate.
</para>
<para>
If <see cref="F:Win32Interop.Structs.EXTLOGPEN.elpWidth"/> specifies geometric lines, the lengths are in logical units. Otherwise, the lines are cosmetic and lengths are in
device units.
</para>
</summary>
</member>
<member name="T:Win32Interop.Structs.BITMAPV5HEADER">
<summary>
The <see cref="T:Win32Interop.Structs.BITMAPV5HEADER"/> structure is the bitmap information header file. It is an extended version of the
<see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/> structure.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Size">
<summary>
The number of bytes required by the structure. Applications should use this member to determine which bitmap information header structure is
being used.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Width">
<summary>
<para>The width of the bitmap, in pixels.</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression"/> is BI_JPEG or BI_PNG, the <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Width"/> member specifies the width of the decompressed JPEG or PNG
image in pixels.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Height">
<summary>
<para>
The height of the bitmap, in pixels. If the value of <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Height"/> is positive, the bitmap is a bottom-up DIB and its origin is
the lower-left corner. If <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Height"/> value is negative, the bitmap is a top-down DIB and its origin is the upper-left corner.
</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Height"/> is negative, indicating a top-down DIB, <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression"/> must be either BI_RGB or BI_BITFIELDS.
Top-down DIBs cannot be compressed.
</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression"/> is BI_JPEG or BI_PNG, the <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Height"/> member specifies the height of the decompressed JPEG or
PNG image in pixels.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Planes">
<summary>The number of planes for the target device. This value must be set to 1.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5BitCount">
<summary>
<para>The number of bits that define each pixel and the maximum number of colors in the bitmap.</para>
<para>This member can be one of the following values.</para>
<list type="table">
<item>
<term>0</term>
<description>The number of bits per pixel is specified or is implied by the JPEG or PNG file format.</description>
</item>
<item>
<term>1</term>
<description>
The bitmap is monochrome, and the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of <see cref="T:Win32Interop.Structs.BITMAPINFO"/> contains two entries. Each
bit in the bitmap array represents a pixel. If the bit is clear, the pixel is displayed with the color of the first entry in the
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> color table. If the bit is set, the pixel has the color of the second entry in the table. ///
</description>
</item>
<item>
<term>4</term>
<description>
The bitmap has a maximum of 16 colors, and the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of <see cref="T:Win32Interop.Structs.BITMAPINFO"/> contains up to
16 entries. Each pixel in the bitmap is represented by a 4-bit index into the color table. For example, if the first byte in the
bitmap is 0x1F, the byte represents two pixels. The first pixel contains the color in the second table entry, and the second pixel
contains the color in the sixteenth table entry. ///
</description>
</item>
<item>
<term>8</term>
<description>
The bitmap has a maximum of 256 colors, and the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of <see cref="T:Win32Interop.Structs.BITMAPINFO"/> contains up
to 256 entries. In this case, each byte in the array represents a single pixel. ///
</description>
</item>
<item>
<term>16</term>
<description>
<para>
If the <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression"/> member of the <see cref="T:Win32Interop.Structs.BITMAPV5HEADER"/> is BI_BITFIELDS, the
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/>
member contains three DWORD color masks that specify the red, green, and blue components, respectively, of each pixel. Each WORD
in the bitmap array represents a single pixel.
</para>
<para>
When the <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression"/> member is BI_BITFIELDS, bits set in each DWORD mask must be contiguous and should not
overlap the bits of another mask. All the bits in the pixel do not need to be used.
</para>
</description>
</item>
<item>
<term>24</term>
<description>
The bitmap has a maximum of 2^24 colors, and the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of <see cref="T:Win32Interop.Structs.BITMAPINFO"/> is NULL.
Each 3-byte triplet in the bitmap array represents the relative intensities of blue, green, and red, respectively, for a pixel. The
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> color table is used for optimizing colors used on palette-based devices, and must contain the
number of entries specified by the <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5ClrUsed"/> member of the <see cref="T:Win32Interop.Structs.BITMAPV5HEADER"/> structure. ///
</description>
</item>
<item>
<term>32</term>
<description>
<para>
If the <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression"/> member of the <see cref="T:Win32Interop.Structs.BITMAPV5HEADER"/> is BI_BITFIELDS, the
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/>
member contains three DWORD color masks that specify the red, green, and blue components of each pixel. Each DWORD in the bitmap
array represents a single pixel.
</para>
</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression">
<summary>
<para>
Specifies that the bitmap is not compressed. The <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5RedMask"/>, <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5GreenMask"/>, and <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5BlueMask"/>
members specify the red, green, and blue components of each pixel. This is valid when used with 16- and 32-bpp bitmaps. This member can be
one of the following values.
</para>
<list type="table">
<item>
<term>BI_RGB</term>
<description>An uncompressed format.</description>
</item>
<item>
<term>BI_RLE8</term>
<description>
A run-length encoded (RLE) format for bitmaps with 8 bpp. The compression format is a two-byte format consisting of a count byte
followed by a byte containing a color index. If <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression"/> is BI_RGB and the <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5BitCount"/> member is
16, 24, or 32, the bitmap array specifies the actual intensities of blue, green, and red rather than using color table indexes. For
more information, see Bitmap Compression. ///
</description>
</item>
<item>
<term>BI_RLE4</term>
<description>
An RLE format for bitmaps with 4 bpp. The compression format is a two-byte format consisting of a count byte followed by two
word-length color indexes. For more information, see Bitmap Compression.
</description>
</item>
<item>
<term>BI_BITFIELDS</term>
<description>
Specifies that the bitmap is not compressed and that the color masks for the red, green, and blue components of each pixel are
specified in the <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5RedMask"/>, <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5GreenMask"/>, and <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5BlueMask"/> members. This is valid when
used with 16- and 32-bpp bitmaps. ///
</description>
</item>
<item>
<term>BI_JPEG</term>
<description>
Specifies that the image is compressed using the JPEG file Interchange Format. JPEG compression trades off compression against loss;
it can achieve a compression ratio of 20:1 with little noticeable loss.
</description>
</item>
<item>
<term>BI_PNG</term>
<description>Specifies that the image is compressed using the PNG file Interchange Format.</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5SizeImage">
<summary>
<para>The size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps.</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression"/> is BI_JPEG or BI_PNG, <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5SizeImage"/> is the size of the JPEG or PNG image buffer.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5XPelsPerMeter">
<summary>
The horizontal resolution, in pixels-per-meter, of the target device for the bitmap. An application can use this value to select a bitmap from a
resource group that best matches the characteristics of the current device.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5YPelsPerMeter">
<summary>The vertical resolution, in pixels-per-meter, of the target device for the bitmap.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5ClrUsed">
<summary>
<para>
The number of color indexes in the color table that are actually used by the bitmap. If this value is zero, the bitmap uses the maximum
number of colors corresponding to the value of the <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5BitCount"/> member for the compression mode specified by
<see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression"/>.
</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5ClrUsed"/> is nonzero and <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5BitCount"/> is less than 16, the <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5ClrUsed"/> member specifies the
actual number of colors the graphics engine or device driver accesses. If <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5BitCount"/> is 16 or greater, the
<see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5ClrUsed"/> member specifies the size of the color table used to optimize performance of the system color palettes. If
<see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5BitCount"/> equals 16 or 32, the optimal color palette starts immediately following the <see cref="T:Win32Interop.Structs.BITMAPV5HEADER"/>. If
<see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5ClrUsed"/> is nonzero, the color table is used on palettized devices, and <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5ClrUsed"/> specifies the number of
entries.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5ClrImportant">
<summary>The number of color indexes that are required for displaying the bitmap. If this value is zero, all colors are required.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5RedMask">
<summary>
Color mask that specifies the red component of each pixel, valid only if <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression"/> is set to BI_BITFIELDS.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5GreenMask">
<summary>
Color mask that specifies the green component of each pixel, valid only if <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression"/> is set to BI_BITFIELDS.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5BlueMask">
<summary>
Color mask that specifies the blue component of each pixel, valid only if <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Compression"/> is set to BI_BITFIELDS.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5AlphaMask">
<summary>Color mask that specifies the alpha component of each pixel.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5CSType">
<summary>
<para>The color space of the DIB.</para>
<para>
The following table specifies the values for <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5CSType"/>.
</para>
<list type="table">
<item>
<term>LCS_CALIBRATED_RGB</term>
<description>This value implies that endpoints and gamma values are given in the appropriate fields.</description>
</item>
<item>
<term>LCS_sRGB</term>
<description>Specifies that the bitmap is in sRGB color space.</description>
</item>
<item>
<term>LCS_WINDOWS_COLOR_SPACE</term>
<description>This value indicates that the bitmap is in the system default color space, sRGB.</description>
</item>
<item>
<term>PROFILE_LINKED</term>
<description>
This value indicates that <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5ProfileData"/> points to the file name of the profile to use (gamma and endpoints values are
ignored).
</description>
</item>
<item>
<term>PROFILE_EMBEDDED</term>
<description>
This value indicates that <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5ProfileData"/> points to a memory buffer that contains the profile to be used (gamma and
endpoints values are ignored).
</description>
</item>
</list>
<para>
See the <see cref="T:Win32Interop.Structs.LOGCOLORSPACE"/> structure for information that defines a logical color space.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Endpoints">
<summary>
A <see cref="T:Win32Interop.Structs.CIEXYZTRIPLE"/> structure that specifies the x, y, and z coordinates of the three colors that correspond to the red, green, and
blue endpoints for the logical color space associated with the bitmap. This member is ignored unless the <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5CSType"/> member
specifies LCS_CALIBRATED_RGB.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5GammaRed">
<summary>
Toned response curve for red. Used if <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5CSType"/> is set to LCS_CALIBRATED_RGB. Specify in unsigned fixed 16.16 format. The upper 16
bits are the unsigned integer value. The lower 16 bits are the fractional part.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5GammaGreen">
<summary>
Toned response curve for green. Used if <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5CSType"/> is set to LCS_CALIBRATED_RGB. Specify in unsigned fixed 16.16 format. The upper
16 bits are the unsigned integer value. The lower 16 bits are the fractional part.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5GammaBlue">
<summary>
Toned response curve for blue. Used if <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5CSType"/> is set to LCS_CALIBRATED_RGB. Specify in unsigned fixed 16.16 format. The upper
16 bits are the unsigned integer value. The lower 16 bits are the fractional part.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Intent">
<summary>
<para>Rendering intent for bitmap. This can be one of the following values.</para>
<list type="table">
<item>
<term>LCS_GM_ABS_COLORIMETRIC</term>
<description>Match</description>
</item>
<item>
<term>LCS_GM_BUSINESS</term>
<description>Graphic</description>
</item>
<item>
<term>LCS_GM_GRAPHICS</term>
<description>Proof</description>
</item>
<item>
<term>LCS_GM_IMAGES</term>
<description>Picture</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5ProfileData">
<summary>
The offset, in bytes, from the beginning of the <see cref="T:Win32Interop.Structs.BITMAPV5HEADER"/> structure to the start of the profile data. If the profile is
embedded, profile data is the actual profile, and it is linked. (The profile data is the null-terminated file name of the profile.) This cannot
be a Unicode string. It must be composed exclusively of characters from the Windows character set (code page 1252). These profile members are
ignored unless the <see cref="F:Win32Interop.Structs.BITMAPV5HEADER.bV5CSType"/> member specifies PROFILE_LINKED or PROFILE_EMBEDDED.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5ProfileSize">
<summary>Size, in bytes, of embedded profile data.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV5HEADER.bV5Reserved">
<summary>This member has been reserved. Its value should be set to zero.</summary>
</member>
<member name="T:Win32Interop.Structs.BITMAPV4HEADER">
<summary>
<para>
The <see cref="T:Win32Interop.Structs.BITMAPV4HEADER"/> structure is the bitmap information header file. It is an extended version of the
<see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/> structure.
</para>
<para>
Applications can use the <see cref="T:Win32Interop.Structs.BITMAPV5HEADER"/> structure for added functionality.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Size">
<summary>
The number of bytes required by the structure. Applications should use this member to determine which bitmap information header structure is
being used.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Width">
<summary>
<para>The width of the bitmap, in pixels.</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Compression"/> is BI_JPEG or BI_PNG, <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Width"/> specifies the width of the JPEG or PNG image in pixels.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Height">
<summary>
<para>
The height of the bitmap, in pixels. If <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Height"/> is positive, the bitmap is a bottom-up DIB and its origin is the lower-left
corner. If <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Height"/> is negative, the bitmap is a top-down DIB and its origin is the upper-left corner.
</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Height"/> is negative, indicating a top-down DIB, <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Compression"/> must be either BI_RGB or BI_BITFIELDS.
Top-down DIBs cannot be compressed.
</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Compression"/> is BI_JPEG or BI_PNG, <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Height"/> specifies the height of the JPEG or PNG image in pixels.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Planes">
<summary>The number of planes for the target device. This value must be set to 1.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4BitCount">
<summary>
<para>
The number of bits-per-pixel. The <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4BitCount"/> member of the <see cref="T:Win32Interop.Structs.BITMAPV4HEADER"/> structure determines the number of
bits that define each pixel and the maximum number of colors in the bitmap. This member must be one of the following values.
</para>
<list type="table">
<item>
<term>0</term>
<description>The number of bits-per-pixel is specified or is implied by the JPEG or PNG file format.</description>
</item>
<item>
<term>1</term>
<description>
The bitmap is monochrome, and the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of <see cref="T:Win32Interop.Structs.BITMAPINFO"/> contains two entries. Each
bit in the bitmap array represents a pixel. If the bit is clear, the pixel is displayed with the color of the first entry in the
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> table; if the bit is set, the pixel has the color of the second entry in the table. ///
</description>
</item>
<item>
<term>4</term>
<description>
The bitmap has a maximum of 16 colors, and the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of <see cref="T:Win32Interop.Structs.BITMAPINFO"/> contains up to
16 entries. Each pixel in the bitmap is represented by a 4-bit index into the color table. For example, if the first byte in the
bitmap is 0x1F, the byte represents two pixels. The first pixel contains the color in the second table entry, and the second pixel
contains the color in the sixteenth table entry. ///
</description>
</item>
<item>
<term>8</term>
<description>
The bitmap has a maximum of 256 colors, and the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of <see cref="T:Win32Interop.Structs.BITMAPINFO"/> contains up
to 256 entries. In this case, each byte in the array represents a single pixel. ///
</description>
</item>
<item>
<term>16</term>
<description>
<para>
If the <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Compression"/> member of the <see cref="T:Win32Interop.Structs.BITMAPV4HEADER"/> is BI_BITFIELDS, the
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/>
member contains three DWORD color masks that specify the red, green, and blue components of each pixel. Each WORD in the bitmap
array represents a single pixel.
</para>
</description>
</item>
<item>
<term>24</term>
<description>
The bitmap has a maximum of 2^24 colors, and the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of <see cref="T:Win32Interop.Structs.BITMAPINFO"/> is NULL.
Each 3-byte triplet in the bitmap array represents the relative intensities of blue, green, and red for a pixel. The
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/>
color table is used for optimizing colors used on palette-based devices, and must contain the number of entries specified by the
<see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4ClrUsed"/> member of the <see cref="T:Win32Interop.Structs.BITMAPV4HEADER"/>. ///
</description>
</item>
<item>
<term>32</term>
<description>
<para>
If the <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Compression"/> member of the <see cref="T:Win32Interop.Structs.BITMAPV4HEADER"/> is BI_BITFIELDS, the
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/>
member contains three DWORD color masks that specify the red, green, and blue components of each pixel. Each DWORD in the bitmap
array represents a single pixel.
</para>
</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Compression">
<summary>
<para>
The type of compression for a compressed bottom-up bitmap (top-down DIBs cannot be compressed). This member can be one of the following
values.
</para>
<list type="table">
<item>
<term>BI_RGB</term>
<description>An uncompressed format.</description>
</item>
<item>
<term>BI_RLE8</term>
<description>
A run-length encoded (RLE) format for bitmaps with 8 bpp. The compression format is a 2-byte format consisting of a count byte
followed by a byte containing a color index. For more information, see Bitmap Compression.
</description>
</item>
<item>
<term>BI_RLE4</term>
<description>
An RLE format for bitmaps with 4 bpp. The compression format is a 2-byte format consisting of a count byte followed by two
word-length color indexes. For more information, see Bitmap Compression.
</description>
</item>
<item>
<term>BI_BITFIELDS</term>
<description>
Specifies that the bitmap is not compressed. The members <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4RedMask"/>, <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4GreenMask"/>, and
<see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4BlueMask"/> specify the red, green, and blue components for each pixel. This is valid when used with 16- and 32-bpp
bitmaps. ///
</description>
</item>
<item>
<term>BI_JPEG</term>
<description>
Specifies that the image is compressed using the JPEG file interchange format. JPEG compression trades off compression against loss;
it can achieve a compression ratio of 20:1 with little noticeable loss.
</description>
</item>
<item>
<term>BI_PNG</term>
<description>Specifies that the image is compressed using the PNG file interchange format.</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4SizeImage">
<summary>
<para>The size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps.</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Compression"/> is BI_JPEG or BI_PNG, <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4SizeImage"/> is the size of the JPEG or PNG image buffer.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4XPelsPerMeter">
<summary>
The horizontal resolution, in pixels-per-meter, of the target device for the bitmap. An application can use this value to select a bitmap from a
resource group that best matches the characteristics of the current device.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4YPelsPerMeter">
<summary>The vertical resolution, in pixels-per-meter, of the target device for the bitmap.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4ClrUsed">
<summary>
<para>
The number of color indexes in the color table that are actually used by the bitmap. If this value is zero, the bitmap uses the maximum
number of colors corresponding to the value of the <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4BitCount"/> member for the compression mode specified by
<see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Compression"/>.
</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4ClrUsed"/> is nonzero and the <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4BitCount"/> member is less than 16, the <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4ClrUsed"/> member
specifies the actual number of colors the graphics engine or device driver accesses. If <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4BitCount"/> is 16 or greater, the
<see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4ClrUsed"/> member specifies the size of the color table used to optimize performance of the system color palettes. If
<see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4BitCount"/> equals 16 or 32, the optimal color palette starts immediately following the <see cref="T:Win32Interop.Structs.BITMAPV4HEADER"/>.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4ClrImportant">
<summary>The number of color indexes that are required for displaying the bitmap. If this value is zero, all colors are important.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4RedMask">
<summary>
Color mask that specifies the red component of each pixel, valid only if <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Compression"/> is set to BI_BITFIELDS.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4GreenMask">
<summary>
Color mask that specifies the green component of each pixel, valid only if <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Compression"/> is set to BI_BITFIELDS.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4BlueMask">
<summary>
Color mask that specifies the blue component of each pixel, valid only if <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Compression"/> is set to BI_BITFIELDS.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4AlphaMask">
<summary>Color mask that specifies the alpha component of each pixel.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4CSType">
<summary>
<para>
The color space of the DIB. The following table lists the value for <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4CSType"/>.
</para>
<list type="table">
<item>
<term>LCS_CALIBRATED_RGB</term>
<description>This value indicates that endpoints and gamma values are given in the appropriate fields.</description>
</item>
</list>
<para>
See the <see cref="T:Win32Interop.Structs.LOGCOLORSPACE"/> structure for information that defines a logical color space.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4Endpoints">
<summary>
<para>
A <see cref="T:Win32Interop.Structs.CIEXYZTRIPLE"/> structure that specifies the x, y, and z coordinates of the three colors that correspond to the red, green, and
blue endpoints for the logical color space associated with the bitmap. This member is ignored unless the <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4CSType"/> member
specifies LCS_CALIBRATED_RGB.
</para>
<para>
Note A color space is a model for representing color numerically in terms of three or more coordinates. For example, the RGB color space
represents colors in terms of the red, green, and blue coordinates.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4GammaRed">
<summary>
Tone response curve for red. This member is ignored unless color values are calibrated RGB values and <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4CSType"/> is set to
LCS_CALIBRATED_RGB. Specify in unsigned fixed 16.16 format. The upper 16 bits are the unsigned integer value. The lower 16 bits are the
fractional part.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4GammaGreen">
<summary>
Tone response curve for green. Used if <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4CSType"/> is set to LCS_CALIBRATED_RGB. Specify in unsigned fixed 16.16 format. The upper
16 bits are the unsigned integer value. The lower 16 bits are the fractional part.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPV4HEADER.bV4GammaBlue">
<summary>
Tone response curve for blue. Used if <see cref="F:Win32Interop.Structs.BITMAPV4HEADER.bV4CSType"/> is set to LCS_CALIBRATED_RGB. Specify in unsigned fixed 16.16 format. The upper 16
bits are the unsigned integer value. The lower 16 bits are the fractional part.
</summary>
</member>
<member name="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR">
<summary>
<para></para>
<para>
The <see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/> structure describes the pixel format of a drawing surface.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.nSize">
<summary>
Specifies the size of this data structure. This value should be set to sizeof(<see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/>).
</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.nVersion">
<summary>Specifies the version of this data structure. This value should be set to 1.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.dwFlags">
<summary>
<para>
A set of bit flags that specify properties of the pixel buffer. The properties are generally not mutually exclusive; you can set any
combination of bit flags, with the exceptions noted. The following bit flag constants are defined.
</para>
<list type="table">
<item>
<term>PFD_DRAW_TO_WINDOW</term>
<description>The buffer can draw to a window or device surface.</description>
</item>
<item>
<term>PFD_DRAW_TO_BITMAP</term>
<description>The buffer can draw to a memory bitmap.</description>
</item>
<item>
<term>PFD_SUPPORT_GDI</term>
<description>
The buffer supports GDI drawing. This flag and PFD_DOUBLEBUFFER are mutually exclusive in the current generic
implementation.
</description>
</item>
<item>
<term>PFD_SUPPORT_OPENGL</term>
<description>The buffer supports OpenGL drawing.</description>
</item>
<item>
<term>PFD_GENERIC_ACCELERATED</term>
<description>
The pixel format is supported by a device driver that accelerates the generic implementation. If this flag is clear and the
PFD_GENERIC_FORMAT flag is set, the pixel format is supported by the generic implementation only.
</description>
</item>
<item>
<term>PFD_GENERIC_FORMAT</term>
<description>
The pixel format is supported by the GDI software implementation, which is also known as the generic implementation. If this bit is
clear, the pixel format is supported by a device driver or hardware.
</description>
</item>
<item>
<term>PFD_NEED_PALETTE</term>
<description>
The buffer uses RGBA pixels on a palette-managed device. A logical palette is required to achieve the best results for this pixel
type. Colors in the palette should be specified according to the values of the <see cref="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cRedBits"/>, <see cref="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cRedShift"/>,
<see cref="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cGreenBits"/>, <see cref="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cGreenShift"/>, <see cref="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cBlueBits"/>, and <see cref="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cBlueShift"/> members. The palette
should be created and realized in the device context before calling wglMakeCurrent.
</description>
</item>
<item>
<term>PFD_NEED_SYSTEM_PALETTE</term>
<description>
<para>
When this flag is set, you must call <see cref="M:Win32Interop.Methods.Gdi32.SetSystemPaletteUse(System.IntPtr,System.UInt32)"/> in your program to force a one-to-one mapping of
the logical palette and the system palette. If your OpenGL hardware supports multiple hardware palettes and the device driver can
allocate spare hardware palettes for OpenGL, this flag is typically clear.
</para>
<para>This flag is not set in the generic pixel formats.</para>
</description>
</item>
<item>
<term>PFD_DOUBLEBUFFER</term>
<description>The buffer is double-buffered. This flag and PFD_SUPPORT_GDI are mutually exclusive in the current generic implementation.</description>
</item>
<item>
<term>PFD_STEREO</term>
<description>The buffer is stereoscopic. This flag is not supported in the current generic implementation.</description>
</item>
<item>
<term>PFD_SWAP_LAYER_BUFFERS</term>
<description>
Indicates whether a device can swap individual layer planes with pixel formats that include double-buffered overlay or underlay
planes. Otherwise all layer planes are swapped together as a group. When this flag is set, wglSwapLayerBuffers is supported.
</description>
</item>
</list>
<para>
You can specify the following bit flags when calling <see cref="M:Win32Interop.Methods.Gdi32.ChoosePixelFormat(System.IntPtr,Win32Interop.Structs.PIXELFORMATDESCRIPTOR@)"/>.
</para>
<list type="table">
<item>
<term>PFD_DEPTH_DONTCARE</term>
<description>
The requested pixel format can either have or not have a depth buffer. To select a pixel format without a depth buffer, you must
specify this flag. The requested pixel format can be with or without a depth buffer. Otherwise, only pixel formats with a depth
buffer are considered.
</description>
</item>
<item>
<term>PFD_DOUBLEBUFFER_DONTCARE</term>
<description>The requested pixel format can be either single- or double-buffered.</description>
</item>
<item>
<term>PFD_STEREO_DONTCARE</term>
<description>The requested pixel format can be either monoscopic or stereoscopic.</description>
</item>
</list>
<para>
With the glAddSwapHintRectWIN extension function, two new flags are included for the <see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/>
pixel format structure.
</para>
<list type="table">
<item>
<term>PFD_SWAP_COPY</term>
<description>
Specifies the content of the back buffer in the double-buffered main color plane following a buffer swap. Swapping the color buffers
causes the content of the back buffer to be copied to the front buffer. The content of the back buffer is not affected by the swap.
PFD_SWAP_COPY is a hint only and might not be provided by a driver.
</description>
</item>
<item>
<term>PFD_SWAP_EXCHANGE</term>
<description>
Specifies the content of the back buffer in the double-buffered main color plane following a buffer swap. Swapping the color buffers
causes the exchange of the back buffer's content with the front buffer's content. Following the swap, the back buffer's content
contains the front buffer's content before the swap. PFD_SWAP_EXCHANGE is a hint only and might not be provided by a driver.
</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.iPixelType">
<summary>
<para>Specifies the type of pixel data. The following types are defined.</para>
<list type="table">
<item>
<term>PFD_TYPE_RGBA</term>
<description>RGBA pixels. Each pixel has four components in this order: red, green, blue, and alpha.</description>
</item>
<item>
<term>PFD_TYPE_COLORINDEX</term>
<description>Color-index pixels. Each pixel uses a color-index value.</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cColorBits">
<summary>
Specifies the number of color bitplanes in each color buffer. For RGBA pixel types, it is the size of the color buffer, excluding the alpha
bitplanes. For color-index pixels, it is the size of the color-index buffer.
</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cRedBits">
<summary>Specifies the number of red bitplanes in each RGBA color buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cRedShift">
<summary>Specifies the shift count for red bitplanes in each RGBA color buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cGreenBits">
<summary>Specifies the number of green bitplanes in each RGBA color buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cGreenShift">
<summary>Specifies the shift count for green bitplanes in each RGBA color buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cBlueBits">
<summary>Specifies the number of blue bitplanes in each RGBA color buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cBlueShift">
<summary>Specifies the shift count for blue bitplanes in each RGBA color buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cAlphaBits">
<summary>Specifies the number of alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cAlphaShift">
<summary>Specifies the shift count for alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cAccumBits">
<summary>Specifies the total number of bitplanes in the accumulation buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cAccumRedBits">
<summary>Specifies the number of red bitplanes in the accumulation buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cAccumGreenBits">
<summary>Specifies the number of green bitplanes in the accumulation buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cAccumBlueBits">
<summary>Specifies the number of blue bitplanes in the accumulation buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cAccumAlphaBits">
<summary>Specifies the number of alpha bitplanes in the accumulation buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cDepthBits">
<summary>Specifies the depth of the depth (z-axis) buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cStencilBits">
<summary>Specifies the depth of the stencil buffer.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.cAuxBuffers">
<summary>Specifies the number of auxiliary buffers. Auxiliary buffers are not supported.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.iLayerType">
<summary>Ignored. Earlier implementations of OpenGL used this member, but it is no longer used.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.bReserved">
<summary>
Specifies the number of overlay and underlay planes. Bits 0 through 3 specify up to 15 overlay planes and bits 4 through 7 specify up to 15
underlay planes.
</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.dwLayerMask">
<summary>Ignored. Earlier implementations of OpenGL used this member, but it is no longer used.</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.dwVisibleMask">
<summary>
Specifies the transparent color or index of an underlay plane. When the pixel type is RGBA, <see cref="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.dwVisibleMask"/> is a transparent RGB
color value. When the pixel type is color index, it is a transparent index value.
</summary>
</member>
<member name="F:Win32Interop.Structs.PIXELFORMATDESCRIPTOR.dwDamageMask">
<summary>Ignored. Earlier implementations of OpenGL used this member, but it is no longer used.</summary>
</member>
<member name="T:Win32Interop.Structs.RGBQUAD">
<summary>
The <see cref="T:Win32Interop.Structs.RGBQUAD"/> structure describes a color consisting of relative intensities of red, green, and blue.
</summary>
</member>
<member name="F:Win32Interop.Structs.RGBQUAD.rgbBlue">
<summary>The intensity of blue in the color.</summary>
</member>
<member name="F:Win32Interop.Structs.RGBQUAD.rgbGreen">
<summary>The intensity of green in the color.</summary>
</member>
<member name="F:Win32Interop.Structs.RGBQUAD.rgbRed">
<summary>The intensity of red in the color.</summary>
</member>
<member name="F:Win32Interop.Structs.RGBQUAD.rgbReserved">
<summary>This member is reserved and must be zero.</summary>
</member>
<member name="T:Win32Interop.Structs.MAT2">
<summary>
The <see cref="T:Win32Interop.Structs.MAT2"/> structure contains the values for a transformation matrix used by the <see cref="M:Win32Interop.Methods.Gdi32.GetGlyphOutline(System.IntPtr,System.UInt32,System.UInt32,Win32Interop.Structs.GLYPHMETRICS@,System.UInt32,System.IntPtr,Win32Interop.Structs.MAT2@)"/> function.
</summary>
</member>
<member name="F:Win32Interop.Structs.MAT2.eM11">
<summary>A fixed-point value for the M11 component of a 3 by 3 transformation matrix.</summary>
</member>
<member name="F:Win32Interop.Structs.MAT2.eM12">
<summary>A fixed-point value for the M12 component of a 3 by 3 transformation matrix.</summary>
</member>
<member name="F:Win32Interop.Structs.MAT2.eM21">
<summary>A fixed-point value for the M21 component of a 3 by 3 transformation matrix.</summary>
</member>
<member name="F:Win32Interop.Structs.MAT2.eM22">
<summary>A fixed-point value for the M22 component of a 3 by 3 transformation matrix.</summary>
</member>
<member name="T:Win32Interop.Structs.RGNDATA">
<summary>
The <see cref="T:Win32Interop.Structs.RGNDATA"/> structure contains a header and an array of rectangles that compose a region. The rectangles are sorted top to bottom,
left to right. They do not overlap.
</summary>
</member>
<member name="F:Win32Interop.Structs.RGNDATA.rdh">
<summary>
A <see cref="T:Win32Interop.Structs.RGNDATAHEADER"/> structure. The members of this structure specify the type of region (whether it is rectangular or trapezoidal),
the number of rectangles that make up the region, the size of the buffer that contains the rectangle structures, and so on.
</summary>
</member>
<member name="F:Win32Interop.Structs.RGNDATA.Buffer">
<summary>
Specifies an arbitrary-size buffer that contains the <see cref="T:Win32Interop.Structs.RECT"/> structures that make up the region.
</summary>
</member>
<member name="T:Win32Interop.Structs.BITMAPINFOHEADER">
<summary>
The <see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/> structure contains information about the dimensions and color format of a DIB.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFOHEADER.biSize">
<summary>The number of bytes required by the structure.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFOHEADER.biWidth">
<summary>
<para>The width of the bitmap, in pixels.</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biCompression"/> is BI_JPEG or BI_PNG, the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biWidth"/> member specifies the width of the decompressed JPEG or PNG
image file, respectively.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFOHEADER.biHeight">
<summary>
<para>
The height of the bitmap, in pixels. If <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biHeight"/> is positive, the bitmap is a bottom-up DIB and its origin is the lower-left
corner. If <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biHeight"/> is negative, the bitmap is a top-down DIB and its origin is the upper-left corner.
</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biHeight"/> is negative, indicating a top-down DIB, <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biCompression"/> must be either BI_RGB or BI_BITFIELDS.
Top-down DIBs cannot be compressed.
</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biCompression"/> is BI_JPEG or BI_PNG, the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biHeight"/> member specifies the height of the decompressed JPEG or PNG
image file, respectively.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFOHEADER.biPlanes">
<summary>The number of planes for the target device. This value must be set to 1.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount">
<summary>
<para>
The number of bits-per-pixel. The <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/> structure determines the number of
bits that define each pixel and the maximum number of colors in the bitmap. This member must be one of the following values.
</para>
<list type="table">
<item>
<term>0</term>
<description>The number of bits-per-pixel is specified or is implied by the JPEG or PNG format.</description>
</item>
<item>
<term>1</term>
<description>
The bitmap is monochrome, and the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of <see cref="T:Win32Interop.Structs.BITMAPINFO"/> contains two entries. Each
bit in the bitmap array represents a pixel. If the bit is clear, the pixel is displayed with the color of the first entry in the
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> table; if the bit is set, the pixel has the color of the second entry in the table. ///
</description>
</item>
<item>
<term>4</term>
<description>
The bitmap has a maximum of 16 colors, and the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of <see cref="T:Win32Interop.Structs.BITMAPINFO"/> contains up to
16 entries. Each pixel in the bitmap is represented by a 4-bit index into the color table. For example, if the first byte in the
bitmap is 0x1F, the byte represents two pixels. The first pixel contains the color in the second table entry, and the second pixel
contains the color in the sixteenth table entry. ///
</description>
</item>
<item>
<term>8</term>
<description>
The bitmap has a maximum of 256 colors, and the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of <see cref="T:Win32Interop.Structs.BITMAPINFO"/> contains up
to 256 entries. In this case, each byte in the array represents a single pixel. ///
</description>
</item>
<item>
<term>16</term>
<description>
<para>
If the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biCompression"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/> is BI_BITFIELDS, the
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/>
member contains three DWORD color masks that specify the red, green, and blue components, respectively, of each pixel. Each WORD
in the bitmap array represents a single pixel.
</para>
<para>
When the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biCompression"/> member is BI_BITFIELDS, bits set in each DWORD mask must be contiguous and should not
overlap the bits of another mask. All the bits in the pixel do not have to be used.
</para>
</description>
</item>
<item>
<term>24</term>
<description>
The bitmap has a maximum of 2^24 colors, and the <see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> member of <see cref="T:Win32Interop.Structs.BITMAPINFO"/> is NULL.
Each 3-byte triplet in the bitmap array represents the relative intensities of blue, green, and red, respectively, for a pixel. The
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/> color table is used for optimizing colors used on palette-based devices, and must contain the
number of entries specified by the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biClrUsed"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/>. ///
</description>
</item>
<item>
<term>32</term>
<description>
<para>
If the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biCompression"/> member of the <see cref="T:Win32Interop.Structs.BITMAPINFOHEADER"/> is BI_BITFIELDS, the
<see cref="F:Win32Interop.Structs.BITMAPINFO.bmiColors"/>
member contains three DWORD color masks that specify the red, green, and blue components, respectively, of each pixel. Each DWORD
in the bitmap array represents a single pixel.
</para>
<para>
When the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biCompression"/> member is BI_BITFIELDS, bits set in each DWORD mask must be contiguous and should not
overlap the bits of another mask. All the bits in the pixel do not need to be used.
</para>
</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFOHEADER.biCompression">
<summary>
<para>
The type of compression for a compressed bottom-up bitmap (top-down DIBs cannot be compressed). This member can be one of the following
values.
</para>
<list type="table">
<item>
<term>BI_RGB</term>
<description>An uncompressed format.</description>
</item>
<item>
<term>BI_RLE8</term>
<description>
A run-length encoded (RLE) format for bitmaps with 8 bpp. The compression format is a 2-byte format consisting of a count byte
followed by a byte containing a color index. For more information, see Bitmap Compression.
</description>
</item>
<item>
<term>BI_RLE4</term>
<description>
An RLE format for bitmaps with 4 bpp. The compression format is a 2-byte format consisting of a count byte followed by two
word-length color indexes. For more information, see Bitmap Compression.
</description>
</item>
<item>
<term>BI_BITFIELDS</term>
<description>
Specifies that the bitmap is not compressed and that the color table consists of three DWORD color masks that specify the red, green,
and blue components, respectively, of each pixel. This is valid when used with 16- and 32-bpp bitmaps.
</description>
</item>
<item>
<term>BI_JPEG</term>
<description>Indicates that the image is a JPEG image.</description>
</item>
<item>
<term>BI_PNG</term>
<description>Indicates that the image is a PNG image.</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFOHEADER.biSizeImage">
<summary>
<para>The size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps.</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biCompression"/> is BI_JPEG or BI_PNG, <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biSizeImage"/> indicates the size of the JPEG or PNG image buffer,
respectively.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFOHEADER.biXPelsPerMeter">
<summary>
The horizontal resolution, in pixels-per-meter, of the target device for the bitmap. An application can use this value to select a bitmap from a
resource group that best matches the characteristics of the current device.
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFOHEADER.biYPelsPerMeter">
<summary>The vertical resolution, in pixels-per-meter, of the target device for the bitmap.</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFOHEADER.biClrUsed">
<summary>
<para>
The number of color indexes in the color table that are actually used by the bitmap. If this value is zero, the bitmap uses the maximum
number of colors corresponding to the value of the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount"/> member for the compression mode specified by
<see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biCompression"/>.
</para>
<para>
If <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biClrUsed"/> is nonzero and the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount"/> member is less than 16, the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biClrUsed"/> member
specifies the actual number of colors the graphics engine or device driver accesses. If <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount"/> is 16 or greater, the
<see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biClrUsed"/> member specifies the size of the color table used to optimize performance of the system color palettes. If
<see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biBitCount"/> equals 16 or 32, the optimal color palette starts immediately following the three DWORD masks.
</para>
<para>
When the bitmap array immediately follows the <see cref="T:Win32Interop.Structs.BITMAPINFO"/> structure, it is a packed bitmap. Packed bitmaps are referenced by a
single pointer. Packed bitmaps require that the <see cref="F:Win32Interop.Structs.BITMAPINFOHEADER.biClrUsed"/> member must be either zero or the actual size of the color table.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.BITMAPINFOHEADER.biClrImportant">
<summary>The number of color indexes that are required for displaying the bitmap. If this value is zero, all colors are required.</summary>
</member>
<member name="T:Win32Interop.Structs.LOGPALETTE">
<summary>
The <see cref="T:Win32Interop.Structs.LOGPALETTE"/> structure defines a logical palette.
</summary>
</member>
<member name="F:Win32Interop.Structs.LOGPALETTE.palVersion">
<summary>The version number of the system.</summary>
</member>
<member name="F:Win32Interop.Structs.LOGPALETTE.palNumEntries">
<summary>The number of entries in the logical palette.</summary>
</member>
<member name="F:Win32Interop.Structs.LOGPALETTE.palPalEntry">
<summary>
Specifies an array of <see cref="T:Win32Interop.Structs.PALETTEENTRY"/> structures that define the color and usage of each entry in the logical palette.
</summary>
</member>
<member name="T:Win32Interop.Structs.POLYTEXT">
<summary>
The <see cref="T:Win32Interop.Structs.POLYTEXT"/> structure describes how the <see cref="M:Win32Interop.Methods.Gdi32.PolyTextOut(System.IntPtr,Win32Interop.Structs.POLYTEXT[],System.Int32)"/> function should draw a string of text.
</summary>
</member>
<member name="F:Win32Interop.Structs.POLYTEXT.x">
<summary>The horizontal reference point for the string. The string is aligned to this point using the current text-alignment mode.</summary>
</member>
<member name="F:Win32Interop.Structs.POLYTEXT.y">
<summary>The vertical reference point for the string. The string is aligned to this point using the current text-alignment mode.</summary>
</member>
<member name="F:Win32Interop.Structs.POLYTEXT.n">
<summary>
The length of the string pointed to by <see cref="F:Win32Interop.Structs.POLYTEXT.lpstr"/>.
</summary>
</member>
<member name="F:Win32Interop.Structs.POLYTEXT.lpstr">
<summary>
Pointer to a string of text to be drawn by the <see cref="M:Win32Interop.Methods.Gdi32.PolyTextOut(System.IntPtr,Win32Interop.Structs.POLYTEXT[],System.Int32)"/> function. This string need not be null-terminated, since
<see cref="F:Win32Interop.Structs.POLYTEXT.n"/> specifies the length of the string.
</summary>
</member>
<member name="F:Win32Interop.Structs.POLYTEXT.uiFlags">
<summary>
<para>
Specifies whether the string is to be opaque or clipped and whether the string is accompanied by an array of character-width values. This
member can be one or more of the following values.
</para>
<list type="table">
<item>
<term>ETO_OPAQUE</term>
<description>The rectangle for each string is to be opaqued with the current background color.</description>
</item>
<item>
<term>ETO_CLIPPED</term>
<description>Each string is to be clipped to its specified rectangle.</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.POLYTEXT.rcl">
<summary>
A rectangle structure that contains the dimensions of the opaquing or clipping rectangle. This member is ignored if neither of the ETO_OPAQUE nor
the ETO_CLIPPED value is specified for the <see cref="F:Win32Interop.Structs.POLYTEXT.uiFlags"/> member.
</summary>
</member>
<member name="F:Win32Interop.Structs.POLYTEXT.pdx">
<summary>Pointer to an array containing the width value for each character in the string.</summary>
</member>
<member name="T:Win32Interop.Structs.DOCINFO">
<summary>
The <see cref="T:Win32Interop.Structs.DOCINFO"/> structure contains the input and output file names and other information used by the <see cref="M:Win32Interop.Methods.Gdi32.StartDoc(System.IntPtr,Win32Interop.Structs.DOCINFO@)"/>
function.
</summary>
</member>
<member name="F:Win32Interop.Structs.DOCINFO.cbSize">
<summary>The size, in bytes, of the structure.</summary>
</member>
<member name="F:Win32Interop.Structs.DOCINFO.lpszDocName">
<summary>Pointer to a null-terminated string that specifies the name of the document.</summary>
</member>
<member name="F:Win32Interop.Structs.DOCINFO.lpszOutput">
<summary>
Pointer to a null-terminated string that specifies the name of an output file. If this pointer is NULL, the output will be sent to the device
identified by the device context handle that was passed to the <see cref="M:Win32Interop.Methods.Gdi32.StartDoc(System.IntPtr,Win32Interop.Structs.DOCINFO@)"/> function.
</summary>
</member>
<member name="F:Win32Interop.Structs.DOCINFO.lpszDatatype">
<summary>
Pointer to a null-terminated string that specifies the type of data used to record the print job. The legal values for this member can be found
by calling EnumPrintProcessorDatatypes and can include such values as raw, emf, or XPS_PASS. This member can be NULL. Note that the requested
data type might be ignored.
</summary>
</member>
<member name="F:Win32Interop.Structs.DOCINFO.fwType">
<summary>
<para>Specifies additional information about the print job. This member must be zero or one of the following values.</para>
<list type="table">
<item>
<term>DI_APPBANDING</term>
<description>Applications that use banding should set this flag for optimal performance during printing.</description>
</item>
<item>
<term>DI_ROPS_READ_DESTINATION</term>
<description>The application will use raster operations that involve reading from the destination surface.</description>
</item>
</list>
</summary>
</member>
<member name="T:Win32Interop.Structs.OUTLINETEXTMETRIC">
<summary>
The <see cref="T:Win32Interop.Structs.OUTLINETEXTMETRIC"/> structure contains metrics describing a TrueType font.
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmSize">
<summary>
The size, in bytes, of the <see cref="T:Win32Interop.Structs.OUTLINETEXTMETRIC"/> structure.
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmTextMetrics">
<summary>
A <see cref="T:Win32Interop.Structs.TEXTMETRIC"/> structure containing further information about the font.
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmFiller">
<summary>A value that causes the structure to be byte-aligned.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmPanoseNumber">
<summary>The PANOSE number for this font.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmfsSelection">
<summary>
<para>The nature of the font pattern. This member can be a combination of the following bits.</para>
<list type="table">
<item>
<term>0</term>
<description>Italic</description>
</item>
<item>
<term>1</term>
<description>Underscore</description>
</item>
<item>
<term>2</term>
<description>Negative</description>
</item>
<item>
<term>3</term>
<description>Outline</description>
</item>
<item>
<term>4</term>
<description>Strikeout</description>
</item>
<item>
<term>5</term>
<description>Bold</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmfsType">
<summary>
Indicates whether the font is licensed. Licensed fonts must not be modified or exchanged. If bit 1 is set, the font may not be embedded in a
document. If bit 1 is clear, the font can be embedded. If bit 2 is set, the embedding is read-only.
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmsCharSlopeRise">
<summary>
The slope of the cursor. This value is 1 if the slope is vertical. Applications can use this value and the value of the
<see cref="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmsCharSlopeRun"/> member to create an italic cursor that has the same slope as the main italic angle (specified by the
<see cref="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmItalicAngle"/> member).
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmsCharSlopeRun">
<summary>
The slope of the cursor. This value is zero if the slope is vertical. Applications can use this value and the value of the
<see cref="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmsCharSlopeRise"/> member to create an italic cursor that has the same slope as the main italic angle (specified by the
<see cref="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmItalicAngle"/> member).
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmItalicAngle">
<summary>
The main italic angle of the font, in tenths of a degree counterclockwise from vertical. Regular (roman) fonts have a value of zero. Italic fonts
typically have a negative italic angle (that is, they lean to the right).
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmEMSquare">
<summary>
The number of logical units defining the x- or y-dimension of the em square for this font. (The number of units in the x- and y-directions are
always the same for an em square.)
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmAscent">
<summary>The maximum distance characters in this font extend above the base line. This is the typographic ascent for the font.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmDescent">
<summary>The maximum distance characters in this font extend below the base line. This is the typographic descent for the font.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmLineGap">
<summary>The typographic line spacing.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmsCapEmHeight">
<summary>Not supported.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmsXHeight">
<summary>Not supported.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmrcFontBox">
<summary>The bounding box for the font.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmMacAscent">
<summary>The maximum distance characters in this font extend above the base line for the Macintosh computer.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmMacDescent">
<summary>The maximum distance characters in this font extend below the base line for the Macintosh computer.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmMacLineGap">
<summary>The line-spacing information for the Macintosh computer.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmusMinimumPPEM">
<summary>The smallest recommended size for this font, in pixels per em-square.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmptSubscriptSize">
<summary>The recommended horizontal and vertical size for subscripts in this font.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmptSubscriptOffset">
<summary>
The recommended horizontal and vertical offset for subscripts in this font. The subscript offset is measured from the character origin to the
origin of the subscript character.
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmptSuperscriptSize">
<summary>The recommended horizontal and vertical size for superscripts in this font.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmptSuperscriptOffset">
<summary>
The recommended horizontal and vertical offset for superscripts in this font. The superscript offset is measured from the character base line to
the base line of the superscript character.
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmsStrikeoutSize">
<summary>The width of the strikeout stroke for this font. Typically, this is the width of the em dash for the font.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmsStrikeoutPosition">
<summary>
The position of the strikeout stroke relative to the base line for this font. Positive values are above the base line and negative values
are below.
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmsUnderscoreSize">
<summary>The thickness of the underscore character for this font.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmsUnderscorePosition">
<summary>The position of the underscore character for this font.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmpFamilyName">
<summary>The offset from the beginning of the structure to a string specifying the family name for the font.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmpFaceName">
<summary>
The offset from the beginning of the structure to a string specifying the typeface name for the font. (This typeface name corresponds to the name
specified in the <see cref="T:Win32Interop.Structs.LOGFONT"/> structure.)
</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmpStyleName">
<summary>The offset from the beginning of the structure to a string specifying the style name for the font.</summary>
</member>
<member name="F:Win32Interop.Structs.OUTLINETEXTMETRIC.otmpFullName">
<summary>
The offset from the beginning of the structure to a string specifying the full name for the font. This name is unique for the font and often
contains a version number or other identifying information.
</summary>
</member>
<member name="T:Win32Interop.Structs.GCP_RESULTS">
<summary>
The <see cref="T:Win32Interop.Structs.GCP_RESULTS"/> structure contains information about characters in a string. This structure receives the results of the
<see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> function. For some languages, the first element in the arrays may contain more, language-dependent
information.
</summary>
</member>
<member name="F:Win32Interop.Structs.GCP_RESULTS.lStructSize">
<summary>The size, in bytes, of the structure.</summary>
</member>
<member name="F:Win32Interop.Structs.GCP_RESULTS.lpOutString">
<summary>
A pointer to the buffer that receives the output string or is NULL if the output string is not needed. The output string is a version of the
original string that is in the order that will be displayed on a specified device. Typically the output string is identical to the original
string, but may be different if the string needs reordering and the GCP_REORDER flag is set or if the original string exceeds the maximum extent
and the GCP_MAXEXTENT flag is set.
</summary>
</member>
<member name="F:Win32Interop.Structs.GCP_RESULTS.lpOrder">
<summary>
<para>
A pointer to the array that receives ordering indexes or is NULL if the ordering indexes are not needed. However, its meaning depends on the
other elements of <see cref="T:Win32Interop.Structs.GCP_RESULTS"/>. If glyph indexes are to be returned, the indexes are for the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpGlyphs"/> array; if
glyphs indexes are not returned and <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpOrder"/> is requested, the indexes are for <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpOutString"/>. For example, in the
latter case the value of <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpOrder"/>[i] is the position of lpString[i] in the output string lpOutString.
</para>
<para>
This is typically used when <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> returns the GCP_REORDER flag, which indicates that the original string
needs reordering. For example, in Hebrew, in which the text runs from right to left, the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpOrder"/> array gives the exact
locations of each element in the original string.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.GCP_RESULTS.lpDX">
<summary>
<para>
A pointer to the array that receives the distances between adjacent character cells or is NULL if these distances are not needed. If glyph
rendering is done, the distances are for the glyphs not the characters, so the resulting array can be used with the
<see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> function.
</para>
<para>The distances in this array are in display order. To find the distance for the ith character in the original string, use the lpOrder array.</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.GCP_RESULTS.lpCaretPos">
<summary>
<para>
A pointer to the array that receives the caret position values or is NULL if caret positions are not needed. Each value specifies the caret
position immediately before the corresponding character. In some languages the position of the caret for each character may not be
immediately to the left of the character. For example, in Hebrew, in which the text runs from right to left, the caret position is to the
right of the character. If glyph ordering is done, <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpCaretPos"/> matches the original string, not the output string. This means
that some adjacent values may be the same.
</para>
<para>
The values in this array are in input order. To find the caret position value for the ith character in the original string, use the array as
follows:
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.GCP_RESULTS.lpClass">
<summary>
<para>
A pointer to the array that contains and/or receives character classifications. The values indicate how to lay out characters in the string
and are similar (but not identical) to the CT_CTYPE2 values returned by the GetStringTypeEx function. Each element of the array can be set to
zero or one of the following values.
</para>
<list type="table">
<item>
<term>GCPCLASS_ARABIC</term>
<description>Arabic character.</description>
</item>
<item>
<term>GCPCLASS_HEBREW</term>
<description>Hebrew character.</description>
</item>
<item>
<term>GCPCLASS_LATIN</term>
<description>Character from a Latin or other single-byte character set for a left-to-right language.</description>
</item>
<item>
<term>GCPCLASS_LATINNUMBER</term>
<description>Digit from a Latin or other single-byte character set for a left-to-right language.</description>
</item>
<item>
<term>GCPCLASS_LOCALNUMBER</term>
<description>Digit from the character set associated with the current font.</description>
</item>
</list>
<para>
In addition, the following can be used when supplying values in the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpClass"/> array with the GCP_CLASSIN flag.
</para>
<list type="table">
<item>
<term>GCPCLASS_LATINNUMERICSEPARATOR</term>
<description>Input only. Character used to separate Latin digits, such as a comma or decimal point.</description>
</item>
<item>
<term>GCPCLASS_LATINNUMERICTERMINATOR</term>
<description>Input only. Character used to terminate Latin digits, such as a plus or minus sign.</description>
</item>
<item>
<term>GCPCLASS_NEUTRAL</term>
<description>Input only. Character has no specific classification.</description>
</item>
<item>
<term>GCPCLASS_NUMERICSEPARATOR</term>
<description>Input only. Character used to separate digits, such as a comma or decimal point.</description>
</item>
</list>
<para>
For languages that use the GCP_REORDER flag, the following values can also be used with the GCP_CLASSIN flag. Unlike the preceding values,
which can be used anywhere in the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpClass"/> array, all of the following values are used only in the first location in the array.
All combine with other classifications.
</para>
<para>Note that GCPCLASS_PREBOUNDLTR and GCPCLASS_PREBOUNDRTL are mutually exclusive, as are GCPCLASSPOSTBOUNDLTR and GCPCLASSPOSTBOUNDRTL.</para>
<list type="table">
<item>
<term>GCPCLASS_PREBOUNDLTR</term>
<description>
Set <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpClass"/>[0] to GCPCLASS_PREBOUNDLTR to bind the string to left-to-right reading order before the string.
</description>
</item>
<item>
<term>GCPCLASS_PREBOUNDRTL</term>
<description>
Set <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpClass"/>[0] to GCPCLASS_PREBOUNDRTL to bind the string to right-to-left reading order before the string.
</description>
</item>
<item>
<term>GCPCLASS_POSTBOUNDLTR</term>
<description>
Set <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpClass"/>[0] to GCPCLASS_POSTBOUNDLTR to bind the string to left-to-right reading order after the string.
</description>
</item>
<item>
<term>GCPCLASS_POSTBOUNDRTL</term>
<description>
Set <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpClass"/>[0] to GCPCLASS_POSTBOUNDRTL to bind the string to right-to-left reading order after the string.
</description>
</item>
</list>
<para>
To force the layout of a character to be carried out in a specific way, preset the classification for the corresponding array element; the
function leaves such preset classifications unchanged and computes classifications only for array elements that have been set to zero. Preset
classifications are used only if the GCP_CLASSIN flag is set and the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpClass"/> array is supplied.
</para>
<para>
If <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> does not return GCP_REORDER for the current font, only the GCPCLASS_LATIN value is meaningful.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.GCP_RESULTS.lpGlyphs">
<summary>
<para>
A pointer to the array that receives the values identifying the glyphs used for rendering the string or is NULL if glyph rendering is not
needed. The number of glyphs in the array may be less than the number of characters in the original string if the string contains ligated
glyphs. Also if reordering is required, the order of the glyphs may not be sequential.
</para>
<para>
This array is useful if more than one operation is being done on a string which has any form of ligation, kerning or order-switching. Using
the values in this array for subsequent operations saves the time otherwise required to generate the glyph indices each time.
</para>
<para>
This array always contains glyph indices and the ETO_GLYPH_INDEX value must always be used when this array is used with the
<see cref="M:Win32Interop.Methods.Gdi32.ExtTextOut(System.IntPtr,System.Int32,System.Int32,System.UInt32,Win32Interop.Structs.RECT@,System.String,System.UInt32,System.Int32[])"/> function.
</para>
<para>
When GCP_LIGATE is used, you can limit the number of characters that will be ligated together. (In Arabic for example, three-character
ligations are common). This is done by setting the maximum required in lpGcpResults-&gt;lpGlyphs[0]. If no maximum is required, you should set
this field to zero.
</para>
<para>
For languages such as Arabic, where <see cref="M:Win32Interop.Methods.Gdi32.GetFontLanguageInfo(System.IntPtr)"/> returns the GCP_GLYPHSHAPE flag, the glyphs for a character will
be different depending on whether the character is at the beginning, middle, or end of a word. Typically, the first character in the input
string will also be the first character in a word, and the last character in the input string will be treated as the last character in a
word. However, if the displayed string is a subset of the complete string, such as when displaying a section of scrolled text, this may not
be true. In these cases, it is desirable to force the first or last characters to be shaped as not being initial or final forms. To do this,
again, the first location in the <see cref="F:Win32Interop.Structs.GCP_RESULTS.lpGlyphs"/> array is used by performing an OR operation of the ligation value above with the
values GCPGLYPH_LINKBEFORE and/or GCPGLYPH_LINKAFTER. For example, a value of GCPGLYPH_LINKBEFORE | 2 means that two-character ligatures are
the maximum required, and the first character in the string should be treated as if it is in the middle of a word.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.GCP_RESULTS.nGlyphs">
<summary>
On input, this member must be set to the size of the arrays pointed to by the array pointer members. On output, this is set to the number of
glyphs filled in, in the output arrays. If glyph substitution is not required (that is, each input character maps to exactly one glyph), this
member is the same as it is on input.
</summary>
</member>
<member name="F:Win32Interop.Structs.GCP_RESULTS.nMaxFit">
<summary>
The number of characters that fit within the extents specified by the nMaxExtent parameter of the
<see cref="M:Win32Interop.Methods.Gdi32.GetCharacterPlacement(System.IntPtr,System.String,System.Int32,System.Int32,Win32Interop.Structs.GCP_RESULTS@,System.UInt32)"/> function. If the GCP_MAXEXTENT or GCP_JUSTIFY value is set, this value may be less than the number of
characters in the original string. This member is set regardless of whether the GCP_MAXEXTENT or GCP_JUSTIFY value is specified. Unlike
<see cref="F:Win32Interop.Structs.GCP_RESULTS.nGlyphs"/>, which specifies the number of output glyphs, <see cref="F:Win32Interop.Structs.GCP_RESULTS.nMaxFit"/> refers to the number of characters from the input
string. For Latin SBCS languages, this will be the same.
</summary>
</member>
<member name="T:Win32Interop.Structs.ABCFLOAT">
<summary>
The <see cref="T:Win32Interop.Structs.ABCFLOAT"/> structure contains the A, B, and C widths of a font character.
</summary>
</member>
<member name="F:Win32Interop.Structs.ABCFLOAT.abcfA">
<summary>The A spacing of the character. The A spacing is the distance to add to the current position before drawing the character glyph.</summary>
</member>
<member name="F:Win32Interop.Structs.ABCFLOAT.abcfB">
<summary>The B spacing of the character. The B spacing is the width of the drawn portion of the character glyph.</summary>
</member>
<member name="F:Win32Interop.Structs.ABCFLOAT.abcfC">
<summary>
The C spacing of the character. The C spacing is the distance to add to the current position to provide white space to the right of the character
glyph.
</summary>
</member>
<member name="T:Win32Interop.Structs.HANDLETABLE">
<summary>
The <see cref="T:Win32Interop.Structs.HANDLETABLE"/> structure is an array of handles, each of which identifies a graphics device interface (GDI) object.
</summary>
</member>
<member name="F:Win32Interop.Structs.HANDLETABLE.objectHandle">
<summary>An array of handles.</summary>
</member>
<member name="T:Win32Interop.Structs.CHARSETINFO">
<summary>Contains information about a character set.</summary>
</member>
<member name="F:Win32Interop.Structs.CHARSETINFO.ciCharset">
<summary>Character set value.</summary>
</member>
<member name="F:Win32Interop.Structs.CHARSETINFO.ciACP">
<summary>Windows ANSI code page identifier. For a list of identifiers, see Code Page Identifiers.</summary>
</member>
<member name="F:Win32Interop.Structs.CHARSETINFO.fs">
<summary>
A <see cref="T:Win32Interop.Structs.FONTSIGNATURE"/> structure that identifies the Unicode subrange and the specific Windows ANSI character set/code page. Only one
code page will be set when this structure is set by the function.
</summary>
</member>
<member name="T:Win32Interop.Structs.GLYPHSET">
<summary>
The <see cref="T:Win32Interop.Structs.GLYPHSET"/> structure contains information about a range of Unicode code points.
</summary>
</member>
<member name="F:Win32Interop.Structs.GLYPHSET.cbThis">
<summary>The size, in bytes, of this structure.</summary>
</member>
<member name="F:Win32Interop.Structs.GLYPHSET.flAccel">
<summary>
<para>Flags describing the maximum size of the glyph indices. This member can be the following value.</para>
<list type="table">
<item>
<term>GS_8BIT_INDICES</term>
<description>Treat glyph indices as 8-bit wide values. Otherwise, they are 16-bit wide values.</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.GLYPHSET.cGlyphsSupported">
<summary>The total number of Unicode code points supported in the font.</summary>
</member>
<member name="F:Win32Interop.Structs.GLYPHSET.cRanges">
<summary>
The total number of Unicode ranges in <see cref="F:Win32Interop.Structs.GLYPHSET.ranges"/>.
</summary>
</member>
<member name="F:Win32Interop.Structs.GLYPHSET.ranges">
<summary>Array of Unicode ranges that are supported in the font.</summary>
</member>
<member name="T:Win32Interop.Structs.ENHMETAHEADER">
<summary>
<para>
The <see cref="T:Win32Interop.Structs.ENHMETAHEADER"/> structure contains enhanced-metafile data such as the dimensions of the picture stored in the enhanced
metafile, the count of records in the enhanced metafile, the resolution of the device on which the picture was created, and so on.
</para>
<para>This structure is always the first record in an enhanced metafile.</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.iType">
<summary>The record type. This member must specify the value assigned to the EMR_HEADER constant.</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.nSize">
<summary>The structure size, in bytes.</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.rclBounds">
<summary>
The dimensions, in device units, of the smallest rectangle that can be drawn around the picture stored in the metafile. This rectangle is
supplied by graphics device interface (GDI). Its dimensions include the right and bottom edges.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.rclFrame">
<summary>
The dimensions, in .01 millimeter units, of a rectangle that surrounds the picture stored in the metafile. This rectangle must be supplied by the
application that creates the metafile. Its dimensions include the right and bottom edges.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.dSignature">
<summary>A signature. This member must specify the value assigned to the ENHMETA_SIGNATURE constant.</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.nVersion">
<summary>The metafile version. The current version value is 0x10000.</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.nBytes">
<summary>The size of the enhanced metafile, in bytes.</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.nRecords">
<summary>The number of records in the enhanced metafile.</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.nHandles">
<summary>The number of handles in the enhanced-metafile handle table. (Index zero in this table is reserved.)</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.sReserved">
<summary>Reserved; must be zero.</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.nDescription">
<summary>
The number of characters in the array that contains the description of the enhanced metafile's contents. This member should be set to zero if the
enhanced metafile does not contain a description string.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.offDescription">
<summary>
The offset from the beginning of the <see cref="T:Win32Interop.Structs.ENHMETAHEADER"/> structure to the array that contains the description of the enhanced metafile's
contents. This member should be set to zero if the enhanced metafile does not contain a description string.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.nPalEntries">
<summary>The number of entries in the enhanced metafile's palette.</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.szlDevice">
<summary>The resolution of the reference device, in pixels.</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.szlMillimeters">
<summary>The resolution of the reference device, in millimeters.</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.cbPixelFormat">
<summary>
The size of the last recorded pixel format in a metafile. If a pixel format is set in a reference DC at the start of recording,
<see cref="F:Win32Interop.Structs.ENHMETAHEADER.cbPixelFormat"/> is set to the size of the <see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/>. When no pixel format is set when a metafile is
recorded, this member is set to zero. If more than a single pixel format is set, the header points to the last pixel format.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.offPixelFormat">
<summary>
The offset of pixel format used when recording a metafile. If a pixel format is set in a reference DC at the start of recording or during
recording, <see cref="F:Win32Interop.Structs.ENHMETAHEADER.offPixelFormat"/> is set to the offset of the <see cref="T:Win32Interop.Structs.PIXELFORMATDESCRIPTOR"/> in the metafile. If no pixel format is
set when a metafile is recorded, this member is set to zero. If more than a single pixel format is set, the header points to the last pixel
format.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.bOpenGL">
<summary>
Indicates whether any OpenGL records are present in a metafile. <see cref="F:Win32Interop.Structs.ENHMETAHEADER.bOpenGL"/> is a simple Boolean flag that you can use to determine
whether an enhanced metafile requires OpenGL handling. When a metafile contains OpenGL records, <see cref="F:Win32Interop.Structs.ENHMETAHEADER.bOpenGL"/> is TRUE; otherwise it is
FALSE.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENHMETAHEADER.szlMicrometers">
<summary>The size of the reference device, in micrometers.</summary>
</member>
<member name="T:Win32Interop.Structs.METARECORD">
<summary>
The <see cref="T:Win32Interop.Structs.METARECORD"/> structure contains a Windows-format metafile record.
</summary>
</member>
<member name="F:Win32Interop.Structs.METARECORD.rdSize">
<summary>The size, in words, of the record.</summary>
</member>
<member name="F:Win32Interop.Structs.METARECORD.rdFunction">
<summary>The function number.</summary>
</member>
<member name="F:Win32Interop.Structs.METARECORD.rdParm">
<summary>An array of words containing the function parameters, in reverse of the order they are passed to the function.</summary>
</member>
<member name="T:Win32Interop.Structs.FONTSIGNATURE">
<summary>Contains information identifying the code pages and Unicode subranges for which a given font provides glyphs.</summary>
</member>
<member name="F:Win32Interop.Structs.FONTSIGNATURE.fsUsb">
<summary>
A 128-bit Unicode subset bitfield (USB) identifying up to 126 Unicode subranges. Each bit, except the two most significant bits, represents a
single subrange. The most significant bit is always 1 and identifies the bitfield as a font signature; the second most significant bit is
reserved and must be 0. Unicode subranges are numbered in accordance with the ISO 10646 standard. For more information, see Unicode Subset
Bitfields.
</summary>
</member>
<member name="F:Win32Interop.Structs.FONTSIGNATURE.fsCsb">
<summary>
A 64-bit, code-page bitfield (CPB) that identifies a specific character set or code page. Code pages are in the lower 32 bits of this bitfield.
The high 32 are used for non-Windows code pages. For more information, see Code Page Bitfields.
</summary>
</member>
<member name="T:Win32Interop.Structs.RASTERIZER_STATUS">
<summary>
The <see cref="T:Win32Interop.Structs.RASTERIZER_STATUS"/> structure contains information about whether TrueType is installed. This structure is filled when an
application calls the <see cref="M:Win32Interop.Methods.Gdi32.GetRasterizerCaps(Win32Interop.Structs.RASTERIZER_STATUS@,System.UInt32)"/> function.
</summary>
</member>
<member name="F:Win32Interop.Structs.RASTERIZER_STATUS.nSize">
<summary>
The size, in bytes, of the <see cref="T:Win32Interop.Structs.RASTERIZER_STATUS"/> structure.
</summary>
</member>
<member name="F:Win32Interop.Structs.RASTERIZER_STATUS.wFlags">
<summary>
Specifies whether at least one TrueType font is installed and whether TrueType is enabled. This value is TT_AVAILABLE, TT_ENABLED, or both if
TrueType is on the system.
</summary>
</member>
<member name="F:Win32Interop.Structs.RASTERIZER_STATUS.nLanguageID">
<summary>The language in the system's Setup.inf file.</summary>
</member>
<member name="T:Win32Interop.Structs.LOGCOLORSPACE">
<summary>
The <see cref="T:Win32Interop.Structs.LOGCOLORSPACE"/> structure contains information that defines a logical color space.
</summary>
</member>
<member name="F:Win32Interop.Structs.LOGCOLORSPACE.lcsSignature">
<summary>Color space signature. At present, this member should always be set to LCS_SIGNATURE.</summary>
</member>
<member name="F:Win32Interop.Structs.LOGCOLORSPACE.lcsVersion">
<summary>Version number; must be 0x400.</summary>
</member>
<member name="F:Win32Interop.Structs.LOGCOLORSPACE.lcsSize">
<summary>Size of this structure, in bytes.</summary>
</member>
<member name="F:Win32Interop.Structs.LOGCOLORSPACE.lcsCSType">
<summary>
<para>Color space type. The member can be one of the following values.</para>
<list type="table">
<item>
<term>LCS_CALIBRATED_RGB</term>
<description>
Color values are calibrated RGB values. The values are translated using the endpoints specified by the <see cref="F:Win32Interop.Structs.LOGCOLORSPACE.lcsEndpoints"/>
member before being passed to the device.
</description>
</item>
<item>
<term>LCS_sRGB</term>
<description>Color values are values are sRGB values.</description>
</item>
<item>
<term>LCS_WINDOWS_COLOR_SPACE</term>
<description>Color values are Windows default color space color values.</description>
</item>
</list>
<para>
If LCS_CALIBRATED_RGB is not specified, the <see cref="F:Win32Interop.Structs.LOGCOLORSPACE.lcsEndpoints"/> member is ignored.
</para>
</summary>
</member>
<member name="F:Win32Interop.Structs.LOGCOLORSPACE.lcsIntent">
<summary>
<para>The gamut mapping method. This member can be one of the following values.</para>
<list type="table">
<item>
<term>LCS_GM_ABS_COLORIMETRIC</term>
<description>Match</description>
</item>
<item>
<term>LCS_GM_BUSINESS</term>
<description>Graphic</description>
</item>
<item>
<term>LCS_GM_GRAPHICS</term>
<description>Proof</description>
</item>
<item>
<term>LCS_GM_IMAGES</term>
<description>Picture</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.LOGCOLORSPACE.lcsEndpoints">
<summary>Red, green, blue endpoints.</summary>
</member>
<member name="F:Win32Interop.Structs.LOGCOLORSPACE.lcsGammaRed">
<summary>Scale of the red coordinate.</summary>
</member>
<member name="F:Win32Interop.Structs.LOGCOLORSPACE.lcsGammaGreen">
<summary>Scale of the green coordinate.</summary>
</member>
<member name="F:Win32Interop.Structs.LOGCOLORSPACE.lcsGammaBlue">
<summary>Scale of the blue coordinate.</summary>
</member>
<member name="F:Win32Interop.Structs.LOGCOLORSPACE.lcsFilename">
<summary>
A null-terminated string that names a color profile file. This member is typically set to zero, but may be used to set the color space to be
exactly as specified by the color profile. This is useful for devices that input color values for a specific printer, or when using an
installable image color matcher. If a color profile is specified, all other members of this structure should be set to reasonable values, even if
the values are not completely accurate.
</summary>
</member>
<member name="T:Win32Interop.Structs.ABC">
<summary>
The <see cref="T:Win32Interop.Structs.ABC"/> structure contains the width of a character in a TrueType font.
</summary>
</member>
<member name="F:Win32Interop.Structs.ABC.abcA">
<summary>The A spacing of the character. The A spacing is the distance to add to the current position before drawing the character glyph.</summary>
</member>
<member name="F:Win32Interop.Structs.ABC.abcB">
<summary>The B spacing of the character. The B spacing is the width of the drawn portion of the character glyph.</summary>
</member>
<member name="F:Win32Interop.Structs.ABC.abcC">
<summary>
The C spacing of the character. The C spacing is the distance to add to the current position to provide white space to the right of the character
glyph.
</summary>
</member>
<member name="T:Win32Interop.Structs.KERNINGPAIR">
<summary>
The <see cref="T:Win32Interop.Structs.KERNINGPAIR"/> structure defines a kerning pair.
</summary>
</member>
<member name="F:Win32Interop.Structs.KERNINGPAIR.wFirst">
<summary>The character code for the first character in the kerning pair.</summary>
</member>
<member name="F:Win32Interop.Structs.KERNINGPAIR.wSecond">
<summary>The character code for the second character in the kerning pair.</summary>
</member>
<member name="F:Win32Interop.Structs.KERNINGPAIR.iKernAmount">
<summary>
The amount this pair will be kerned if they appear side by side in the same font and size. This value is typically negative, because pair kerning
usually results in two characters being set more tightly than normal. The value is specified in logical units; that is, it depends on the current
mapping mode.
</summary>
</member>
<member name="T:Win32Interop.Structs.GLYPHMETRICS">
<summary>
The <see cref="T:Win32Interop.Structs.GLYPHMETRICS"/> structure contains information about the placement and orientation of a glyph in a character cell.
</summary>
</member>
<member name="F:Win32Interop.Structs.GLYPHMETRICS.gmBlackBoxX">
<summary>The width of the smallest rectangle that completely encloses the glyph (its black box).</summary>
</member>
<member name="F:Win32Interop.Structs.GLYPHMETRICS.gmBlackBoxY">
<summary>The height of the smallest rectangle that completely encloses the glyph (its black box).</summary>
</member>
<member name="F:Win32Interop.Structs.GLYPHMETRICS.gmptGlyphOrigin">
<summary>The x- and y-coordinates of the upper left corner of the smallest rectangle that completely encloses the glyph.</summary>
</member>
<member name="F:Win32Interop.Structs.GLYPHMETRICS.gmCellIncX">
<summary>The horizontal distance from the origin of the current character cell to the origin of the next character cell.</summary>
</member>
<member name="F:Win32Interop.Structs.GLYPHMETRICS.gmCellIncY">
<summary>The vertical distance from the origin of the current character cell to the origin of the next character cell.</summary>
</member>
<member name="T:Win32Interop.Structs.ENUMLOGFONTEX">
<summary>
The <see cref="T:Win32Interop.Structs.ENUMLOGFONTEX"/> structure contains information about an enumerated font.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENUMLOGFONTEX.elfLogFont">
<summary>
A <see cref="T:Win32Interop.Structs.LOGFONT"/> structure that contains values defining the font attributes.
</summary>
</member>
<member name="F:Win32Interop.Structs.ENUMLOGFONTEX.elfFullName">
<summary>The unique name of the font. For example, ABC Font Company TrueType Bold Italic Sans Serif.</summary>
</member>
<member name="F:Win32Interop.Structs.ENUMLOGFONTEX.elfStyle">
<summary>The style of the font. For example, Bold Italic.</summary>
</member>
<member name="F:Win32Interop.Structs.ENUMLOGFONTEX.elfScript">
<summary>The script, that is, the character set, of the font. For example, Cyrillic.</summary>
</member>
<member name="T:Win32Interop.Structs.DESIGNVECTOR">
<summary>
The <see cref="T:Win32Interop.Structs.DESIGNVECTOR"/> structure is used by an application to specify values for the axes of a multiple master font.
</summary>
</member>
<member name="F:Win32Interop.Structs.DESIGNVECTOR.dvReserved">
<summary>Reserved. Must be STAMP_DESIGNVECTOR.</summary>
</member>
<member name="F:Win32Interop.Structs.DESIGNVECTOR.dvNumAxes">
<summary>
Number of values in the <see cref="F:Win32Interop.Structs.DESIGNVECTOR.dvValues"/> array.
</summary>
</member>
<member name="F:Win32Interop.Structs.DESIGNVECTOR.dvValues">
<summary>
An array specifying the values of the axes of a multiple master OpenType font. This array corresponds to the <see cref="F:Win32Interop.Structs.AXESLIST.axlAxisInfo"/>
array in the <see cref="T:Win32Interop.Structs.AXESLIST"/> structure.
</summary>
</member>
<member name="T:Win32Interop.Structs.FIXED">
<summary>
The <see cref="T:Win32Interop.Structs.FIXED"/> structure contains the integral and fractional parts of a fixed-point real number.
</summary>
</member>
<member name="F:Win32Interop.Structs.FIXED.fract">
<summary>The fractional part of the number.</summary>
</member>
<member name="F:Win32Interop.Structs.FIXED.value">
<summary>The integer part of the number.</summary>
</member>
<member name="T:Win32Interop.Structs.RGNDATAHEADER">
<summary>
The <see cref="T:Win32Interop.Structs.RGNDATAHEADER"/> structure describes the data returned by the <see cref="M:Win32Interop.Methods.Gdi32.GetRegionData(System.IntPtr,System.UInt32,System.IntPtr)"/> function.
</summary>
</member>
<member name="F:Win32Interop.Structs.RGNDATAHEADER.dwSize">
<summary>The size, in bytes, of the header.</summary>
</member>
<member name="F:Win32Interop.Structs.RGNDATAHEADER.iType">
<summary>The type of region. This value must be RDH_RECTANGLES.</summary>
</member>
<member name="F:Win32Interop.Structs.RGNDATAHEADER.nCount">
<summary>The number of rectangles that make up the region.</summary>
</member>
<member name="F:Win32Interop.Structs.RGNDATAHEADER.nRgnSize">
<summary>
The size of the <see cref="T:Win32Interop.Structs.RGNDATA"/> buffer required to receive the <see cref="T:Win32Interop.Structs.RECT"/> structures that make up the region. If the size is not
known, this member can be zero.
</summary>
</member>
<member name="F:Win32Interop.Structs.RGNDATAHEADER.rcBound">
<summary>A bounding rectangle for the region in logical units.</summary>
</member>
<member name="T:Win32Interop.Structs.PANOSE">
<summary>
The <see cref="T:Win32Interop.Structs.PANOSE"/> structure describes the PANOSE font-classification values for a TrueType font. These characteristics are then used to
associate the font with other fonts of similar appearance but different names.
</summary>
</member>
<member name="F:Win32Interop.Structs.PANOSE.bFamilyType">
<summary>
<para>For Latin fonts, one of one of the following values.</para>
<list type="table">
<item>
<term>PAN_ANY</term>
<description>Any</description>
</item>
<item>
<term>PAN_NO_FIT</term>
<description>No fit</description>
</item>
<item>
<term>PAN_FAMILY_TEXT_DISPLAY</term>
<description>Text and display</description>
</item>
<item>
<term>PAN_FAMILY_SCRIPT</term>
<description>Script</description>
</item>
<item>
<term>PAN_FAMILY_DECORATIVE</term>
<description>Decorative</description>
</item>
<item>
<term>PAN_FAMILY_PICTORIAL</term>
<description>Pictorial</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.PANOSE.bSerifStyle">
<summary>
<para>The serif style. For Latin fonts, one of the following values.</para>
<list type="table">
<item>
<term>PAN_ANY</term>
<description>Any</description>
</item>
<item>
<term>PAN_NO_FIT</term>
<description>No fit</description>
</item>
<item>
<term>PAN_SERIF_COVE</term>
<description>Cove</description>
</item>
<item>
<term>PAN_SERIF_OBTUSE_COVE</term>
<description>Obtuse cove</description>
</item>
<item>
<term>PAN_SERIF_SQUARE_COVE</term>
<description>Square cove</description>
</item>
<item>
<term>PAN_SERIF_OBTUSE_SQUARE_COVE</term>
<description>Obtuse square cove</description>
</item>
<item>
<term>PAN_SERIF_SQUARE</term>
<description>Square</description>
</item>
<item>
<term>PAN_SERIF_THIN</term>
<description>Thin</description>
</item>
<item>
<term>PAN_SERIF_BONE</term>
<description>Bone</description>
</item>
<item>
<term>PAN_SERIF_EXAGGERATED</term>
<description>Exaggerated</description>
</item>
<item>
<term>PAN_SERIF_TRIANGLE</term>
<description>Triangle</description>
</item>
<item>
<term>PAN_SERIF_NORMAL_SANS</term>
<description>Normal sans serif</description>
</item>
<item>
<term>PAN_SERIF_OBTUSE_SANS</term>
<description>Obtuse sans serif</description>
</item>
<item>
<term>PAN_SERIF_PERP_SANS</term>
<description>Perp sans serif</description>
</item>
<item>
<term>PAN_SERIF_FLARED</term>
<description>Flared</description>
</item>
<item>
<term>PAN_SERIF_ROUNDED</term>
<description>Rounded</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.PANOSE.bWeight">
<summary>
<para>For Latin fonts, one of the following values.</para>
<list type="table">
<item>
<term>PAN_ANY</term>
<description>Any</description>
</item>
<item>
<term>PAN_NO_FIT</term>
<description>No fit</description>
</item>
<item>
<term>PAN_WEIGHT_VERY_LIGHT</term>
<description>Very light</description>
</item>
<item>
<term>PAN_WEIGHT_LIGHT</term>
<description>Light</description>
</item>
<item>
<term>PAN_WEIGHT_THIN</term>
<description>Thin</description>
</item>
<item>
<term>PAN_WEIGHT_BOOK</term>
<description>Book</description>
</item>
<item>
<term>PAN_WEIGHT_MEDIUM</term>
<description>Medium</description>
</item>
<item>
<term>PAN_WEIGHT_DEMI</term>
<description>Demibold</description>
</item>
<item>
<term>PAN_WEIGHT_BOLD</term>
<description>Bold</description>
</item>
<item>
<term>PAN_WEIGHT_HEAVY</term>
<description>Heavy</description>
</item>
<item>
<term>PAN_WEIGHT_BLACK</term>
<description>Black</description>
</item>
<item>
<term>PAN_WEIGHT_NORD</term>
<description>Nord</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.PANOSE.bProportion">
<summary>
<para>For Latin fonts, one of the following values.</para>
<list type="table">
<item>
<term>PAN_ANY</term>
<description>Any</description>
</item>
<item>
<term>PAN_NO_FIT</term>
<description>No fit</description>
</item>
<item>
<term>PAN_PROP_OLD_STYLE</term>
<description>Old style</description>
</item>
<item>
<term>PAN_PROP_MODERN</term>
<description>Modern</description>
</item>
<item>
<term>PAN_PROP_EVEN_WIDTH</term>
<description>Even width</description>
</item>
<item>
<term>PAN_PROP_EXPANDED</term>
<description>Expanded</description>
</item>
<item>
<term>PAN_PROP_CONDENSED</term>
<description>Condensed</description>
</item>
<item>
<term>PAN_PROP_VERY_EXPANDED</term>
<description>Very expanded</description>
</item>
<item>
<term>PAN_PROP_VERY_CONDENSED</term>
<description>Very condensed</description>
</item>
<item>
<term>PAN_PROP_MONOSPACED</term>
<description>Monospaced</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.PANOSE.bContrast">
<summary>
<para>For Latin fonts, one of the following values.</para>
<list type="table">
<item>
<term>PAN_ANY</term>
<description>Any</description>
</item>
<item>
<term>PAN_NO_FIT</term>
<description>No fit</description>
</item>
<item>
<term>PAN_CONTRAST_NONE</term>
<description>None</description>
</item>
<item>
<term>PAN_CONTRAST_VERY_LOW</term>
<description>Very low</description>
</item>
<item>
<term>PAN_CONTRAST_LOW</term>
<description>Low</description>
</item>
<item>
<term>PAN_CONTRAST_MEDIUM_LOW</term>
<description>Medium low</description>
</item>
<item>
<term>PAN_CONTRAST_MEDIUM</term>
<description>Medium</description>
</item>
<item>
<term>PAN_CONTRAST_MEDIUM_HIGH</term>
<description>Medium high</description>
</item>
<item>
<term>PAN_CONTRAST_HIGH</term>
<description>High</description>
</item>
<item>
<term>PAN_CONTRAST_VERY_HIGH</term>
<description>Very high</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.PANOSE.bStrokeVariation">
<summary>
<para>For Latin fonts, one of the following values.</para>
<list type="table">
<item>
<term>PAN_ANY</term>
<description>Any</description>
</item>
<item>
<term>PAN_NO_FIT</term>
<description>No fit</description>
</item>
<item>
<term>PAN_STROKE_GRADUAL_DIAG</term>
<description>Gradual/diagonal</description>
</item>
<item>
<term>PAN_STROKE_GRADUAL_TRAN</term>
<description>Gradual/transitional</description>
</item>
<item>
<term>PAN_STROKE_GRADUAL_VERT</term>
<description>Gradual/vertical</description>
</item>
<item>
<term>PAN_STROKE_GRADUAL_HORZ</term>
<description>Gradual/horizontal</description>
</item>
<item>
<term>PAN_STROKE_RAPID_VERT</term>
<description>Rapid/vertical</description>
</item>
<item>
<term>PAN_STROKE_RAPID_HORZ</term>
<description>Rapid/horizontal</description>
</item>
<item>
<term>PAN_STROKE_INSTANT_VERT</term>
<description>Instant/vertical</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.PANOSE.bArmStyle">
<summary>
<para>For Latin fonts, one of the following values.</para>
<list type="table">
<item>
<term>PAN_ANY</term>
<description>Any</description>
</item>
<item>
<term>PAN_NO_FIT</term>
<description>No fit</description>
</item>
<item>
<term>PAN_STRAIGHT_ARMS_HORZ</term>
<description>Straight arms/horizontal</description>
</item>
<item>
<term>PAN_STRAIGHT_ARMS_WEDGE</term>
<description>Straight arms/wedge</description>
</item>
<item>
<term>PAN_STRAIGHT_ARMS_VERT</term>
<description>Straight arms/vertical</description>
</item>
<item>
<term>PAN_STRAIGHT_ARMS_SINGLE_SERIF</term>
<description>Straight arms/single-serif</description>
</item>
<item>
<term>PAN_STRAIGHT_ARMS_DOUBLE_SERIF</term>
<description>Straight arms/double-serif</description>
</item>
<item>
<term>PAN_BENT_ARMS_HORZ</term>
<description>Nonstraight arms/horizontal</description>
</item>
<item>
<term>PAN_BENT_ARMS_WEDGE</term>
<description>Nonstraight arms/wedge</description>
</item>
<item>
<term>PAN_BENT_ARMS_VERT</term>
<description>Nonstraight arms/vertical</description>
</item>
<item>
<term>PAN_BENT_ARMS_SINGLE_SERIF</term>
<description>Nonstraight arms/single-serif</description>
</item>
<item>
<term>PAN_BENT_ARMS_DOUBLE_SERIF</term>
<description>Nonstraight arms/double-serif</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.PANOSE.bLetterform">
<summary>
<para>For Latin fonts, one of the following values.</para>
<list type="table">
<item>
<term>PAN_ANY</term>
<description>Any</description>
</item>
<item>
<term>PAN_NO_FIT</term>
<description>No fit</description>
</item>
<item>
<term>PAN_LETT_NORMAL_CONTACT</term>
<description>Normal/contact</description>
</item>
<item>
<term>PAN_LETT_NORMAL_WEIGHTED</term>
<description>Normal/weighted</description>
</item>
<item>
<term>PAN_LETT_NORMAL_BOXED</term>
<description>Normal/boxed</description>
</item>
<item>
<term>PAN_LETT_NORMAL_FLATTENED</term>
<description>Normal/flattened</description>
</item>
<item>
<term>PAN_LETT_NORMAL_ROUNDED</term>
<description>Normal/rounded</description>
</item>
<item>
<term>PAN_LETT_NORMAL_OFF_CENTER</term>
<description>Normal/off center</description>
</item>
<item>
<term>PAN_LETT_NORMAL_SQUARE</term>
<description>Normal/square</description>
</item>
<item>
<term>PAN_LETT_OBLIQUE_CONTACT</term>
<description>Oblique/contact</description>
</item>
<item>
<term>PAN_LETT_OBLIQUE_WEIGHTED</term>
<description>Oblique/weighted</description>
</item>
<item>
<term>PAN_LETT_OBLIQUE_BOXED</term>
<description>Oblique/boxed</description>
</item>
<item>
<term>PAN_LETT_OBLIQUE_FLATTENED</term>
<description>Oblique/flattened</description>
</item>
<item>
<term>PAN_LETT_OBLIQUE_ROUNDED</term>
<description>Oblique/rounded</description>
</item>
<item>
<term>PAN_LETT_OBLIQUE_OFF_CENTER</term>
<description>Oblique/off center</description>
</item>
<item>
<term>PAN_LETT_OBLIQUE_SQUARE</term>
<description>Oblique/square</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.PANOSE.bMidline">
<summary>
<para>For Latin fonts, one of the following values.</para>
<list type="table">
<item>
<term>PAN_ANY</term>
<description>Any</description>
</item>
<item>
<term>PAN_NO_FIT</term>
<description>No fit</description>
</item>
<item>
<term>PAN_MIDLINE_STANDARD_TRIMMED</term>
<description>Standard/trimmed</description>
</item>
<item>
<term>PAN_MIDLINE_STANDARD_POINTED</term>
<description>Standard/pointed</description>
</item>
<item>
<term>PAN_MIDLINE_STANDARD_SERIFED</term>
<description>Standard/serifed</description>
</item>
<item>
<term>PAN_MIDLINE_HIGH_TRIMMED</term>
<description>High/trimmed</description>
</item>
<item>
<term>PAN_MIDLINE_HIGH_POINTED</term>
<description>High/pointed</description>
</item>
<item>
<term>PAN_MIDLINE_HIGH_SERIFED</term>
<description>High/serifed</description>
</item>
<item>
<term>PAN_MIDLINE_CONSTANT_TRIMMED</term>
<description>Constant/trimmed</description>
</item>
<item>
<term>PAN_MIDLINE_CONSTANT_POINTED</term>
<description>Constant/pointed</description>
</item>
<item>
<term>PAN_MIDLINE_CONSTANT_SERIFED</term>
<description>Constant/serifed</description>
</item>
<item>
<term>PAN_MIDLINE_LOW_TRIMMED</term>
<description>Low/trimmed</description>
</item>
<item>
<term>PAN_MIDLINE_LOW_POINTED</term>
<description>Low/pointed</description>
</item>
<item>
<term>PAN_MIDLINE_LOW_SERIFED</term>
<description>Low/serifed</description>
</item>
</list>
</summary>
</member>
<member name="F:Win32Interop.Structs.PANOSE.bXHeight">
<summary>
<para>For Latin fonts, one of the following values.</para>
<list type="table">
<item>
<term>PAN_ANY</term>
<description>Any</description>
</item>
<item>
<term>PAN_NO_FIT</term>
<description>No fit</description>
</item>
<item>
<term>PAN_XHEIGHT_CONSTANT_SMALL</term>
<description>Constant/small</description>
</item>
<item>
<term>PAN_XHEIGHT_CONSTANT_STD</term>
<description>Constant/standard</description>
</item>
<item>
<term>PAN_XHEIGHT_CONSTANT_LARGE</term>
<description>Constant/large</description>
</item>
<item>
<term>PAN_XHEIGHT_DUCKING_SMALL</term>
<description>Ducking/small</description>
</item>
<item>
<term>PAN_XHEIGHT_DUCKING_STD</term>
<description>Ducking/standard</description>
</item>
<item>
<term>PAN_XHEIGHT_DUCKING_LARGE</term>
<description>Ducking/large</description>
</item>
</list>
</summary>
</member>
<member name="T:Win32Interop.Structs.RECTL">
<summary>
The <see cref="T:Win32Interop.Structs.RECTL"/> structure defines the coordinates of the upper-left and lower-right corners of a rectangle.
</summary>
</member>
<member name="F:Win32Interop.Structs.RECTL.left">
<summary>The x-coordinate of the upper-left corner of the rectangle.</summary>
</member>
<member name="F:Win32Interop.Structs.RECTL.top">
<summary>The y-coordinate of the upper-left corner of the rectangle.</summary>
</member>
<member name="F:Win32Interop.Structs.RECTL.right">
<summary>The x-coordinate of the lower-right corner of the rectangle.</summary>
</member>
<member name="F:Win32Interop.Structs.RECTL.bottom">
<summary>The y-coordinate of the lower-right corner of the rectangle.</summary>
</member>
<member name="T:Win32Interop.Structs.CIEXYZTRIPLE">
<summary>
The <see cref="T:Win32Interop.Structs.CIEXYZTRIPLE"/> structure contains the x, y, and z coordinates of the three colors that correspond to the red, green, and blue
endpoints for a specified logical color space.
</summary>
</member>
<member name="F:Win32Interop.Structs.CIEXYZTRIPLE.ciexyzRed">
<summary>The xyz coordinates of red endpoint.</summary>
</member>
<member name="F:Win32Interop.Structs.CIEXYZTRIPLE.ciexyzGreen">
<summary>The xyz coordinates of green endpoint.</summary>
</member>
<member name="F:Win32Interop.Structs.CIEXYZTRIPLE.ciexyzBlue">
<summary>The xyz coordinates of blue endpoint.</summary>
</member>
<member name="T:Win32Interop.Structs.WCRANGE">
<summary>
The <see cref="T:Win32Interop.Structs.WCRANGE"/> structure specifies a range of Unicode characters.
</summary>
</member>
<member name="F:Win32Interop.Structs.WCRANGE.wcLow">
<summary>Low Unicode code point in the range of supported Unicode code points.</summary>
</member>
<member name="F:Win32Interop.Structs.WCRANGE.cGlyphs">
<summary>Number of supported Unicode code points in this range.</summary>
</member>
<member name="T:Win32Interop.Structs.CIEXYZ">
<summary>
The <see cref="T:Win32Interop.Structs.CIEXYZ"/> structure contains the x, y, and z coordinates of a specific color in a specified color space.
</summary>
</member>
<member name="F:Win32Interop.Structs.CIEXYZ.ciexyzX">
<summary>The x coordinate in fix point (2.30).</summary>
</member>
<member name="F:Win32Interop.Structs.CIEXYZ.ciexyzY">
<summary>The y coordinate in fix point (2.30).</summary>
</member>
<member name="F:Win32Interop.Structs.CIEXYZ.ciexyzZ">
<summary>The z coordinate in fix point (2.30).</summary>
</member>
<member name="T:Win32Interop.Structs.ABCFloat">
<summary>The ABCFLOAT structure contains the A, B, and C widths of a font character.</summary>
<remarks>
<para>The A, B, and C widths are measured along the base line of the font.</para>
<para>
The character increment (total width) of a character is the sum of the A, B, and C spaces. Either the A or the C space can be negative to
indicate underhangs or overhangs.
</para>
</remarks>
</member>
<member name="F:Win32Interop.Structs.ABCFloat.abcfA">
<summary>Specifies the A spacing of the character. The A spacing is the distance to add to the current position before drawing the character glyph.</summary>
</member>
<member name="F:Win32Interop.Structs.ABCFloat.abcfB">
<summary>Specifies the B spacing of the character. The B spacing is the width of the drawn portion of the character glyph.</summary>
</member>
<member name="F:Win32Interop.Structs.ABCFloat.abcfC">
<summary>
Specifies the C spacing of the character. The C spacing is the distance to add to the current position to provide white space to the right of the
character glyph.
</summary>
</member>
</members>
</doc>