Mini Kabibi Habibi

Current Path : C:/Program Files/SafeExamBrowser/Application/
Upload File :
Current File : C:/Program Files/SafeExamBrowser/Application/KGySoft.Drawing.Core.xml

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>KGySoft.Drawing.Core</name>
    </assembly>
    <members>
        <member name="T:KGySoft.Drawing.DrawingCoreModule">
            <summary>
            Represents the <c>KGySoft.Drawing.Core</c> module.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.DrawingCoreModule.Initialize">Initialize</see> method for details.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.DrawingCoreModule.Initialize">
             <summary>
             Initializes the <c>KGySoft.Drawing.Core</c> module. It initializes the resource manager for string resources and registers its central management
             in the <a href="http://docs.kgysoft.net/corelibraries/html/T_KGySoft_LanguageSettings.htm">LanguageSettings</a> class.
             </summary>
             <remarks>
             <note>The module initializer is executed automatically when any member is accessed in the module for the first time. This method is public to able
             to trigger module initialization without performing any other operation. Normally you don't need to call it explicitly but it can be useful if you use
             the KGy SOFT Drawing Core Libraries in an application and you want to configure resource management on starting the application via
             the <a href="http://docs.kgysoft.net/corelibraries/html/T_KGySoft_LanguageSettings.htm">LanguageSettings</a> class.
             In such case you can call this method before configuring language settings to make sure that the resources of
             the <c>KGySoft.Drawing.Core.dll</c> are also affected by the settings.</note>
             </remarks>
             <example>
             The following example demonstrates how to initialize the <c>KGySoft.Drawing.Core</c> module in an application (you don't really need to do this
             if you use KGy SOFT Drawing Core Libraries from a class library):
             <code lang="C#"><![CDATA[
             using KGySoft;
             using KGySoft.Drawing;
             using KGySoft.Resources;
             
             public class Example
             {
                 public static void Main()
                 {
                     // To make sure that configuring LanguageSettings affects also the resources in KGySoft.Drawing.Core
                     DrawingCoreModule.Initialize();
            
                     // Opting in to use compiled and .resx resources for the application
                     LanguageSettings.DynamicResourceManagersSource = ResourceManagerSources.CompiledAndResX;
                     LanguageSettings.DisplayLanguage = MyConfigs.GetLastlyUsedLanguage(); // Get some CultureInfo
             
                     // Optional: To add possibly new resource entries to the localization of the current language
                     LanguageSettings.EnsureInvariantResourcesMerged();
            
                     // Now you can launch the actual application
                     LaunchMyApplication(); // whatever your app actually does
                 }
             }]]></code>
             </example>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.ColorSpaceHelper">
            <summary>
            A helper class containing low-level conversion methods for <see cref="T:System.Byte">byte</see>, <see cref="T:System.UInt16">ushort</see> and <see cref="T:System.Single">float</see>
            types to convert color components using the sRGB and linear color spaces.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.ToFloat(System.Byte)">
            <summary>
            Converts a <see cref="T:System.Byte">byte</see> to a floating-point value between 0 and 1 without changing the color space.
            </summary>
            <param name="value">The value to convert.</param>
            <returns>A floating-point value between 0 and 1.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.ToFloat(System.UInt16)">
            <summary>
            Converts a <see cref="T:System.UInt16"/> value to a floating-point value between 0 and 1 without changing the color space.
            </summary>
            <param name="value">The value to convert.</param>
            <returns>A floating-point value between 0 and 1.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.ToByte(System.Single)">
            <summary>
            Converts a floating-point value ranging from 0 to 1 to a <see cref="T:System.Byte">byte</see> without changing the color space.
            Out-of-range values are allowed in which case the result will be clipped
            to <see cref="F:System.Byte.MinValue">Byte.MinValue</see> or <see cref="F:System.Byte.MaxValue">Byte.MaxValue</see>.
            </summary>
            <param name="value">The value to convert.</param>
            <returns>The result of the conversion.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.ToByte(System.UInt16)">
            <summary>
            Converts a 16-bit color channel value to an 8-bit value representing the same intensity without changing the color space.
            </summary>
            <param name="value">The value to convert.</param>
            <returns>The result of the conversion.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.ToUInt16(System.Single)">
            <summary>
            Converts a floating-point value ranging from 0 to 1 to a <see cref="T:System.UInt16"/> without changing the color space.
            Out-of-range values are allowed in which case the result will be clipped
            to <see cref="F:System.UInt16.MinValue">UInt16.MinValue</see> or <see cref="F:System.UInt16.MaxValue">UInt16.MaxValue</see>.
            </summary>
            <param name="value">The value to convert.</param>
            <returns>The result of the conversion.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.ToUInt16(System.Byte)">
            <summary>
            Converts an 8-bit color channel value to a 16-bit value representing the same intensity without changing the color space.
            </summary>
            <param name="value">The value to convert.</param>
            <returns>The result of the conversion.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.SrgbToLinear(System.Byte)">
            <summary>
            Converts a <see cref="T:System.Byte">byte</see> value representing an sRGB color component to a floating-point value between 0 and 1
            representing an RGB color component in the linear color space.
            </summary>
            <param name="value">The <see cref="T:System.Byte">byte</see> value to convert.</param>
            <returns>A floating-point value between 0 and 1 representing an RGB color component in the linear color space.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.SrgbToLinear(System.UInt16)">
            <summary>
            Converts a <see cref="T:System.UInt16"/> value representing an sRGB color component to a floating-point value between 0 and 1
            representing an RGB color component in the linear color space.
            </summary>
            <param name="value">The <see cref="T:System.UInt16"/> value to convert.</param>
            <returns>A floating-point value between 0 and 1 representing an RGB color component in the linear color space.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.SrgbToLinear(System.Single)">
            <summary>
            Converts a floating-point value representing an sRGB color component to a value representing an RGB color component in the linear color space.
            </summary>
            <param name="value">The value to convert.</param>
            <returns>A floating-point value between 0 and 1 representing an RGB color component in the linear color space.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.SrgbToLinearVectorRgba(System.Numerics.Vector4)">
            <summary>
            Converts a vector of four floating-point values representing RGBA color components in the sRGB color space
            to a vector representing linear color components.
            </summary>
            <param name="value">The vector to convert.</param>
            <returns>A vector of floating-point values between 0 and 1 representing a linear color with RGBA color components.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.LinearToSrgb(System.Single)">
            <summary>
            Converts a floating-point value representing a color component in the linear color space
            to a value representing an sRGB color component.
            </summary>
            <param name="value">The value to convert.</param>
            <returns>A floating-point value between 0 and 1 representing an sRGB color component.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.LinearToSrgb8Bit(System.Single)">
            <summary>
            Converts a floating-point value representing a color component in the linear color space
            to a <see cref="T:System.Byte">byte</see> value representing an sRGB color component.
            </summary>
            <param name="value">The value to convert.</param>
            <returns>A <see cref="T:System.Byte">byte</see> value representing an sRGB color component.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.LinearToSrgb16Bit(System.Single)">
            <summary>
            Converts a floating-point value representing a color component in the linear color space
            to a <see cref="T:System.UInt16"/> value representing an sRGB color component.
            </summary>
            <param name="value">The value to convert.</param>
            <returns>A <see cref="T:System.UInt16"/> value representing an sRGB color component.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.LinearToSrgbVectorRgba(System.Numerics.Vector4)">
            <summary>
            Converts a vector of four floating-point values representing RGBA color components in the linear color space
            to a vector representing sRGB color components.
            </summary>
            <param name="value">The vector to convert.</param>
            <returns>A vector of floating-point values between 0 and 1 representing an sRGB color with RGBA color components.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.Palette">
            <summary>
            Represents an indexed set of colors and provides efficient color lookup with caching.
            To create an instance use the static methods or the constructors.
            </summary>
            <remarks>
            <para>The <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class represents an indexed set of colors that can be accessed by the <see cref="P:KGySoft.Drawing.Imaging.Palette.Item(System.Int32)">indexer</see> or
            the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetEntries">GetEntries</see> method.</para>
            <para>The <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class supports performing quick lookup operations (see <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods) to find the closest matching palette entry to any color.</para>
            <note>The palette entries represent colors in the sRGB color space and nearest color lookup is also performed in the sRGB color space by default,
            but you can create a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that performs looking up for nearest colors in the linear color space
            by the <see cref="M:KGySoft.Drawing.Imaging.Palette.#ctor(KGySoft.Drawing.Imaging.Palette,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> constructor or the factory methods that have <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> parameter.
            See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/>
            enumeration for details and image examples about using the different color spaces in various operations.</note>
            <para>By default, the lookup is performed by a slightly modified euclidean-like search but if the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> contains grayscale entries only,
            then it is optimized for finding the best matching gray shade based on human perception. To override this logic a custom lookup routine can be passed to the constructors.</para>
            <para>If the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance is created without a custom lookup logic, then the search results for non-palette-entry colors are cached.
            The cache is optimized for parallel processing. The theoretical maximum of cache size (apart from the actual palette entries) is 2 x 2<sup>18</sup> but
            as soon as that limit is reached the amount of stored elements are halved so the cache is somewhat optimized to store the most recently processed colors.</para>
            <para>In order to prevent caching you can pass a custom lookup logic to the constructors. It is expected to be fast (applying some direct mapping to a palette index,
            for example), or that it uses some custom caching (which should perform well also when queried concurrently).</para>
            <para>The palette can have any number of colors but as the typical usage is quantizing colors for indexed bitmaps the typical maximum palette size
            is 256. Generally, the more colors the palette has the slower are the lookups for non-palette colors that are not cached yet.</para>
            </remarks>
            <threadsafety instance="false">If there is no custom lookup logic passed to the constructors, then members of this type are guaranteed to be safe for multithreaded operations.
            If this type is initialized with a custom lookup logic, then thread-safety depends on the custom lookup implementation.</threadsafety>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.Palette.Count">
            <summary>
            Gets the number of color entries in the current <see cref="T:KGySoft.Drawing.Imaging.Palette"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.Palette.BackColor">
            <summary>
            Gets the background color. Relevant only if this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> does not contain partially transparent colors.
            If a lookup operation (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>)
            is performed with a color whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <see cref="P:KGySoft.Drawing.Imaging.Palette.AlphaThreshold"/>,
            then the color will be blended with this color before performing the lookup.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.Palette.AlphaThreshold">
            <summary>
            If this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> has a transparent entry, then gets a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field,
            under which lookup operations will return the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>)
            or the index of the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>) in the palette.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.Palette.IsGrayscale">
            <summary>
            Gets whether the palette consists of grayscale entries only.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.Palette.HasAlpha">
            <summary>
            Gets whether the palette contains at least one entry that is not fully opaque.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.Palette.WorkingColorSpace">
            <summary>
            Gets the preferred color space of this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance for performing blending and measuring distance when looking for a nearest color.
            You can use the <see cref="M:KGySoft.Drawing.Imaging.Palette.#ctor(KGySoft.Drawing.Imaging.Palette,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> constructor to create a clone of this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> using
            a different working color space.
            </summary>
            <remarks>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for details and
            image examples about using the different color spaces in various operations.</note>
            <para>If the value of this property is <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the sRGB color space is used
            because palette <see cref="M:KGySoft.Drawing.Imaging.Palette.GetEntries">entries</see> represent sRGB colors anyway.</para>
            <para>If this palette uses a custom nearest color lookup, then it depends on the custom function whether it considers the value of this property.</para>
            <note>Please note that palette entries themselves always represent sRGB color values, regardless the value of this property.</note>
            </remarks>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.Palette.Item(System.Int32)">
            <summary>
            Gets the color entry of this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> at the specified <paramref name="index"/>.
            </summary>
            <param name="index">The index of the color entry to be retrieved.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance representing the color entry of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> at the specified <paramref name="index"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> must be equal to or greater than zero and less <see cref="P:KGySoft.Drawing.Imaging.Palette.Count"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.#ctor(KGySoft.Drawing.Imaging.Color32[],KGySoft.Drawing.Imaging.Color32,System.Byte,System.Func{KGySoft.Drawing.Imaging.Color32,System.Int32})">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class for details.
            </summary>
            <param name="entries">The color entries to be stored by this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance.</param>
            <param name="backColor">If <paramref name="entries"/> does not contain partially transparent colors, then specifies the background color for
            lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>, and there is no exact match among the <paramref name="entries"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored.</param>
            <param name="alphaThreshold">If there is at least one completely transparent color among <paramref name="entries"/>,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which lookup operations will return the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>)
            or the index of the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).</param>
            <param name="customGetNearestColorIndex">A delegate specifying an optional custom lookup logic to obtain an index from <paramref name="entries"/> by a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            If specified, it must be thread-safe and it is expected to be fast. The results returned by the specified delegate are not cached. If <see langword="null"/>,
            then <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see> and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods will perform a sequential lookup by using a default logic and results will be cached.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="entries"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="entries"/> is empty.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.#ctor(System.Collections.Generic.IEnumerable{KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,System.Byte,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IPalette,System.Int32})">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class for details.
            </summary>
            <param name="entries">The color entries to be stored by this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance.</param>
            <param name="backColor">If <paramref name="entries"/> does not contain partially transparent colors, then specifies the background color for
            lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>, and there is no exact match among the <paramref name="entries"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If there is at least one completely transparent color among <paramref name="entries"/>,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which lookup operations will return the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>)
            or the index of the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>). This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="customGetNearestColorIndex">A delegate specifying an optional custom lookup logic to obtain an index from <paramref name="entries"/>
            by a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> and an <see cref="T:KGySoft.Drawing.Imaging.IPalette"/> instance. If specified, it must be thread-safe and it is expected to be fast.
            The results returned by the specified delegate are not cached. Make sure you always obtain the palette properties such as <see cref="P:KGySoft.Drawing.Imaging.IPalette.BackColor"/>,
            <see cref="P:KGySoft.Drawing.Imaging.IPalette.AlphaThreshold"/> and <see cref="P:KGySoft.Drawing.Imaging.IPalette.WorkingColorSpace"/> from the <see cref="T:KGySoft.Drawing.Imaging.IPalette"/> argument
            as this delegate can be re-used in another <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance when calling the <see cref="M:KGySoft.Drawing.Imaging.Palette.#ctor(KGySoft.Drawing.Imaging.Palette,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> constructor.
            If <see langword="null"/>, then <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see> and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods will
            perform a sequential lookup by using a default logic and results will be cached. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="entries"/> must not be <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="entries"/> must not be empty.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.#ctor(System.Collections.Generic.IEnumerable{KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IPalette,System.Int32})">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class for details.
            </summary>
            <param name="entries">The color entries to be stored by this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance.</param>
            <param name="workingColorSpace">Specifies the desired color space to be used by the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods for blending and measuring color distance.
            If <paramref name="customGetNearestColorIndex"/> is set, then it depends on the custom lookup function whether it respects the value of this parameter.</param>
            <param name="backColor">If <paramref name="entries"/> does not contain partially transparent colors, then specifies the background color for
            lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>, and there is no exact match among the <paramref name="entries"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If there is at least one completely transparent color among <paramref name="entries"/>,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which lookup operations will return the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>)
            or the index of the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>). This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="customGetNearestColorIndex">A delegate specifying an optional custom lookup logic to obtain an index from <paramref name="entries"/>
            by a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> and an <see cref="T:KGySoft.Drawing.Imaging.IPalette"/> instance. If specified, it must be thread-safe and it is expected to be fast.
            The results returned by the specified delegate are not cached. Make sure you always obtain the palette properties such as <see cref="P:KGySoft.Drawing.Imaging.IPalette.BackColor"/>,
            <see cref="P:KGySoft.Drawing.Imaging.IPalette.AlphaThreshold"/> and <see cref="P:KGySoft.Drawing.Imaging.IPalette.WorkingColorSpace"/> from the <see cref="T:KGySoft.Drawing.Imaging.IPalette"/> argument
            as this delegate can be re-used in another <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance when calling the <see cref="M:KGySoft.Drawing.Imaging.Palette.#ctor(KGySoft.Drawing.Imaging.Palette,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> constructor.
            If <see langword="null"/>, then <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see> and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods will
            perform a sequential lookup by using a default logic and results will be cached. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="entries"/> must not be <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="entries"/> must not be empty.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.#ctor(System.Drawing.Color[],System.Drawing.Color,System.Byte,System.Func{KGySoft.Drawing.Imaging.Color32,System.Int32})">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class for details.
            </summary>
            <param name="entries">The color entries to be stored by this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance. They will be converted to <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instances internally.</param>
            <param name="backColor">If <paramref name="entries"/> does not contain partially transparent colors, then specifies the background color for
            lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>, and there is no exact match among the <paramref name="entries"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="P:System.Drawing.Color.A">Color.A</see> property of the background color is ignored.</param>
            <param name="alphaThreshold">If there is at least one completely transparent color among <paramref name="entries"/>,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which lookup operations will return the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>)
            or the index of the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).</param>
            <param name="customGetNearestColorIndex">A delegate specifying an optional custom lookup logic to obtain an index from <paramref name="entries"/> by a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            If specified, it must be thread-safe and it is expected to be fast. The results returned by the specified delegate are not cached. If <see langword="null"/>,
            then <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see> and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods will perform a sequential lookup by using a default logic and results will be cached.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="entries"/> must not be <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="entries"/> must not be empty.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.#ctor(System.Collections.Generic.IEnumerable{System.Drawing.Color},System.Drawing.Color,System.Byte,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IPalette,System.Int32})">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class for details.
            </summary>
            <param name="entries">The color entries to be stored by this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance. They will be converted to <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instances internally.</param>
            <param name="backColor">If <paramref name="entries"/> does not contain partially transparent colors, then specifies the background color for
            lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>, and there is no exact match among the <paramref name="entries"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="P:System.Drawing.Color.A">Color.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: <see cref="F:System.Drawing.Color.Empty"/>, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If there is at least one completely transparent color among <paramref name="entries"/>,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which lookup operations will return the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>)
            or the index of the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>). This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="customGetNearestColorIndex">A delegate specifying an optional custom lookup logic to obtain an index from <paramref name="entries"/> by a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            If specified, it must be thread-safe and it is expected to be fast. The results returned by the specified delegate are not cached. If <see langword="null"/>,
            then <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see> and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods will perform a sequential lookup by using a default logic and results will be cached.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="entries"/> must not be <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="entries"/> must not be empty.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.#ctor(System.Collections.Generic.IEnumerable{System.Drawing.Color},KGySoft.Drawing.Imaging.WorkingColorSpace,System.Drawing.Color,System.Byte,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IPalette,System.Int32})">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class for details.
            </summary>
            <param name="entries">The color entries to be stored by this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance. They will be converted to <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instances internally.</param>
            <param name="workingColorSpace">Specifies the desired color space to be used by the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods for blending and measuring color distance.
            If <paramref name="customGetNearestColorIndex"/> is set, then it depends on the custom lookup function whether it respects the value of this parameter.</param>
            <param name="backColor">If <paramref name="entries"/> does not contain partially transparent colors, then specifies the background color for
            lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>, and there is no exact match among the <paramref name="entries"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="P:System.Drawing.Color.A">Color.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: <see cref="F:System.Drawing.Color.Empty"/>, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If there is at least one completely transparent color among <paramref name="entries"/>,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which lookup operations will return the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>)
            or the index of the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>). This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="customGetNearestColorIndex">A delegate specifying an optional custom lookup logic to obtain an index from <paramref name="entries"/> by a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            If specified, it must be thread-safe and it is expected to be fast. The results returned by the specified delegate are not cached. If <see langword="null"/>,
            then <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see> and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods will perform a sequential lookup by using a default logic and results will be cached.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="entries"/> must not be <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="entries"/> must not be empty.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.#ctor(KGySoft.Drawing.Imaging.Palette,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class from another <paramref name="palette"/> using
            new <paramref name="backColor"/> and <paramref name="alphaThreshold"/> values.
            </summary>
            <param name="palette">The original <see cref="T:KGySoft.Drawing.Imaging.Palette"/> to get the colors from.</param>
            <param name="backColor">The desired <see cref="P:KGySoft.Drawing.Imaging.Palette.BackColor"/> of the new <see cref="T:KGySoft.Drawing.Imaging.Palette"/>. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored.</param>
            <param name="alphaThreshold">The desired <see cref="P:KGySoft.Drawing.Imaging.Palette.AlphaThreshold"/> of the new <see cref="T:KGySoft.Drawing.Imaging.Palette"/>.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="palette"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.#ctor(KGySoft.Drawing.Imaging.Palette,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class from another <paramref name="palette"/> using
            new <paramref name="backColor"/> and <paramref name="alphaThreshold"/> values and color space preference.
            </summary>
            <param name="palette">The original <see cref="T:KGySoft.Drawing.Imaging.Palette"/> to get the colors from.</param>
            <param name="workingColorSpace">Specifies the desired color space to be used by the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods for blending and measuring color distance.
            If the original <paramref name="palette"/> uses a custom lookup function, then the value of this parameter might be ignored.</param>
            <param name="backColor">The desired <see cref="P:KGySoft.Drawing.Imaging.Palette.BackColor"/> of the new <see cref="T:KGySoft.Drawing.Imaging.Palette"/>. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored.</param>
            <param name="alphaThreshold">The desired <see cref="P:KGySoft.Drawing.Imaging.Palette.AlphaThreshold"/> of the new <see cref="T:KGySoft.Drawing.Imaging.Palette"/>.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="palette"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <remarks>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for details and
            image examples about using the different color spaces in various operations.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the system default 8-bit palette.
            This palette contains the 16 standard <a href="https://www.w3.org/TR/REC-html40/types.html#h-6.5" target="_blank">basic sRGB colors</a>,
            the "web-safe" palette of 216 colors as well as 24 transparent entries.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">PredefinedColorsQuantizer.SystemDefault8BppPalette</see> method for details and some examples.
            </summary>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>, and there is no exact match among the palette entries,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which lookup operations will return the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>)
            or the index of the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>). This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the system default 8-bit palette.</returns>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the system default 8-bit palette.
            This palette contains the 16 standard <a href="https://www.w3.org/TR/REC-html40/types.html#h-6.5" target="_blank">basic sRGB colors</a>,
            the "web-safe" palette of 216 colors as well as 24 transparent entries.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">PredefinedColorsQuantizer.SystemDefault8BppPalette</see> method for details and some examples.
            </summary>
            <param name="workingColorSpace">Specifies the desired color space to be used by the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods for blending and measuring color distance.</param>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>, and there is no exact match among the palette entries,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which lookup operations will return the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>)
            or the index of the first transparent color (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>). This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the system default 8-bit palette.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the system default 4-bit palette.
            This palette consists of the 16 standard <a href="https://www.w3.org/TR/REC-html40/types.html#h-6.5" target="_blank">basic sRGB colors</a>.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">PredefinedColorsQuantizer.SystemDefault4BppPalette</see> method for details and some examples.
            </summary>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the system default 4-bit palette.</returns>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the system default 4-bit palette.
            This palette consists of the 16 standard <a href="https://www.w3.org/TR/REC-html40/types.html#h-6.5" target="_blank">basic sRGB colors</a>.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">PredefinedColorsQuantizer.SystemDefault4BppPalette</see> method for details and some examples.
            </summary>
            <param name="workingColorSpace">Specifies the desired color space to be used by the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods for blending and measuring color distance.</param>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the system default 4-bit palette.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.Color32)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the system default 1-bit palette.
            This palette consists of the black and white colors.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">PredefinedColorsQuantizer.SystemDefault1BppPalette</see> method for details.
            </summary>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the system default 1-bit palette.</returns>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the system default 1-bit palette.
            This palette consists of the black and white colors.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">PredefinedColorsQuantizer.SystemDefault1BppPalette</see> method for details.
            </summary>
            <param name="workingColorSpace">Specifies the desired color space to be used by the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods for blending and measuring color distance.</param>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the system default 1-bit palette.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Rgb332(KGySoft.Drawing.Imaging.Color32,System.Boolean)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.Rgb332(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Rgb332(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Boolean)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.Rgb332(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Rgb332(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses an 8-bit palette where red, green and blue components are encoded in 3, 3 and 2 bits, respectively.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb332(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">PredefinedColorsQuantizer.Rgb332</see> method for details and some examples.
            </summary>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="directMapping"><see langword="true"/> to map any color directly to an index instead of searching for a nearest color,
            which is very fast but without dithering may end up in a noticeably poorer result and higher contrast;
            <see langword="false"/> to perform a lookup to determine nearest colors, which may be slower but more accurate. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses an 8-bit palette where red, green and blue components are encoded in 3, 3 and 2 bits, respectively.</returns>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb332(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Rgb332(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses an 8-bit palette where red, green and blue components are encoded in 3, 3 and 2 bits, respectively.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb332(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">PredefinedColorsQuantizer.Rgb332</see> method for details and some examples.
            </summary>
            <param name="workingColorSpace">Specifies the desired color space to be used by the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods for blending and measuring color distance.
            If <paramref name="directMapping"/> is <see langword="true"/>, then only affects blending with possibly partially transparent source colors.</param>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="directMapping"><see langword="true"/> to map any color directly to an index instead of searching for a nearest color,
            which is very fast but without dithering may end up in a noticeably poorer result and higher contrast;
            <see langword="false"/> to perform a lookup to determine nearest colors, which may be slower but more accurate. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses an 8-bit palette where red, green and blue components are encoded in 3, 3 and 2 bits, respectively.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb332(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Grayscale256(KGySoft.Drawing.Imaging.Color32)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.Grayscale256(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Grayscale256(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.Grayscale256(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Grayscale256(KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses an 8-bit grayscale palette of 256 shades.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">PredefinedColorsQuantizer.Grayscale</see> method for details and some examples.
            </summary>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses an 8-bit grayscale palette of 256 shades.</returns>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Grayscale256(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses an 8-bit grayscale palette of 256 shades.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">PredefinedColorsQuantizer.Grayscale</see> method for details and some examples.
            </summary>
            <param name="workingColorSpace">Specifies the desired color space to be used by the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods for blending and measuring color distance.</param>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses an 8-bit grayscale palette of 256 shades.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Grayscale16(KGySoft.Drawing.Imaging.Color32,System.Boolean)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.Grayscale16(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Grayscale16(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Boolean)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.Grayscale16(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Grayscale16(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses a 4-bit grayscale palette of 16 shades.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale16(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">PredefinedColorsQuantizer.Grayscale16</see> method for details and some examples.
            </summary>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="directMapping"><see langword="true"/> to map any color directly to an index instead of searching for a nearest color,
            which is very fast but may end up in a result of a bit higher contrast than the original image;
            <see langword="false"/> to perform a lookup to determine nearest colors, which may be slower but more accurate. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses a 4-bit grayscale palette of 16 shades.</returns>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale16(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Grayscale16(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses a 4-bit grayscale palette of 16 shades.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale16(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">PredefinedColorsQuantizer.Grayscale16</see> method for details and some examples.
            </summary>
            <param name="workingColorSpace">Specifies the desired color space to be used by the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods for blending and measuring color distance.</param>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="directMapping"><see langword="true"/> to map any color directly to an index instead of searching for a nearest color,
            which is very fast but may end up in a result of a bit higher contrast than the original image;
            <see langword="false"/> to perform a lookup to determine nearest colors, which may be slower but more accurate. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses a 4-bit grayscale palette of 16 shades.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale16(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Grayscale4(KGySoft.Drawing.Imaging.Color32,System.Boolean)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.Grayscale4(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Grayscale4(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Boolean)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.Grayscale4(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Grayscale4(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses a grayscale palette of 4 shades.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale4(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">PredefinedColorsQuantizer.Grayscale4</see> method for details and some examples.
            </summary>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="directMapping"><see langword="true"/> to map any color directly to an index instead of searching for a nearest color,
            which is very fast but may end up in a result of a bit higher contrast than the original image;
            <see langword="false"/> to perform a lookup to determine nearest colors, which may be slower but more accurate. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses a grayscale palette of 4 shades.</returns>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale4(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.Grayscale4(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses a grayscale palette of 4 shades.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale4(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">PredefinedColorsQuantizer.Grayscale4</see> method for details and some examples.
            </summary>
            <param name="workingColorSpace">Specifies the desired color space to be used by the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods for blending and measuring color distance.</param>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="directMapping"><see langword="true"/> to map any color directly to an index instead of searching for a nearest color,
            which is very fast but may end up in a result of a bit higher contrast than the original image;
            <see langword="false"/> to perform a lookup to determine nearest colors, which may be slower but more accurate. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses a grayscale palette of 4 shades.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale4(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.BlackAndWhite(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.Palette.BlackAndWhite(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the black and white colors.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">PredefinedColorsQuantizer.BlackAndWhite</see> method for details and some examples.
            </summary>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="whiteThreshold">Specifies a threshold value for the brightness of the colors, under which the result of a color lookup is considered black.
            If 0, then all colors are mapped to white. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the black and white colors.</returns>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.BlackAndWhite(KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the black and white colors.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">PredefinedColorsQuantizer.BlackAndWhite</see> method for details and some examples.
            </summary>
            <param name="workingColorSpace">Specifies the desired color space to be used by the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see> methods for blending and measuring color distance.</param>
            <param name="backColor">Specifies the background color for lookup operations (<see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">GetNearestColor</see>, <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">GetNearestColorIndex</see>).
            When a lookup is performed with a color, whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater than <paramref name="alphaThreshold"/>,
            then the color to be found will be blended with this color before performing the lookup. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="whiteThreshold">Specifies a threshold value for the brightness of the colors, under which the result of a color lookup is considered black.
            If 0, then all colors are mapped to white. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the palette returned from this method does not contain alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background with a quantizer using this palette. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that uses the black and white colors.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.GetColor(System.Int32)">
            <summary>
            Gets the color entry of this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> at the specified <paramref name="index"/>.
            </summary>
            <param name="index">The index of the color entry to be retrieved.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance representing the color entry of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> at the specified <paramref name="index"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> must be equal to or greater than zero and less <see cref="P:KGySoft.Drawing.Imaging.Palette.Count"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Gets the index of a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> entry that is the nearest color to the specified <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <param name="c">The color for which the nearest palette entry index should be returned.</param>
            <returns>The index of a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> entry that is the nearest color to the specified <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</returns>
            <remarks>
            <para>If the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> does not contain the specified color, then the result may depend on the arguments passed to the constructor.</para>
            <para>If <paramref name="c"/> has transparency, then the result may depend on <see cref="P:KGySoft.Drawing.Imaging.Palette.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.Palette.AlphaThreshold"/> values.</para>
            <para>The result can be customized by passing a non-<see langword="null"/> delegate to one of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> constructors.</para>
            <note>For more details see the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> entry of this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> that is the nearest color to the specified <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <param name="c">The color for which the nearest palette entry should be returned.</param>
            <returns>The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> entry of this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> that is the nearest color to the specified <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</returns>
            <remarks>
            <para>If the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> does not contain the specified color, then the result may depend on the arguments passed to the constructor.</para>
            <para>If <paramref name="c"/> has transparency, then the result may depend on <see cref="P:KGySoft.Drawing.Imaging.Palette.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.Palette.AlphaThreshold"/> values.</para>
            <para>The result can be customized by passing a non-<see langword="null"/> delegate to one of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> constructors.</para>
            <note>For more details see the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class.</note>
            </remarks>
            <exception cref="T:System.IndexOutOfRangeException">The <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class was initialized by a custom lookup delegate, which returned an invalid index.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Palette.GetEntries">
            <summary>
            Gets a read-only wrapper of the entries of this <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance.
            </summary>
            <returns>The entries of this <see cref="T:KGySoft.Drawing.Imaging.Palette"/>.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.BitmapDataFactory">
            <summary>
            Provides factory methods to create <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instances.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.BitmapDataFactory.PoolingStrategy">
            <summary>
            On platforms where array pooling is available, gets or sets the strategy to be used when allocating buffer for managed bitmap data
            instances by the self-allocating <see cref="O:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData">CreateBitmapData</see> methods.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.ArrayPoolingStrategy.IfByteArrayBased"/>.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with the specified <paramref name="size"/> and <paramref name="pixelFormat"/>.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="pixelFormat">The desired pixel format of the bitmap data to create. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/>.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section for details. The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with the specified <paramref name="size"/> and <paramref name="pixelFormat"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)"/>
            <overloads>There are quite a few overloads of the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData">CreateBitmapData</see> method but they can be grouped into different categories:
            <list type="bullet">
            <item>The ones whose first parameter is <see cref="T:System.Drawing.Size"/>, or the first couple of parameters are integers for width and height,
            are allocating the buffer for the created bitmap data by themselves, whereas the others use preallocated buffers.
            These overloads may use array pooling. See also the <see cref="P:KGySoft.Drawing.Imaging.BitmapDataFactory.PoolingStrategy"/> property.</item>
            <item>The overloads whose first parameter name is <c>buffer</c> can be used to create a bitmap data for a preallocated buffer. This buffer can be a one or two-dimensional array,
            an <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_ArraySection_1.htm">ArraySection&lt;T></a> or <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_Array2D_1.htm">Array2D&lt;T></a>
            value wrapping a one dimensional array that represents a section of the array as a one or two-dimensional view, or it can be an <see cref="T:System.IntPtr"/> representing a potentially unmanaged buffer.</item>
            <item>If an overload has a <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> parameter, then it can be used to create a bitmap data using one of the pixel formats with built-in support.</item>
            <item>To create a bitmap data with a custom pixel format you can pick the overloads that have a <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> parameter along with a couple of delegates, or the ones
            with a <see cref="T:KGySoft.Drawing.Imaging.CustomBitmapDataConfig"/> or <see cref="T:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig"/> parameter for the best customization.</item>
            <item>For indexed pixel formats look for the overloads that have a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> or a <see cref="T:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig"/> parameter.</item>
            </list></overloads>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with the specified <paramref name="size"/> and <paramref name="pixelFormat"/>.
            </summary>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="pixelFormat">The desired pixel format of the bitmap data to create.</param>
            <param name="workingColorSpace">Specifies the preferred color space that should be used when working with the result bitmap data.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section for details. The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with the specified <paramref name="size"/> and <paramref name="pixelFormat"/>.</returns>
            <remarks>
            <para>This method supports predefined pixel formats. To create a bitmap data with some custom pixel format use the overloads that have <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> parameters.</para>
            <para>The <paramref name="backColor"/> parameter has no practical effect if <paramref name="pixelFormat"/> has alpha gradient support, and it does not affect the actual content of the returned instance.
            To set all pixels to a color use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clear(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">Clear</see> extension method.</para>
            <para>If <paramref name="alphaThreshold"/> is zero, then setting a fully transparent pixel in a bitmap data with indexed or single-bit-alpha pixel format
            will blend the pixel to set with <paramref name="backColor"/> even if the bitmap data can handle transparent pixels.</para>
            <para>If <paramref name="alphaThreshold"/> is <c>1</c>, then the result color of setting a pixel of a bitmap data with indexed or single-bit-alpha pixel format
            will be transparent only if the color to set is completely transparent (has zero alpha).</para>
            <para>If <paramref name="alphaThreshold"/> is <c>255</c>, then the result color of setting a pixel of a bitmap data with indexed or single-bit-alpha pixel format
            will be opaque only if the color to set is completely opaque (its alpha value is <c>255</c>).</para>
            <para>For <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s without any alpha support the specified <paramref name="alphaThreshold"/> is used only to determine the source pixels to skip
            when another bitmap data is drawn into the returned instance.</para>
            <para>If a pixel of a bitmap data without alpha gradient support is set by the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetPixel(System.Int32,System.Int32,System.Drawing.Color)">IWritableBitmapData.SetPixel</see>/<see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor(System.Int32,System.Drawing.Color)">IWritableBitmapDataRow.SetColor</see>
            methods or by the <see cref="P:KGySoft.Drawing.Imaging.IReadWriteBitmapDataRow.Item(System.Int32)">IReadWriteBitmapDataRow indexer</see>, and the pixel has an alpha value that is greater than <paramref name="alphaThreshold"/>,
            then the pixel to set will be blended with <paramref name="backColor"/>.</para>
            <para>The <paramref name="workingColorSpace"/> parameter indicates the preferred color space when working with the result bitmap data.
            Blending operations performed by this library (eg. by <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetPixel(System.Int32,System.Int32,System.Drawing.Color)">IWritableBitmapData.SetPixel</see> when blending is necessary as described above,
            or by the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto">DrawInto</see> extension methods) respect the value of this parameter.
            Blending in the linear color space produces natural results but the operation is a bit slower if the actual
            pixel format is not in the linear color space, and the result is different from the results of most applications including popular image processors and web browsers.
            See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</para>
            <para>This method allocates the underlying managed buffer internally. On platforms where array pooling is available, the underlying buffer may be rented from a pool.
            The actual behavior can be controlled by the <see cref="P:KGySoft.Drawing.Imaging.BitmapDataFactory.PoolingStrategy"/> property.</para>
            <note type="tip">
            <list type="bullet">
            <item>If <paramref name="pixelFormat"/> represents an indexed format you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)"/> overload to specify the desired palette of the result.</item>
            <item>To create an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance from a platform specific bitmap type such as <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Bitmap" target="_blank">Bitmap</a>
            or <a href="https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.imaging.writeablebitmap" target="_blank">WriteableBitmap</a>, use the <c>GetReadWriteBitmapData</c> extension methods for various platform dependent
            bitmap implementations. See the <strong>Remarks</strong> section of the <see cref="N:KGySoft.Drawing"/> namespace for a list about the technologies with dedicated support,
            and the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">BitmapExtensions.GetReadWriteBitmapData</a>
            method for details and code samples. That method is for the GDI+ <a href="https://docs.microsoft.com/en-us/dotnet/api/system.drawing.bitmap" target="_blank">Bitmap</a> type but the main principles apply for all sources.</item>
            </list></note>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats
            <br/>-or-
            <br/><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.BitmapDataFactory.PoolingStrategy"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with the specified <paramref name="size"/>, <paramref name="pixelFormat"/> and <paramref name="palette"/>.
            </summary>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="pixelFormat">The desired pixel format of the bitmap data to create.</param>
            <param name="palette">If <paramref name="pixelFormat"/> represents an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with the specified <paramref name="size"/>, <paramref name="pixelFormat"/> and <paramref name="palette"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="palette"/> is too large for the specified <paramref name="pixelFormat"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Int32,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with the specified <paramref name="width"/>, <paramref name="height"/> and <paramref name="pixelFormat"/>.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <param name="width">The width of the bitmap data to create in pixels.</param>
            <param name="height">The height of the bitmap data to create in pixels.</param>
            <param name="pixelFormat">The desired pixel format of the bitmap data to create. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/>.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section for details. The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with the specified dimensions and <paramref name="pixelFormat"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="width"/> or <paramref name="height"/> is zero or negative
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Int32,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Int32,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with the specified <paramref name="width"/>, <paramref name="height"/> and <paramref name="pixelFormat"/>.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <param name="width">The width of the bitmap data to create in pixels.</param>
            <param name="height">The height of the bitmap data to create in pixels.</param>
            <param name="pixelFormat">The desired pixel format of the bitmap data to create.</param>
            <param name="workingColorSpace">Specifies the preferred color space that should be used when working with the result bitmap data.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section for details. The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with the specified dimensions and <paramref name="pixelFormat"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="width"/> or <paramref name="height"/> is zero or negative
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats.
            <br/>-or-
            <br/><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Int32,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with the specified <paramref name="width"/>, <paramref name="height"/>, <paramref name="pixelFormat"/> and <paramref name="palette"/>.
            </summary>
            <param name="width">The width of the bitmap data to create in pixels.</param>
            <param name="height">The height of the bitmap data to create in pixels.</param>
            <param name="pixelFormat">The desired pixel format of the bitmap data to create.</param>
            <param name="palette">If <paramref name="pixelFormat"/> represents an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with the specified dimensions, <paramref name="pixelFormat"/> and <paramref name="palette"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="width"/> or <paramref name="height"/> is zero or negative
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="palette"/> is too large for the specified <paramref name="pixelFormat"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance for a preallocated one dimensional array with the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.
            If the actual image data starts at some offset use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)"/> overload instead.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/>.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormat"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormat"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance for a preallocated one dimensional array with the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.
            If the actual image data starts at some offset use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)"/> overload instead.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create.</param>
            <param name="workingColorSpace">Specifies the preferred color space that should be used when working with the result bitmap data.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormat"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormat"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance for a preallocated one dimensional array with the specified parameters.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.
            If the actual image data starts at some offset use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)"/> overload instead.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create.</param>
            <param name="palette">If <paramref name="pixelFormat"/> represents an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.</param>
            <param name="trySetPaletteCallback">A delegate to be called when the palette is attempted to be replaced by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> method.
            If <paramref name="buffer"/> belongs to some custom bitmap implementation, it can be used to update its original palette. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormat"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormat"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>
            <br/>-or-
            <br/><paramref name="palette"/> is too large for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format for a preallocated one dimensional array with the specified parameters.
            By this overload you can specify a pair of custom getter/setter delegates using the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> color type.
            If other color types fit better for the custom format or you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.
            If the actual image data starts at some offset use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)"/> overload instead.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColor">A delegate that can get the 32-bit color of a pixel in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColor">A delegate that can set the color of a pixel from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see langword="null"/>.
            <br/>-or-
            <br/>Both <paramref name="rowGetColor"/> and <paramref name="rowSetColor"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormatInfo"/>.
            </exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormatInfo"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format for a preallocated one dimensional array with the specified parameters.
            By this overload you can specify a pair of custom getter/setter delegates using the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> color type.
            If other color types fit better for the custom format or you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.
            If the actual image data starts at some offset use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)"/> overload instead.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColor">A delegate that can get the 32-bit color of a pixel in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColor">A delegate that can set the color of a pixel from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="workingColorSpace">Specifies the preferred color space that should be used when working with the result bitmap data.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see langword="null"/>.
            <br/>-or-
            <br/>Both <paramref name="rowGetColor"/> and <paramref name="rowSetColor"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormatInfo"/>.
            </exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormatInfo"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format for a preallocated one dimensional array with the specified parameters.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.
            If the actual image data starts at some offset use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="customBitmapDataConfig">The configuration for the custom pixel format. At least one getter or setter delegate must be specified.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> make sure you set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> property to <see langword="true"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <remarks>
            <para>This method allows creating an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with custom pixel format. You need to specify a <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/>
            and at least one delegate setter or getter delegate to be called whenever a pixel is get or set. In this overload these can be done by assigning a <see cref="T:KGySoft.Drawing.Imaging.CustomBitmapDataConfig"/>
            instance to the <paramref name="customBitmapDataConfig"/> parameter. The desired <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> should be set in the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>
            property, whereas for the getter and setter methods you can select the ones with the color types that fit the best for your pixel format.</para>
            <note type="tip">It is enough to set only one getter and/or setter with the best matching color type. For example, if you set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowGetColor64"/> property only,
            which returns the pixels as <see cref="T:KGySoft.Drawing.Imaging.Color64"/> values, then all of the other pixel-reading methods will use this delegate and will convert the result from <see cref="T:KGySoft.Drawing.Imaging.Color64"/>.</note>
            <para>A custom pixel format can have any <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> value between 1 and 128. A typical bits-per-pixel value is a power of two; however,
            any other value can be used if you handle them in the provided delegates.</para>
            <para>The getter and setter delegates are always called with an <c>x</c> coordinate meaning the pixel offset in the corresponding row.</para>
            <note type="implement">It is highly recommended that the delegates do not use the <paramref name="buffer"/> directly (they don't capture the <paramref name="buffer"/> instance).
            Instead, they should access the actual data using their <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> argument, which allows reading and writing raw data within the corresponding row, independently
            from any specific buffer instance. If they do so, then you can set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> to true in <paramref name="customBitmapDataConfig"/>,
            which allows some operations work with better quality and performance.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> or <paramref name="customBitmapDataConfig"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>.
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.WorkingColorSpace"/> in <paramref name="customBitmapDataConfig"/> is not one of the defined values.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> in <paramref name="customBitmapDataConfig"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.
            <br/>-or-
            <be/>None of the pixel getter/setter delegates are specified in <paramref name="customBitmapDataConfig"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom indexed pixel format for a preallocated one dimensional array with the specified parameters.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.
            If the actual image data starts at some offset use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)"/> overload instead.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColorIndex">A delegate that can get the color index of a pixel in a row of the bitmap data.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColorIndex">A delegate that can set the color index of a pixel in a row of the bitmap data.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="palette">Specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="trySetPaletteCallback">A delegate to be called when the palette is attempted to be replaced by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> method.
            If <paramref name="buffer"/> belongs to some custom bitmap implementation, it can be used to update its original palette. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see langword="null"/>.
            <br/>-or-
            <br/>Both <paramref name="rowGetColorIndex"/> and <paramref name="rowSetColorIndex"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormatInfo"/>
            </exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormatInfo"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>
            <br/>-or-
            <br/><paramref name="palette"/> is too large for the specified <paramref name="pixelFormatInfo"/>
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is not indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is not between 1 and 16.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom indexed pixel format for a preallocated one dimensional array with the specified parameters.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.
            If the actual image data starts at some offset use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)"/> overload instead.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="customBitmapDataConfig">The configuration for the custom pixel format. Either the getter or the setter delegate must be specified.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> make sure you set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> property to <see langword="true"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <remarks>
            <para>This method allows creating an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with custom indexed pixel format. You need to specify a <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/>
            and at one or both pixel accessor delegates to be called whenever a pixel is get or set. In this overload these can be done by assigning a <see cref="T:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig"/>
            instance to the <paramref name="customBitmapDataConfig"/> parameter. The desired indexed <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> should be set in the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>
            property, whereas the getter and setter methods can be assigned to the <see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.RowGetColorIndex"/> and <see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.RowSetColorIndex"/> properties, respectively.</para>
            <para>An indexed custom pixel format can have any <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> value between 1 and 16. A typical bits-per-pixel value is a power of two and is not greater than 8;
            however, any other value can be used if you handle them in the provided delegates.</para>
            <para>The getter and setter delegates are always called with an <c>x</c> coordinate meaning the pixel offset in the corresponding row.</para>
            <note type="implement">It is highly recommended that the delegates do not use the <paramref name="buffer"/> directly (they don't capture the <paramref name="buffer"/> instance).
            Instead, they should access the actual data using their <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> argument, which allows reading and writing raw data within the corresponding row, independently
            from any specific buffer instance. If they do so, then you can set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> to true in <paramref name="customBitmapDataConfig"/>,
            which allows some operations work with better quality and performance.</note>
            <para>If the <see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.Palette"/> property in <paramref name="customBitmapDataConfig"/> is <see langword="null"/> , then the closest not larger system palette will be used,
            possibly completed with transparent entries. For example, if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel">PixelFormatInfo.BitsPerPixel</see> is 9
            and <see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.Palette"/> is <see langword="null"/>, then a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> with 512 colors will be created where the first 256 colors will be the same
            as in <see cref="M:KGySoft.Drawing.Imaging.Palette.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">SystemDefault8BppPalette</see>.</para>
            <note>For that reason it is always recommended to set the <see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.Palette"/> property, especially if it has fewer entries than the possible allowed maximum
            because replacing the palette afterwards by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> extension method allows only to set a palette that has no
            fewer entries. It's because the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> method assumes that the underlying buffer might already have pixels whose
            indices may turn invalid with a smaller palette.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> or <paramref name="customBitmapDataConfig"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.Palette"/> in <paramref name="customBitmapDataConfig"/> is too large for the specified <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> in <paramref name="customBitmapDataConfig"/> is not indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is not between 1 and 16.
            <br/>-or-
            <be/>Neither the getter nor the setter delegate is specified in <paramref name="customBitmapDataConfig"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_ArraySection_1.htm">ArraySection&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/>.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <a href="https://docs.kgysoft.net/corelibraries/html/F_KGySoft_Collections_ArraySection_1_Null.htm">Null</a>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormat"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormat"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_ArraySection_1.htm">ArraySection&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create.</param>
            <param name="workingColorSpace">Specifies the preferred color space that should be used when working with the result bitmap data.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <a href="https://docs.kgysoft.net/corelibraries/html/F_KGySoft_Collections_ArraySection_1_Null.htm">Null</a>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormat"/>
            <br/>-or-
            <br/><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormat"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_ArraySection_1.htm">ArraySection&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create.</param>
            <param name="palette">If <paramref name="pixelFormat"/> represents an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.</param>
            <param name="trySetPaletteCallback">A delegate to be called when the palette is attempted to be replaced by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> method.
            If <paramref name="buffer"/> belongs to some custom bitmap implementation, it can be used to update its original palette. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <a href="https://docs.kgysoft.net/corelibraries/html/F_KGySoft_Collections_ArraySection_1_Null.htm">Null</a>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormat"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormat"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>
            <br/>-or-
            <br/><paramref name="palette"/> is too large for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            By this overload you can specify a pair of custom getter/setter delegates using the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> color type.
            If other color types fit better for the custom format or you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_ArraySection_1.htm">ArraySection&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColor">A delegate that can get the 32-bit color of a pixel in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColor">A delegate that can set the color of a pixel from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <a href="https://docs.kgysoft.net/corelibraries/html/F_KGySoft_Collections_ArraySection_1_Null.htm">Null</a>
            <br/>-or-
            <br/>Both <paramref name="rowGetColor"/> and <paramref name="rowSetColor"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormatInfo"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormatInfo"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            By this overload you can specify a pair of custom getter/setter delegates using the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> color type.
            If other color types fit better for the custom format or you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_ArraySection_1.htm">ArraySection&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColor">A delegate that can get the 32-bit color of a pixel in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColor">A delegate that can set the color of a pixel from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="workingColorSpace">Specifies the preferred color space that should be used when working with the result bitmap data.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <a href="https://docs.kgysoft.net/corelibraries/html/F_KGySoft_Collections_ArraySection_1_Null.htm">Null</a>
            <br/>-or-
            <br/>Both <paramref name="rowGetColor"/> and <paramref name="rowSetColor"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormatInfo"/>.
            <br/>-or-
            <br/><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormatInfo"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_ArraySection_1.htm">ArraySection&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="customBitmapDataConfig">The configuration for the custom pixel format. At least one getter or setter delegate must be specified.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> make sure you set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> property to <see langword="true"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <a href="https://docs.kgysoft.net/corelibraries/html/F_KGySoft_Collections_ArraySection_1_Null.htm">Null</a>
            <br/>-or-
            <br/><paramref name="customBitmapDataConfig"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>.
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.WorkingColorSpace"/> in <paramref name="customBitmapDataConfig"/> is not one of the defined values.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> in <paramref name="customBitmapDataConfig"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.
            <br/>-or-
            <be/>None of the pixel getter/setter delegates are specified in <paramref name="customBitmapDataConfig"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom indexed pixel format wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_ArraySection_1.htm">ArraySection&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColorIndex">A delegate that can get the color index of a pixel in a row of the bitmap data.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColorIndex">A delegate that can set the color index of a pixel in a row of the bitmap data.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="palette">Specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="trySetPaletteCallback">A delegate to be called when the palette is attempted to be replaced by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> method.
            If <paramref name="buffer"/> belongs to some custom bitmap implementation, it can be used to update its original palette. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <a href="https://docs.kgysoft.net/corelibraries/html/F_KGySoft_Collections_ArraySection_1_Null.htm">Null</a>
            <br/>-or-
            <br/>Both <paramref name="rowGetColorIndex"/> and <paramref name="rowSetColorIndex"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormatInfo"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormatInfo"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>
            <br/>-or-
            <br/><paramref name="palette"/> is too large for the specified <paramref name="pixelFormatInfo"/>
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is not indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is not between 1 and 16.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.ArraySection{``0},System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom indexed pixel format wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_ArraySection_1.htm">ArraySection&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            It can be larger than it is required for the specified parameters.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.</param>
            <param name="customBitmapDataConfig">The configuration for the custom pixel format. Either the getter or the setter delegate must be specified.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> make sure you set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> property to <see langword="true"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <a href="https://docs.kgysoft.net/corelibraries/html/F_KGySoft_Collections_ArraySection_1_Null.htm">Null</a>
            <br/>-or-
            <br/><paramref name="customBitmapDataConfig"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="stride"/> is too small for the specified width and <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> and <paramref name="stride"/>
            <br/>-or-
            <br/><paramref name="stride"/> is not a multiple of the size of <typeparamref name="T"/>
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.Palette"/> in <paramref name="customBitmapDataConfig"/> is too large for the specified <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> in <paramref name="customBitmapDataConfig"/> is not indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is not between 1 and 16.
            <br/>-or-
            <be/>Neither the getter nor the setter delegate is specified in <paramref name="customBitmapDataConfig"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance for a preallocated two-dimensional array with the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/>.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <paramref name="pixelFormat"/>
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance for a preallocated two-dimensional array with the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create.</param>
            <param name="workingColorSpace">Specifies the preferred color space that should be used when working with the result bitmap data.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <paramref name="pixelFormat"/>
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats
            <br/>-or-
            <br/><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance for a preallocated two-dimensional array with the specified parameters.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create.</param>
            <param name="palette">If <paramref name="pixelFormat"/> represents an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.</param>
            <param name="trySetPaletteCallback">A delegate to be called when the palette is attempted to be replaced by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> method.
            If <paramref name="buffer"/> belongs to some custom bitmap implementation, it can be used to update its original palette. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns> 
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <paramref name="pixelFormat"/>
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty
            <br/>-or-
            <br/><paramref name="palette"/> is too large for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format for a preallocated two-dimensional array with the specified parameters.
            By this overload you can specify a pair of custom getter/setter delegates using the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> color type.
            If other color types fit better for the custom format or you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColor">A delegate that can get the 32-bit color of a pixel in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColor">A delegate that can set the color of a pixel from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see langword="null"/>.
            <br/>-or-
            <br/>Both <paramref name="rowGetColor"/> and <paramref name="rowSetColor"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <paramref name="pixelFormatInfo"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format for a preallocated two-dimensional array with the specified parameters.
            By this overload you can specify a pair of custom getter/setter delegates using the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> color type.
            If other color types fit better for the custom format or you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColor">A delegate that can get the 32-bit color of a pixel in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColor">A delegate that can set the color of a pixel from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="workingColorSpace">Specifies the preferred color space that should be used when working with the result bitmap data.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see langword="null"/>.
            <br/>-or-
            <br/>Both <paramref name="rowGetColor"/> and <paramref name="rowSetColor"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <paramref name="pixelFormatInfo"/>.
            <br/>-or-
            <br/><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format for a preallocated two-dimensional array with the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="customBitmapDataConfig">The configuration for the custom pixel format. At least one getter or setter delegate must be specified.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> make sure you set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> property to <see langword="true"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> or <paramref name="customBitmapDataConfig"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>.
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.WorkingColorSpace"/> in <paramref name="customBitmapDataConfig"/> is not one of the defined values.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> in <paramref name="customBitmapDataConfig"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.
            <br/>-or-
            <be/>None of the pixel getter/setter delegates are specified in <paramref name="customBitmapDataConfig"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom indexed pixel format for a preallocated two-dimensional array with the specified parameters.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColorIndex">A delegate that can get the color index of a pixel in a row of the bitmap data.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColorIndex">A delegate that can set the color index of a pixel in a row of the bitmap data.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="palette">Specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="trySetPaletteCallback">A delegate to be called when the palette is attempted to be replaced by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> method.
            If <paramref name="buffer"/> belongs to some custom bitmap implementation, it can be used to update its original palette. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see langword="null"/>.
            <br/>-or-
            <br/>Both <paramref name="rowGetColorIndex"/> and <paramref name="rowSetColorIndex"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <paramref name="pixelFormatInfo"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty
            <br/>-or-
            <br/><paramref name="palette"/> is too large for the specified <paramref name="pixelFormatInfo"/>
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is not indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is not between 1 and 16.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom indexed pixel format for a preallocated two-dimensional array with the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">A preallocated array to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="customBitmapDataConfig">The configuration for the custom pixel format. Either the getter or the setter delegate must be specified.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> make sure you set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> property to <see langword="true"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> or <paramref name="customBitmapDataConfig"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.Palette"/> in <paramref name="customBitmapDataConfig"/> is too large for the specified <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> in <paramref name="customBitmapDataConfig"/> is not indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is not between 1 and 16.
            <br/>-or-
            <be/>Neither the getter nor the setter delegate is specified in <paramref name="customBitmapDataConfig"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_Array2D_1.htm">Array2D&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/>.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException">The <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Collections_Array2D_1_IsNull.htm">IsNull</a> property of <paramref name="buffer"/> is <see langword="true"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <paramref name="pixelFormat"/>
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_Array2D_1.htm">Array2D&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create.</param>
            <param name="workingColorSpace">Specifies the preferred color space that should be used when working with the result bitmap data.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException">The <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Collections_Array2D_1_IsNull.htm">IsNull</a> property of <paramref name="buffer"/> is <see langword="true"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <paramref name="pixelFormat"/>
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats
            <br/>-or-
            <br/><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_Array2D_1.htm">Array2D&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create.</param>
            <param name="palette">If <paramref name="pixelFormat"/> represents an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.</param>
            <param name="trySetPaletteCallback">A delegate to be called when the palette is attempted to be replaced by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> method.
            If <paramref name="buffer"/> belongs to some custom bitmap implementation, it can be used to update its original palette. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns> 
            <exception cref="T:System.ArgumentNullException">The <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Collections_Array2D_1_IsNull.htm">IsNull</a> property of <paramref name="buffer"/> is <see langword="true"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <paramref name="pixelFormat"/>
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty
            <br/>-or-
            <br/><paramref name="palette"/> is too large for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            By this overload you can specify a pair of custom getter/setter delegates using the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> color type.
            If other color types fit better for the custom format or you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_Array2D_1.htm">Array2D&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColor">A delegate that can get the 32-bit color of a pixel in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColor">A delegate that can set the color of a pixel from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException">The <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Collections_Array2D_1_IsNull.htm">IsNull</a> property of <paramref name="buffer"/> is <see langword="true"/>.
            <br/>-or-
            <br/>Both <paramref name="rowGetColor"/> and <paramref name="rowSetColor"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <paramref name="pixelFormatInfo"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            By this overload you can specify a pair of custom getter/setter delegates using the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> color type.
            If other color types fit better for the custom format or you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_Array2D_1.htm">Array2D&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColor">A delegate that can get the 32-bit color of a pixel in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColor">A delegate that can set the color of a pixel from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="workingColorSpace">Specifies the preferred color space that should be used when working with the result bitmap data.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException">The <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Collections_Array2D_1_IsNull.htm">IsNull</a> property of <paramref name="buffer"/> is <see langword="true"/>.
            <br/>-or-
            <br/>Both <paramref name="rowGetColor"/> and <paramref name="rowSetColor"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <paramref name="pixelFormatInfo"/>.
            <br/>-or-
            <br/><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_Array2D_1.htm">Array2D&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="customBitmapDataConfig">The configuration for the custom pixel format. At least one getter or setter delegate must be specified.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> make sure you set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> property to <see langword="true"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException">The <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Collections_Array2D_1_IsNull.htm">IsNull</a> property of <paramref name="buffer"/> is <see langword="true"/>.
            <br/>-or-
            <br/><paramref name="customBitmapDataConfig"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>.
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.WorkingColorSpace"/> in <paramref name="customBitmapDataConfig"/> is not one of the defined values.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> in <paramref name="customBitmapDataConfig"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.
            <br/>-or-
            <be/>None of the pixel getter/setter delegates are specified in <paramref name="customBitmapDataConfig"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom indexed pixel format wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_Array2D_1.htm">Array2D&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColorIndex">A delegate that can get the color index of a pixel in a row of the bitmap data.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColorIndex">A delegate that can set the color index of a pixel in a row of the bitmap data.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="palette">Specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="trySetPaletteCallback">A delegate to be called when the palette is attempted to be replaced by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> method.
            If <paramref name="buffer"/> belongs to some custom bitmap implementation, it can be used to update its original palette. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException">The <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Collections_Array2D_1_IsNull.htm">IsNull</a> property of <paramref name="buffer"/> is <see langword="true"/>.
            <br/>-or-
            <br/>Both <paramref name="rowGetColorIndex"/> and <paramref name="rowSetColorIndex"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <paramref name="pixelFormatInfo"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty
            <br/>-or-
            <br/><paramref name="palette"/> is too large for the specified <paramref name="pixelFormatInfo"/>
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is not indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is not between 1 and 16.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom indexed pixel format wrapping the specified <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> overload for details.
            </summary>
            <typeparam name="T">The type of the elements in <paramref name="buffer"/>.</typeparam>
            <param name="buffer">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Collections_Array2D_1.htm">Array2D&lt;T></a> to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</param>
            <param name="pixelWidth">The width of the bitmap data to create in pixels.</param>
            <param name="customBitmapDataConfig">The configuration for the custom pixel format. Either the getter or the setter delegate must be specified.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> make sure you set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> property to <see langword="true"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException">The <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Collections_Array2D_1_IsNull.htm">IsNull</a> property of <paramref name="buffer"/> is <see langword="true"/>.
            <br/>-or-
            <paramref name="customBitmapDataConfig"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelWidth"/> is too large for the specified <paramref name="buffer"/> and <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is empty
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.Palette"/> in <paramref name="customBitmapDataConfig"/> is too large for the specified <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> in <paramref name="customBitmapDataConfig"/> is not indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is not between 1 and 16.
            <br/>-or-
            <be/>Neither the getter nor the setter delegate is specified in <paramref name="customBitmapDataConfig"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping an unmanaged <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <param name="buffer">The memory address to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            Make sure there is enough allocated memory for the specified <paramref name="size"/>, <paramref name="stride"/> and <paramref name="pixelFormat"/>;
            otherwise, accessing pixels may corrupt memory or throw an <see cref="T:System.AccessViolationException"/>.
            If it points to managed memory make sure it is pinned until the returned bitmap data is disposed.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.
            It can be negative for bottom-up layout (ie. when <paramref name="buffer"/> points to the first pixel of the bottom row).</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see cref="F:System.IntPtr.Zero">IntPtr.Zero</see>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats
            <br/>-or-
            <br/>The absolute value of <paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping an unmanaged <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            </summary>
            <param name="buffer">The memory address to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            Make sure there is enough allocated memory for the specified <paramref name="size"/>, <paramref name="stride"/> and <paramref name="pixelFormat"/>;
            otherwise, accessing pixels may corrupt memory or throw an <see cref="T:System.AccessViolationException"/>.
            If it points to managed memory make sure it is pinned until the returned bitmap data is disposed.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.
            It can be negative for bottom-up layout (ie. when <paramref name="buffer"/> points to the first pixel of the bottom row).</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create.</param>
            <param name="workingColorSpace">Specifies the preferred color space that should be used when working with the result bitmap data.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see cref="F:System.IntPtr.Zero">IntPtr.Zero</see>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats
            <br/>-or-
            <br/>The absolute value of <paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormat"/>
            <br/>-or-
            <br/><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping an unmanaged <paramref name="buffer"/> and using the specified parameters.
            </summary>
            <param name="buffer">The memory address to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            Make sure there is enough allocated memory for the specified <paramref name="size"/>, <paramref name="stride"/> and <paramref name="pixelFormat"/>;
            otherwise, accessing pixels may corrupt memory or throw an <see cref="T:System.AccessViolationException"/>.
            If it points to managed memory make sure it is pinned until the returned bitmap data is disposed.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.
            It can be negative for bottom-up layout (ie. when <paramref name="buffer"/> points to the first pixel of the bottom row).</param>
            <param name="pixelFormat">The pixel format in <paramref name="buffer"/> and the bitmap data to create.</param>
            <param name="palette">If <paramref name="pixelFormat"/> represents an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.</param>
            <param name="trySetPaletteCallback">A delegate to be called when the palette is attempted to be replaced by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> method.
            If <paramref name="buffer"/> belongs to some custom bitmap implementation, it can be used to update its original palette. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see cref="F:System.IntPtr.Zero">IntPtr.Zero</see>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/><paramref name="pixelFormat"/> is not one of the valid formats
            <br/>-or-
            <br/>The absolute value of <paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormat"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="buffer"/> is too small for the specified <paramref name="size"/>, <paramref name="pixelFormat"/> and <paramref name="stride"/>
            <br/>-or-
            <br/>The absolute value of <paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormat"/>
            <br/>-or-
            <br/><paramref name="palette"/> is too large for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow,System.Int32,KGySoft.Drawing.Imaging.Color32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow,System.Int32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format wrapping an unmanaged <paramref name="buffer"/> and using the specified parameters.
            By this overload you can specify a pair of custom getter/setter delegates using the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> color type.
            If other color types fit better for the custom format or you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <param name="buffer">The memory address to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            Make sure there is enough allocated memory for the specified <paramref name="size"/>, <paramref name="stride"/> and <paramref name="pixelFormatInfo"/>;
            otherwise, accessing pixels may corrupt memory or throw an <see cref="T:System.AccessViolationException"/>.
            If it points to managed memory make sure it is pinned until the returned bitmap data is disposed.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.
            It can be negative for bottom-up layout (ie. when <paramref name="buffer"/> points to the first pixel of the bottom row).</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColor">A delegate that can get the 32-bit color of a pixel in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColor">A delegate that can set the color of a pixel from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see cref="F:System.IntPtr.Zero">IntPtr.Zero</see>
            <br/>-or-
            <br/>Both <paramref name="rowGetColor"/> and <paramref name="rowSetColor"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/>The absolute value of <paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormatInfo"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="pixelFormatInfo"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow,System.Int32,KGySoft.Drawing.Imaging.Color32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow,System.Int32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format wrapping an unmanaged <paramref name="buffer"/> and using the specified parameters.
            By this overload you can specify a pair of custom getter/setter delegates using the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> color type.
            If other color types fit better for the custom format or you can ensure that the delegates don't capture <paramref name="buffer"/> use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <param name="buffer">The memory address to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            Make sure there is enough allocated memory for the specified <paramref name="size"/>, <paramref name="stride"/> and <paramref name="pixelFormatInfo"/>;
            otherwise, accessing pixels may corrupt memory or throw an <see cref="T:System.AccessViolationException"/>.
            If it points to managed memory make sure it is pinned until the returned bitmap data is disposed.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.
            It can be negative for bottom-up layout (ie. when <paramref name="buffer"/> points to the first pixel of the bottom row).</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColor">A delegate that can get the 32-bit color of a pixel in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColor">A delegate that can set the color of a pixel from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value in a row of the bitmap data.
            If <paramref name="pixelFormatInfo"/> represents a wider format it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload instead.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="workingColorSpace">Specifies the preferred color space that should be used when working with the result bitmap data.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.</param>
            <param name="backColor">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance. It does not affect the actual returned bitmap content.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">For pixel formats without alpha gradient support specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for details. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see cref="F:System.IntPtr.Zero">IntPtr.Zero</see>
            <br/>-or-
            <br/>Both <paramref name="rowGetColor"/> and <paramref name="rowSetColor"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/>The absolute value of <paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormatInfo"/>
            <br/>-or-
            <br/><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="pixelFormatInfo"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format wrapping an unmanaged <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomBitmapDataConfig)"/> overload for details.
            </summary>
            <param name="buffer">The memory address to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            Make sure there is enough allocated memory for the specified <paramref name="size"/>, <paramref name="stride"/> and <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>;
            otherwise, accessing pixels may corrupt memory or throw an <see cref="T:System.AccessViolationException"/>.
            If it points to managed memory make sure it is pinned until the returned bitmap data is disposed.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.
            It can be negative for bottom-up layout (ie. when <paramref name="buffer"/> points to the first pixel of the bottom row).</param>
            <param name="customBitmapDataConfig">The configuration for the custom pixel format. At least one getter or setter delegate must be specified.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> or its owner object to make sure you set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> property to <see langword="true"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see cref="F:System.IntPtr.Zero">IntPtr.Zero</see>
            <br/>-or-
            <br/><paramref name="customBitmapDataConfig"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/>The absolute value of <paramref name="stride"/> is too small for the specified width and <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>.
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.WorkingColorSpace"/> in <paramref name="customBitmapDataConfig"/> is not one of the defined values.</exception>
            <exception cref="T:System.ArgumentException"><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> in <paramref name="customBitmapDataConfig"/> is indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is 0.
            <br/>-or-
            <be/>None of the pixel getter/setter delegates are specified in <paramref name="customBitmapDataConfig"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow,System.Int32,System.Int32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow,System.Int32,System.Int32},KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format wrapping an unmanaged <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.PixelFormatInfo,System.Func{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},System.Action{KGySoft.Drawing.Imaging.ICustomBitmapDataRow{``0},System.Int32,System.Int32},KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)"/> overload for details.
            </summary>
            <param name="buffer">The memory address to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            Make sure there is enough allocated memory for the specified <paramref name="size"/>, <paramref name="stride"/> and <paramref name="pixelFormatInfo"/>;
            otherwise, accessing pixels may corrupt memory or throw an <see cref="T:System.AccessViolationException"/>.
            If it points to managed memory make sure it is pinned until the returned bitmap data is disposed.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.
            It can be negative for bottom-up layout (ie. when <paramref name="buffer"/> points to the first pixel of the bottom row).</param>
            <param name="pixelFormatInfo">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that describes the pixel format.</param>
            <param name="rowGetColorIndex">A delegate that can get the color index of a pixel in a row of the bitmap data.
            If <see langword="null"/>, then the returned instance will be write-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>).</param>
            <param name="rowSetColorIndex">A delegate that can set the color index of a pixel in a row of the bitmap data.
            If <see langword="null"/>, then the returned instance will be read-only (can be cast to <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>).</param>
            <param name="palette">Specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="trySetPaletteCallback">A delegate to be called when the palette is attempted to be replaced by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> method.
            If <paramref name="buffer"/> belongs to some custom bitmap implementation, it can be used to update its original palette. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="disposeCallback">A delegate to be called when the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is disposed or finalized. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see cref="F:System.IntPtr.Zero">IntPtr.Zero</see>
            <br/>-or-
            <br/>Both <paramref name="rowGetColorIndex"/> and <paramref name="rowSetColorIndex"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/>The absolute value of <paramref name="stride"/> is too small for the specified width and <paramref name="pixelFormatInfo"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="palette"/> is too large for the specified <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>
            <br/>-or-
            <br/><paramref name="pixelFormatInfo"/> is not indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is not between 1 and 16.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.IntPtr,System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)">
            <summary>
            Creates an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance with a custom non-indexed pixel format wrapping an unmanaged <paramref name="buffer"/> and using the specified parameters.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> overload for details.
            </summary>
            <param name="buffer">The memory address to be used as the underlying buffer for the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            Make sure there is enough allocated memory for the specified <paramref name="size"/>, <paramref name="stride"/> and <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>;
            otherwise, accessing pixels may corrupt memory or throw an <see cref="T:System.AccessViolationException"/>.
            If it points to managed memory make sure it is pinned until the returned bitmap data is disposed.</param>
            <param name="size">The size of the bitmap data to create in pixels.</param>
            <param name="stride">The size of a row in bytes. It allows to have some padding at the end of each row.
            It can be negative for bottom-up layout (ie. when <paramref name="buffer"/> points to the first pixel of the bottom row).</param>
            <param name="customBitmapDataConfig">The configuration for the custom pixel format. Either the getter or the setter delegate must be specified.
            If you can ensure that the delegates don't capture <paramref name="buffer"/> or its owner object to make sure you set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> property to <see langword="true"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance wrapping the specified <paramref name="buffer"/> and using the provided parameters.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <see cref="F:System.IntPtr.Zero">IntPtr.Zero</see>
            <br/>-or-
            <br/><paramref name="customBitmapDataConfig"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="size"/> has a zero or negative width or height
            <br/>-or-
            <br/>The absolute value of <paramref name="stride"/> is too small for the specified width and <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>.</exception>
            <exception cref="T:System.ArgumentException"><see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.Palette"/> in <paramref name="customBitmapDataConfig"/> is too large for the specified <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>
            <br/>-or-
            <br/><see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> in <paramref name="customBitmapDataConfig"/> is not indexed or its <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> is not between 1 and 16.
            <br/>-or-
            <be/>Neither the getter nor the setter delegate is specified in <paramref name="customBitmapDataConfig"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.Load(System.IO.Stream)">
            <summary>
            Loads a managed <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance from the specified <paramref name="stream"/> that was saved by
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Save(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream)">BitmapDataExtensions.Save</see> method.
            </summary>
            <param name="stream">The stream to load the bitmap data from.</param>
            <returns>A managed <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance loaded from the specified <paramref name="stream"/>.</returns>
            <remarks>
            <note>This method blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.BeginLoad(System.IO.Stream,KGySoft.Threading.AsyncConfig)">BeginLoad</see>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.LoadAsync(System.IO.Stream,KGySoft.Threading.TaskConfig)">LoadAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to set up cancellation or for reporting progress.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.BeginLoad(System.IO.Stream,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to load a managed <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance from the specified <paramref name="stream"/> asynchronously that was saved by
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Save(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream)">BitmapDataExtensions.Save</see> method.
            </summary>
            <param name="stream">The stream to load the bitmap data from.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.LoadAsync(System.IO.Stream,KGySoft.Threading.TaskConfig)">LoadAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.EndLoad(System.IAsyncResult)">EndLoad</see> method.</para>
            <para>This method is not a blocking call, though the operation is not parallelized and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is ignored.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.EndLoad(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.BeginLoad(System.IO.Stream,KGySoft.Threading.AsyncConfig)">BeginLoad</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.LoadAsync(System.IO.Stream,KGySoft.Threading.TaskConfig)">LoadAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that is the result of the operation,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <c>asyncConfig</c> parameter was <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.LoadAsync(System.IO.Stream,KGySoft.Threading.TaskConfig)">
            <summary>
            Loads a managed <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance from the specified <paramref name="stream"/> asynchronously that was saved by
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Save(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream)">BitmapDataExtensions.Save</see> method.
            </summary>
            <param name="stream">The stream to load the bitmap data from.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.
            its result can be <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method is not a blocking call, though the operation is not parallelized and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is ignored.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateManagedBitmapData``1(KGySoft.Collections.Array2D{``0},System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)">
            <summary>
            Creates a managed <see cref="T:KGySoft.Drawing.Imaging.IBitmapDataInternal"/> for a preallocated 1D array (wrapped into an <see cref="T:KGySoft.Collections.Array2D`1"/> struct).
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateManagedBitmapData``1(``0[0:,0:],System.Int32,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Palette,System.Func{KGySoft.Drawing.Imaging.Palette,System.Boolean},System.Action)">
            <summary>
            Creates a managed <see cref="T:KGySoft.Drawing.Imaging.IBitmapDataInternal"/> for a preallocated 2D array.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.BitmapDataWrapper">
            <summary>
            Provides a wrapper for custom <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> implementations that do not implement <see cref="T:KGySoft.Drawing.Imaging.IBitmapDataInternal"/>.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.CustomBitmapDataConfig">
            <summary>
            Represents the configuration of a non-indexed custom bitmap data that can be created by the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData">CreateBitmapData</see>
            methods that have a <see cref="T:KGySoft.Drawing.Imaging.CustomBitmapDataConfig"/> parameter.
            </summary>
            <remarks>
            <para>The <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> property and at least one getter or setter delegate must be set
            to create a valid custom bitmap data.</para>
            <para>It is enough to set only one getter and/or setter with the best matching color type. For example, if you set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowGetColor64"/> property only,
            which returns the pixels as <see cref="T:KGySoft.Drawing.Imaging.Color64"/> values, then all of the other pixel-reading methods will use this delegate and will convert the result from <see cref="T:KGySoft.Drawing.Imaging.Color64"/>.</para>
            <para>If none of the setter delegates are set, then the custom bitmap data will be read-only.
            And if none of the getter delegates are set, then the custom bitmap data will be write-only.</para>
            <para>The delegates should not reference or capture the back buffer directly. Instead, they should use the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/>
            property of the accessor delegates to access the bitmap data. If this is true for all of the delegates you can set the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/>
            property to provide better performance and quality in case of certain operations.</para>
            </remarks>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.BackColor">
            <summary>
            Gets or sets a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value for pixel formats without alpha gradient support that specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> value of the created bitmap data.
            It does not affect the actual created bitmap content. The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> method for details about back color and alpha threshold.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.AlphaThreshold">
            <summary>
            Gets or sets a value for pixel formats without alpha gradient support that specifies the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> value of the created bitmap data.
            See the <strong>Remarks</strong> section for details.
            <br/>Default value: <c>128</c>.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> method for details about back color and alpha threshold.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.WorkingColorSpace">
            <summary>
            Gets or sets the preferred color space that should be used when working with the result bitmap data.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, which means the linear color space if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.LinearGamma"/> is set in <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>
            and the sRGB color space otherwise.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for more details.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowGetColor32">
            <summary>
            Gets or sets a delegate that can retrieve a pixel of a row in the custom bitmap data as a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value.
            An image processing operation may prefer this delegate by default.
            If this property is not set, the other delegates tried to be used as a fallback.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowSetColor32">
            <summary>
            Gets or sets a delegate that can set a pixel of a row in the custom bitmap data from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value.
            An image processing operation may prefer this delegate by default.
            If this property is not set, the other delegates tried to be used as a fallback.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowGetPColor32">
            <summary>
            Gets or sets a delegate that can retrieve a pixel of a row in the custom bitmap data as a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value.
            An image processing operation may prefer this delegate if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasPremultipliedAlpha"/> is set
            in <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>. If this property is not set, the other delegates tried to be used as a fallback.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowSetPColor32">
            <summary>
            Gets or sets a delegate that can set a pixel of a row in the custom bitmap data from a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value.
            An image processing operation may prefer this delegate if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasPremultipliedAlpha"/> is set
            in <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>. If this property is not set, the other delegates tried to be used as a fallback.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowGetColor64">
            <summary>
            Gets or sets a delegate that can retrieve a pixel of a row in the custom bitmap data as a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value.
            An image processing operation may prefer this delegate if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Prefers64BitColors"/> is set
            in <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>. If this property is not set, the other delegates tried to be used as a fallback.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowSetColor64">
            <summary>
            Gets or sets a delegate that can set a pixel of a row in the custom bitmap data from a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value.
            An image processing operation may prefer this delegate if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Prefers64BitColors"/> is set
            in <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>. If this property is not set, the other delegates tried to be used as a fallback.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowGetPColor64">
            <summary>
            Gets or sets a delegate that can retrieve a pixel of a row in the custom bitmap data as a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value.
            An image processing operation may prefer this delegate if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Prefers64BitColors"/> and <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasPremultipliedAlpha"/>
            are set in <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>. If this property is not set, the other delegates tried to be used as a fallback.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowSetPColor64">
            <summary>
            Gets or sets a delegate that can set a pixel of a row in the custom bitmap data from a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value.
            An image processing operation may prefer this delegate if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Prefers64BitColors"/> and <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasPremultipliedAlpha"/>
            are set in <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>. If this property is not set, the other delegates tried to be used as a fallback.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowGetColorF">
            <summary>
            Gets or sets a delegate that can retrieve a pixel of a row in the custom bitmap data as a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value.
            An image processing operation may prefer this delegate if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Prefers128BitColors"/> is set
            in <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>. If this property is not set, the other delegates tried to be used as a fallback.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowSetColorF">
            <summary>
            Gets or sets a delegate that can set a pixel of a row in the custom bitmap data from a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value.
            An image processing operation may prefer this delegate if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Prefers128BitColors"/> is set
            in <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>. If this property is not set, the other delegates tried to be used as a fallback.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowGetPColorF">
            <summary>
            Gets or sets a delegate that can retrieve a pixel of a row in the custom bitmap data as a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value.
            An image processing operation may prefer this delegate if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Prefers128BitColors"/> and <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasPremultipliedAlpha"/>
            are set in <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>. If this property is not set, the other delegates tried to be used as a fallback.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfig.RowSetPColorF">
            <summary>
            Gets or sets a delegate that can set a pixel of a row in the custom bitmap data from a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value.
            An image processing operation may prefer this delegate if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Prefers128BitColors"/> and <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasPremultipliedAlpha"/>
            are set in <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/>. If this property is not set, the other delegates tried to be used as a fallback.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase">
            <summary>
            Represents the base class of a bitmap data configuration for custom pixel formats.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat">
            <summary>
            Gets or sets the pixel format of the custom bitmap data to create. This property must be set to a nondefault value to create a valid custom bitmap data
            by the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData">CreateBitmapData</see> methods.
            <br/>Default value: The default value of <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/>, which represents the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Undefined"/> format.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.DisposeCallback">
            <summary>
            Gets or sets a delegate that will be called when the created custom bitmap data is disposed.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess">
            <summary>
            Gets or sets whether the pixel accessor delegates are not tied to a specific buffer instance or memory location but can work with any buffer.
            If the pixel accessor delegates do not capture any specific buffer instance and access the bitmap data only by the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/>
            parameter of the delegate, then it is safe to set this property to <see langword="true"/>.
            <br/>Default value: <see langword="false"/>.
            </summary>
            <remarks>
            <para>It is always recommended to create buffer-independent accessors. If you do so, then you can set this property to <see langword="true"/>, which
            allows improving the quality of some operations.</para>
            <para>When this property is <see langword="true"/>, then an exact clone of a bitmap data with custom format preserves the original pixel format.
            Otherwise, the clone will have a <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> and the raw data of the original pixels might have a different structure.</para>
            <para>The value of this property affects also the quality of the quantizers created by the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromBitmapData(KGySoft.Drawing.Imaging.IBitmapData)">PredefinedColorsQuantizer.FromBitmapData</see>
            method. If this property returns <see langword="true"/>, then the quantizer will be able to reproduce the exact colors of the original custom bitmap data.
            Otherwise, the quantizer may not work correctly for non-indexed bitmaps or for bitmaps with more than 8 bits-per-pixels.</para>
            <para>For safety reasons the default value of this property is <see langword="false"/>.</para>
            </remarks>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig">
            <summary>
            Represents the configuration of an indexed custom bitmap data that can be created by the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData">CreateBitmapData</see>
            methods that have a <see cref="T:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig"/> parameter.
            </summary>
            <remarks>
            <para>The <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> property and at least either the <see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.RowGetColorIndex"/> or
            the <see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.RowSetColorIndex"/> property must be set to create a valid custom bitmap data.</para>
            <para>If <see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.RowSetColorIndex"/> is not set, then the custom bitmap data will be read-only.
            And if <see cref="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.RowGetColorIndex"/> is not set, then the custom bitmap data will be write-only.</para>
            <para>The delegates should not reference or capture the back buffer directly. Instead, they should use the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/>
            property of the accessor delegates to access the bitmap data. If this is true for both of the accessor delegates you can set
            the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> property to provide better performance and quality in case of certain operations.</para>
            </remarks>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.Palette">
            <summary>
            Gets or sets the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the created custom bitmap data.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.
            It can contain fewer colors than the specified <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.PixelFormat"/> can handle.
            <br/>Default value: <see langword="null"/>.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData``1(``0[],System.Drawing.Size,System.Int32,KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig)"/> method for more details.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.TrySetPaletteCallback">
            <summary>
            Gets or sets a delegate that will be invoked when the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">TrySetPalette</see> extension method is called.
            If the bitmap data to create belongs to a bitmap of a 3rd party library, then this delegate can be used to update the actual palette of the actual bitmap.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.RowGetColorIndex">
            <summary>
            Gets or sets a delegate that can retrieve a pixel of a row in the custom bitmap data as a palette index.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig.RowSetColorIndex">
            <summary>
            Gets or sets a delegate that can set a pixel of a row in the custom bitmap from a palette index.
            Make sure you access the row content via the <see cref="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow"/> parameter of the delegate.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.GradientBitmapData`1">
            <summary>
            Represents a read-only bitmap data of a gradient.
            As a public instance should be exposed as an <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.
            As an <see cref="T:KGySoft.Drawing.Imaging.IBitmapDataInternal"/> it allows reading any pixel coordinates, regardless of the actual size.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.SolidBitmapData">
            <summary>
            Represents a read-only bitmap data of a single color.
            As a public instance should be exposed as an <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.ManagedBitmapDataArray2DBase`1.Buffer">
            <summary>
            The pixel buffer where the underlying array is a single dimensional one.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.ManagedCustomBitmapData`1">
            <summary>
            Represents a managed bitmap data wrapper with custom pixel format for a 1D array (wrapped into an <see cref="T:KGySoft.Collections.Array2D`1"/>).
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.ManagedCustomBitmapDataIndexed`1">
            <summary>
            Represents a managed bitmap data wrapper with custom indexed pixel format for a 1D array (wrapped into an <see cref="T:KGySoft.Collections.Array2D`1"/>).
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.ManagedCustomBitmapData2D`1">
            <summary>
            Represents a managed bitmap data wrapper with custom pixel format for an actual 2D array.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer">
            <summary>
            Provides an <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> implementation for error diffusion dithering.
            Use the static properties of this class to use predefined error diffusion filters or the <see cref="M:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.#ctor(System.Byte[0:,0:],System.Int32,System.Int32,System.Boolean,System.Nullable{System.Boolean})">constructor</see> to create a custom one.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para>The <see cref="M:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.#ctor(System.Byte[0:,0:],System.Int32,System.Int32,System.Boolean,System.Nullable{System.Boolean})">constructor</see> can be used to create an error diffusion ditherer using a custom matrix.</para>
            <para>Use the static properties to obtain an instance with predefined parameters.</para>
            <para>The <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> class uses an adaptive dithering technique, which disperses the quantization error of each pixels to the neighboring ones.
            Thereby the strength of the dithering is automatically adjusted by the algorithm itself, which provides good results also for palettes with uneven color distribution
            (which is not the case for <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer">ordered dithering</see>, for example).</para>
            <para>As the dithered result of a pixel depends on the already processed pixels, the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> does not support parallel processing, which makes
            it slower than most of the other dithering methods.</para>
            </remarks>
            <example>
            <para>The following table demonstrates the effect of the dithering:
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
            <tbody><tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
            <br/>Color hues with alpha gradient</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilver.gif" alt="Color hues with system default 8 BPP palette and silver background"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see>, no dithering</para>
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredFS.gif" alt="Color hues with system default 8 BPP palette, silver background and Floyd-Steinberg dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para>
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredS3.gif" alt="Color hues with system default 8 BPP palette, using silver background and Sierra 3 dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.Sierra3">Sierra 3</see> dithering</para>
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredSA.gif" alt="Color hues with system default 8 BPP palette, using silver background and Stevenson-Arce dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.StevensonArce">Stevenson-Arce</see> dithering</para></div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
            <br/>Grayscale color shades</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/GrayShadesBW.gif" alt="Grayscale color shades with black and white palette"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see>, no dithering</para>
            <para><img src="../Help/Images/GrayShadesBWDitheredFS.gif" alt="Grayscale color shades with black and white palette, using Floyd-Steinberg dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para>
            <para><img src="../Help/Images/GrayShadesBWDitheredS3.gif" alt="Grayscale color shades with black and white palette using Sierra 3 dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.Sierra3">Sierra 3</see> dithering</para>
            <para><img src="../Help/Images/GrayShadesBWDitheredSA.gif" alt="Grayscale color shades with black and white palette using Stevenson-Arce dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.StevensonArce">Stevenson-Arce</see> dithering</para></div></td>
            </tr>
            </tbody></table></para>
            <para>Calculation of the quantization error may happen in two ways. The publicly available algorithms usually calculate the error for each color channels,
            which usually provides good results with color palettes. However, when quantizing color images with a black and white or grayscale palette,
            this approach may fail. For example, if the quantizer returns black for a fully saturated blue pixel, the quantization error is zero on the red and green channels and
            100% on the blue channel. The problem is that this error cannot be propagated to the neighboring pixels if they have the same color because adding any more blue
            to already fully saturated blue pixels will not change anything. Therefore, the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> can propagate quantization error
            by brightness based on human perception, which is more appropriate for palettes with grayscale colors.
            The <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> tries to auto detect the strategy for each dithering session but this can be overridden by
            the <see cref="M:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.ConfigureErrorDiffusionMode(System.Nullable{System.Boolean})">ConfigureErrorDiffusionMode</see> method.</para>
            <para>The following table demonstrates the effect of different strategies:
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
            <tbody><tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
            <br/>Color hues with alpha gradient</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredFS.gif" alt="Color hues with system default 8 BPP palette, silver background and Floyd-Steinberg dithering, using error diffusion by RGB channels"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering, using error diffusion by RGB channels (the default strategy for non-grayscale palettes)</para>
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredFSByBr.gif" alt="Color hues with system default 8 BPP palette, silver background and Floyd-Steinberg dithering, using error diffusion by brightness"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering, using error diffusion by brightness</para></div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/ColorWheel.png" alt="Color wheel"/>
            <br/>Color wheel</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/ColorWheelBWBlueDitheredFSByBr.gif" alt="Color wheel with black and white palette, blue background and Floyd-Steinberg dithering, using error diffusion by brightness (the default strategy for grayscale palettes)"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering, using blue background and error diffusion by brightness (the default strategy for grayscale palettes). All colors appear in the result with different patterns.</para>
            <para><img src="../Help/Images/ColorWheelBWBlueDitheredFSByRgb.gif" alt="Color wheel with black and white palette, blue background and Floyd-Steinberg dithering, using error diffusion by RGB channels"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering, using blue background and error diffusion by RGB channels. The fully saturated colors turned completely black or white.</para></div></td>
            </tr>
            </tbody></table></para>
            <para>A typical artifact of error diffusion dithering is a ripple effect, which often appears in homogeneous areas of the dithered image. This is due to the fact that most filters propagate quantization errors mostly to right and down,
            whereas pixels are processed left-to-right in each line while lines are scanned top-down (raster processing). The ripple effect can be reduced if every second line is processed in the opposite direction (serpentine processing).
            You can use the <see cref="M:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.ConfigureProcessingDirection(System.Boolean)">ConfigureProcessingDirection</see> method to obtain an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> with serpentine processing mode,
            which processes even lines left-to-right and odd lines right-to-left.</para>
            <para>The following table demonstrates the effect of different processing directions:
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
            <tbody><tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/Cameraman.png" alt="Test image &quot;Cameraman&quot;"/>
            <br/>Original test image "Cameraman"</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/CameramanBWDitheredFS.gif" alt="Test image &quot;Cameraman&quot; with black and white palette, using Floyd-Steinberg dithering with raster processing"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering, using raster processing. The ripple effect is clearly visible on the coat.</para>
            <para><img src="../Help/Images/CameramanBWDitheredFSSerpentine.gif" alt="Test image &quot;Cameraman&quot; with black and white palette, using Floyd-Steinberg dithering with serpentine processing"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering, using serpentine processing. The ripple effect is gone.</para></div></td>
            </tr>
            </tbody></table></para>
            <note type="tip">See the <strong>Examples</strong> section of the static properties for more examples.</note>
            </example>
            <seealso cref="T:KGySoft.Drawing.Imaging.IDitherer" />
            <seealso cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Dither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance using the original filter proposed by Floyd and Steinberg in 1975 when they came out with the idea of error diffusion dithering.
             Uses a small, 3x2 matrix so the processing is somewhat faster than by the other alternatives.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer_FloydSteinberg.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredFloydSteinberg(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = ErrorDiffusionDitherer.FloydSteinberg;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody><tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredFS.gif" alt="Color hues with system default 8 BPP palette, using silver background and Floyd-Steinberg dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredFS.gif" alt="Grayscale color shades with black and white palette using Floyd-Steinberg dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldDefault8bppSilverA1DitheredFS.gif" alt="Shield icon with system default 8 BPP palette using silver background, alpha threshold = 1 and Floyd-Steinberg dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para>
             <para><img src="../Help/Images/ShieldBWSilverDitheredFS.gif" alt="Shield icon with black and white palette, silver background, using Floyd-Steinberg dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Cameraman.png" alt="Test image &quot;Cameraman&quot;"/>
             <br/>Original test image "Cameraman"</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/Cameraman2bppDirectDitheredFS.gif" alt="Test image &quot;Cameraman&quot; with 2 BPP grayscale palette using Floyd-Steinberg dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale4(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">grayscale 4 color palette</see></para>
             <para><img src="../Help/Images/CameramanBWDitheredFS.gif" alt="Test image &quot;Cameraman&quot; with black and white palette using Floyd-Steinberg dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Lena.png" alt="Test image &quot;Lena&quot;"/>
             <br/>Original test image "Lena"</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/LenaRgb332DMFloydSteinberg.gif" alt="Test image &quot;Lena&quot; with RGB332 palette using direct color mapping and Floyd-Steinberg dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb332(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">RGB 332 palette</see></para>
             <para><img src="../Help/Images/LenaRgb111DitheredFS.gif" alt="Test image &quot;Lena&quot; with RGB111 palette and Floyd-Steinberg dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)">custom 8-color palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.JarvisJudiceNinke">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance using the filter proposed by Jarvis, Judice and Ninke in 1976.
             Uses a 5x3 matrix so the processing is slower than by the original <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> filter but distributes errors in a wider range.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer_JarvisJudiceNinke.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredJarvisJudiceNinke(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = ErrorDiffusionDitherer.JarvisJudiceNinke;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredJJN.gif" alt="Color hues with system default 8 BPP palette, using silver background and Jarvis-Judice-Ninke dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredJJN.gif" alt="Grayscale color shades with black and white palette using Jarvis-Judice-Ninke dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.Stucki">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance using the filter proposed by P. Stucki in 1981.
             Uses a 5x3 matrix so the processing is slower than by the original <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> filter but distributes errors in a wider range.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer_Stucki.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredStucki(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = ErrorDiffusionDitherer.Stucki;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredSt.gif" alt="Color hues with system default 8 BPP palette, using silver background and Stucki dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredSt.gif" alt="Grayscale color shades with black and white palette using Stucki dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.Burkes">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance using the filter proposed by D. Burkes in 1988.
             Uses a 5x2 matrix, which is actually the same as the first two lines of the matrix used by the <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.Stucki"/> filter.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer_Burkes.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredBurkes(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = ErrorDiffusionDitherer.Burkes;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredBrk.gif" alt="Color hues with system default 8 BPP palette, using silver background and Burkes dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredBrk.gif" alt="Grayscale color shades with black and white palette using Burkes dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.Sierra3">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance using the three-line filter proposed by Frankie Sierra in 1989.
             Uses a 5x3 matrix so this is the slowest Sierra filter but this disperses errors to the furthest among them.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer_Sierra3.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredSierra3(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = ErrorDiffusionDitherer.Sierra3;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredS3.gif" alt="Color hues with system default 8 BPP palette, using silver background and Sierra 3 dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredS3.gif" alt="Grayscale color shades with black and white palette using Sierra 3 dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.Sierra2">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance using the two-line filter proposed by Frankie Sierra in 1990.
             Uses a 5x2 matrix so this somewhat faster than the <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.Sierra3">three-line version</see> and still provides a similar quality.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer_Sierra2.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredSierra2(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = ErrorDiffusionDitherer.Sierra2;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredS2.gif" alt="Color hues with system default 8 BPP palette, using silver background and Sierra 2 dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredS2.gif" alt="Grayscale color shades with black and white palette using Sierra 2 dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.SierraLite">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance using a small two-line filter proposed by Frankie Sierra.
             Uses a 3x2 matrix so it has the same performance as the <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> algorithm and also produces a quite similar result.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer_SierraLite.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredSierraLite(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = ErrorDiffusionDitherer.SierraLite;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredSL.gif" alt="Color hues with system default 8 BPP palette, using silver background and Sierra Lite dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredSL.gif" alt="Grayscale color shades with black and white palette using Sierra Lite dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.StevensonArce">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance using the hexagonal filter proposed by Stevenson and Arce in 1985.
             Uses a fairly large, 7x4 matrix, but due to the hexagonal arrangement of the coefficients the processing performance is comparable to a rectangular 5x3 matrix.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer_StevensonArce.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredStevensonArce(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = ErrorDiffusionDitherer.StevensonArce;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredSA.gif" alt="Color hues with system default 8 BPP palette, using silver background and Stevenson-Arce dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredSA.gif" alt="Grayscale color shades with black and white palette using Stevenson-Arce dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.Atkinson">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance using the filter used by the Apple programmer Bill Atkinson.
             Uses a 4x3 matrix of only 6 effective values, and propagates only the 75% of the quantization error, which may cause
             total loss of details of light and dark areas (result may seem under- or overexposed) whereas midtones have higher contrast
             and preserve details better.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer_Atkinson.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredAtkinson(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = ErrorDiffusionDitherer.Atkinson;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredAtk.gif" alt="Color hues with system default 8 BPP palette, using silver background and Atkinson dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredAtk.gif" alt="Grayscale color shades with black and white palette using Atkinson dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.#ctor(System.Byte[0:,0:],System.Int32,System.Int32,System.Boolean,System.Nullable{System.Boolean})">
             <summary>
             Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer" /> class using the specified <paramref name="matrix"/>, <paramref name="divisor"/> and <paramref name="matrixFirstPixelIndex"/>.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer__ctor.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="matrix">A matrix to be used as the coefficients for the quantization errors to be propagated to the neighboring pixels.</param>
             <param name="divisor">Each elements in the <paramref name="matrix"/> will be divided by this value. If less than the sum of the elements
             in the <paramref name="matrix"/>, then only a fraction of the error will be propagated.</param>
             <param name="matrixFirstPixelIndex">Specifies the first effective index in the first row of the matrix. If larger than zero, then the error will be propagated also to the bottom-left direction.
             Must be between 0 and <paramref name="matrix"/> width, excluding upper bound.</param>
             <param name="serpentineProcessing"><see langword="true"/> to process odd lines right-to-left and even lines left-to-right;
             <see langword="false"/> to process all lines left-to-right.
             <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.ConfigureProcessingDirection(System.Boolean)">ConfigureProcessingDirection</see> method for details. This parameter is optional.
             <br/>Default value: <see langword="false"/>.</param>
             <param name="byBrightness"><see langword="true"/> to apply the same quantization error on every color channel determined by brightness difference;
             <see langword="false"/> to handle quantization errors on each color channels independently; <see langword="null"/> to auto select strategy.
             Deciding by brightness can produce a better result when fully saturated colors are mapped to a grayscale palette.
             <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.ConfigureErrorDiffusionMode(System.Nullable{System.Boolean})">ConfigureErrorDiffusionMode</see> method for details. This parameter is optional.
             <br/>Default value: <see langword="null"/>.</param>
             <example>
             The following example demonstrates how to use a custom ditherer using the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> constructor:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToCustomDithered(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 // This is actually the Fan dithering (by Zhihang Fan), and uses the same coefficients
                 // as the Floyd-Steinberg dithering in a slightly different arrangement:
                 byte[,] matrix =
                 {
                     { 0, 0, 0, 7 },
                     { 1, 3, 5, 0 },
                 };
            
                 // The matrix values will be divided by this value to determine the portion
                 // of the quantization error to propagate to neighboring pixels:
                 int divisor = 16;
            
                 // The current pixel to be processed is always one pixel left from this index.
                 // This also means that if larger than 1, then some error is propagated also towards the
                 // (bottom-)left direction. For the matrix above value "3" means that whenever a pixel is
                 // processed, 7/16 of the error is propagated to the right, 1/16 and 3/16 to the
                 // bottom-left direction and 5/16 one pixel down from the current pixel.
                 int firstPixelIndex = 3;
            
                 IDitherer ditherer = new ErrorDiffusionDitherer(matrix, divisor, firstPixelIndex);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredFan.gif" alt="Color hues with system default 8 BPP palette, using silver background and Fan dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredFan.gif" alt="Grayscale color shades with black and white palette using Fan dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip"><list type="bullet">
             <item>Use the static properties to perform dithering with predefined filters.</item>
             <item>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> class for more details and image examples.</item>
             </list></note>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.ConfigureErrorDiffusionMode(System.Nullable{System.Boolean})">
            <summary>
            Gets a new <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance that has the specified error diffusion mode.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer_ConfigureErrorDiffusionMode.htm">online help</a> for image examples.</div>
            </summary>
            <param name="byBrightness"><see langword="true"/> to apply the same quantization error on every color channel determined by brightness difference;
            <see langword="false"/> to handle quantization errors on each color channels independently; <see langword="null"/> to auto select strategy.
            Deciding by brightness can produce a better result when fully saturated colors are mapped to a grayscale palette.</param>
            <returns>A new <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance that has the specified error diffusion mode.</returns>
            <remarks>
            <note>This method always returns a new <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance instead of changing the error diffusion mode of the original one.
            This is required for the static properties so they can return a cached instance.</note>
            <para>Calculation of the quantization error may happen in two ways. The publicly available algorithms usually calculate the error for each color channels,
            which usually provides good results with color palettes. However, when quantizing color images with a black and white or grayscale palette,
            this approach may fail. For example, if the quantizer returns black for a fully saturated blue pixel, the quantization error is zero on the red and green channels and
            100% on the blue channel. The problem is that this error cannot be propagated to the neighboring pixels if they have the same color because adding any more blue
            to already fully saturated blue pixels will not change anything. Therefore, the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> can propagate quantization error
            by brightness based on human perception, which is more appropriate for palettes with grayscale colors.</para>
            </remarks>
            <example>
            <para>The following table demonstrates the effect of different strategies:
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
            <tbody>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
            <br/>Color hues with alpha gradient</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredFS.gif" alt="Color hues with system default 8 BPP palette, silver background and Floyd-Steinberg dithering, using error diffusion by RGB channels"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering, using error diffusion by RGB channels (the default strategy for non-grayscale palettes)</para>
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredFSByBr.gif" alt="Color hues with system default 8 BPP palette, silver background and Floyd-Steinberg dithering, using error diffusion by brightness"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering, using error diffusion by brightness</para></div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/ColorWheel.png" alt="Color wheel"/>
            <br/>Color wheel</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/ColorWheelBWBlueDitheredFSByBr.gif" alt="Color wheel with black and white palette, blue background and Floyd-Steinberg dithering, using error diffusion by brightness (the default strategy for grayscale palettes)"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering, using blue background and error diffusion by brightness (the default strategy for grayscale palettes). All colors appear in the result with different patterns.</para>
            <para><img src="../Help/Images/ColorWheelBWBlueDitheredFSByRgb.gif" alt="Color wheel with black and white palette, blue background and Floyd-Steinberg dithering, using error diffusion by RGB channels"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering, using blue background and error diffusion by RGB channels. The fully saturated colors turned completely black or white.</para></div></td>
            </tr>
            </tbody></table></para>
            </example>
            <example>
            The following example demonstrates how to specify the error diffusion mode for a predefined filter:
            <code lang="C#"><![CDATA[
            // getting a predefined ditherer that disperses quantization error by brightness:
            IDitherer ditherer = ErrorDiffusionDitherer.FloydSteinberg.ConfigureErrorDiffusionMode(byBrightness: true);
            ]]></code>
            </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.ConfigureProcessingDirection(System.Boolean)">
            <summary>
            Gets a new <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance that has the specified processing direction.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_ErrorDiffusionDitherer_ConfigureProcessingDirection.htm">online help</a> for image examples.</div>
            </summary>
            <param name="serpentine"><see langword="true"/> to process odd lines right-to-left and even lines left-to-right;
            <see langword="false"/> to process all lines left-to-right.</param>
            <returns>A new <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance that has the specified processing direction.</returns>
            <remarks>
            <note>This method always returns a new <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/> instance instead of changing the processing direction of the original one.
            This is required for the static properties so they can return a cached instance.</note>
            <para>A typical artifact of error diffusion dithering is a ripple effect, which often appears in homogeneous areas of the dithered image. This is due to the fact that most filters propagate quantization errors mostly to right and down,
            whereas pixels are processed left-to-right in each line while lines are scanned top-down (raster processing). The ripple effect can be reduced if every second line is processed in the opposite direction (serpentine processing).</para>
            </remarks>
            <example>
            <para>The following table demonstrates the effect of different processing directions:
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
            <tbody>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/Cameraman.png" alt="Test image &quot;Cameraman&quot;"/>
            <br/>Original test image "Cameraman"</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/CameramanBWDitheredFS.gif" alt="Test image &quot;Cameraman&quot; with black and white palette, using Floyd-Steinberg dithering with raster processing"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering, using raster processing. The ripple effect is clearly visible on the coat.</para>
            <para><img src="../Help/Images/CameramanBWDitheredFSSerpentine.gif" alt="Test image &quot;Cameraman&quot; with black and white palette, using Floyd-Steinberg dithering with serpentine processing"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering, using serpentine processing. The ripple effect is gone.</para></div></td>
            </tr>
            </tbody></table></para>
            <para>
            The following example demonstrates how to specify the processing direction for a predefined filter:
            <code lang="C#"><![CDATA[
            // getting a predefined ditherer with serpentine processing:
            IDitherer ditherer = ErrorDiffusionDitherer.FloydSteinberg.ConfigureProcessingDirection(serpentine: true);
            ]]></code></para>
            </example>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer">
            <summary>
            Provides an <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> implementation for applying an interleaved gradient noise pattern to the dithered result. For other noise-like
            ditherers see the <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.BlueNoise">OrderedDitherer.BlueNoise</see> property and the <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/> class.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Imaging_InterleavedGradientNoiseDitherer.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <note>The noise generated by the <see cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/> is not random but based on a formula so using the
            same source image, quantizer and strength produces always the same result (similarly to the <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.BlueNoise"/> ditherer,
            which is based on <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer">ordered dithering</see>).
            To dither images with real random noise use the <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/>, which applies white noise to the quantized source.</note>
            </remarks>
            <example>
            <para>The following table demonstrates the effect of the dithering:
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
            <tbody>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
            <br/>Color hues with alpha gradient</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilver.gif" alt="Color hues with system default 8 BPP palette and silver background"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see>, no dithering</para>
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredIGN.gif" alt="Color hues with system default 8 BPP palette, using silver background and interleaved gradient noise dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see> and interleaved gradient noise dithering</para></div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
            <br/>Grayscale color shades</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/GrayShadesBW.gif" alt="Grayscale color shades with black and white palette"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see>, no dithering</para>
            <para><img src="../Help/Images/GrayShadesBWDitheredIGN.gif" alt="Grayscale color shades with black and white palette using interleaved gradient noise dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and interleaved gradient noise dithering</para></div></td>
            </tr>
            </tbody></table></para>
            </example>
            <seealso cref="T:KGySoft.Drawing.Imaging.IDitherer" />
            <seealso cref="T:KGySoft.Drawing.Imaging.OrderedDitherer" />
            <seealso cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer" />
            <seealso cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer" />
        </member>
        <member name="M:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer.#ctor(System.Single)">
             <summary>
             Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/> class.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_InterleavedGradientNoiseDitherer__ctor_1.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="strength">The strength of the dithering effect between 0 and 1 (inclusive bounds).
             Specify 0 to use an auto value for each dithering session based on the used quantizer.
             <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureStrength(System.Single)">OrderedDitherer.ConfigureStrength</see> method
             for more details and some examples regarding dithering strength.
             The same applies also for the <see cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/> class. This parameter is optional.
             <br/>Default value: <c>0</c>.</param>
             <example>
             The following example demonstrates how to use the <see cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/> class.
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredInterleavedGradientNoise(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = new InterleavedGradientNoiseDitherer();
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredIGN.gif" alt="Color hues with system default 8 BPP palette, using silver background and interleaved gradient noise dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredIGN.gif" alt="Grayscale color shades with black and white palette using interleaved gradient noise dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             </example>
             <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="strength"/> must be between 0 and 1, inclusive bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer.#ctor(KGySoft.Drawing.Imaging.AutoStrengthMode)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/> class with a specific auto strength strategy.
            </summary>
            <param name="autoStrengthMode">An <see cref="T:KGySoft.Drawing.Imaging.AutoStrengthMode"/> value specifying the desired behavior for calibrating auto strength.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureStrength(System.Single)">OrderedDitherer.ConfigureStrength</see> method
            for more details and some examples regarding dithering strength. The same applies also for the <see cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/> class.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="autoStrengthMode"/> is not one of the defined values.</exception>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.OrderedDitherer">
            <summary>
            Provides an <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> implementation for dithering patterns that are based on an ordered matrix.
            Use the static properties of this class to use predefined patterns or the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.#ctor(System.Byte[0:,0:],System.Single)">constructor</see> to create a custom ordered ditherer.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Imaging_OrderedDitherer.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para>The <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.#ctor(System.Byte[0:,0:],System.Single)">constructor</see> can be used to create an ordered ditherer using a custom matrix.</para>
            <para>Use the static properties to obtain an instance with a predefined pattern. For the best results use the <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer8x8</see>
            or <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.BlueNoise">BlueNoise</see> properties. Or you can use the <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.DottedHalftone">DottedHalftone</see> property for artistic results.</para>
            <para>The <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> class offers a very fast dithering technique based on an ordered pattern specified in a matrix of bytes.
            The more different values the matrix has the more number of different patterns can be mapped to the shades of the original pixels.
            While quantizing lighter and lighter colors, the different patterns appear in the order of the values in the specified matrix.</para>
            </remarks>
            <example>
            <para>The following table demonstrates the effect of the dithering:
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
            <tbody>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
            <br/>Color hues with alpha gradient</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilver.gif" alt="Color hues with system default 8 BPP palette and silver background"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see>, no dithering</para>
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredB8.gif" alt="Color hues with system default 8 BPP palette, silver background and Bayer 8x8 ordered dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para>
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredBN.gif" alt="Color hues with system default 8 BPP palette, using silver background and blue noise dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.BlueNoise">blue noise</see> dithering</para>
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredDH.gif" alt="Color hues with system default 8 BPP palette, using silver background and rectangular 7x7 dotted halftone pattern dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.DottedHalftone">dotted halftone pattern</see> dithering</para></div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
            <br/>Grayscale color shades</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/GrayShadesBW.gif" alt="Grayscale color shades with black and white palette"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see>, no dithering</para>
            <para><img src="../Help/Images/GrayShadesBWDitheredB8.gif" alt="Grayscale color shades with black and white palette, using Bayer 8x8 ordered dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para>
            <para><img src="../Help/Images/GrayShadesBWDitheredBN.gif" alt="Grayscale color shades with black and white palette using blue noise dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.BlueNoise">blue noise</see> dithering</para>
            <para><img src="../Help/Images/GrayShadesBWDitheredDH.gif" alt="Grayscale color shades with black and white palette using rectangular 7x7 dotted halftone pattern dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.DottedHalftone">dotted halftone pattern</see> dithering</para></div></td>
            </tr>
            </tbody></table></para>
            <para>Unlike in case of the <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/>, ordered dithering does not adjust strength to the quantization error of a pixel
            but simply uses the specified matrix values based on pixel coordinates to determine the quantized result.
            Therefore, a strength can be specified (see the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.#ctor(System.Byte[0:,0:],System.Single)">constructor</see> and the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureStrength(System.Single)">ConfigureStrength</see> method),
            whose ideal value depends on the colors that a quantizer can return. If the strength is too low, then banding may appear in the result in place of gradients in the original image;
            whereas if the strength is too high, then dithering patterns may appear even in colors without quantization error (overdithering).</para>
            <para>Every static property in the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> returns an instance with auto strength, meaning that
            strength will be calibrated for each dithering session so that neither the black, nor the white colors will suffer from overdithering in the result.</para>
            <para>Auto strength can use different calibration strategies. The default strategy is usually correct if the quantizer returns evenly distributed colors.
            Otherwise, you can apply the <see cref="F:KGySoft.Drawing.Imaging.AutoStrengthMode.Interpolated"/> auto strength mode by the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureAutoStrengthMode(KGySoft.Drawing.Imaging.AutoStrengthMode)">ConfigureAutoStrengthMode</see>
            method that calibrates the strength both for the black and white colors and uses a dynamic strength to each pixel based on its brightness.
            If none of the auto strength modes provide the desired result you can obtain an <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> instance with custom strength
            by the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureStrength(System.Single)">ConfigureStrength</see> method.</para>
            <para>The following table demonstrates the effect of different strengths:
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
            <tbody>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
            <br/>Grayscale color shades</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/GrayShadesDefault4bpp.gif" alt="Grayscale color shades with system default 4 BPP palette"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 4 BPP palette</see>, no dithering. The asymmetry is due to the uneven distribution of gray shades of this palette.</para>
            <para><img src="../Help/Images/GrayShadesDefault4bppDitheredB8.gif" alt="Grayscale color shades with system default 4 BPP palette using Bayer 8x8 ordered dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 4 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering using auto strength. Darker shades have banding.</para>
            <para><img src="../Help/Images/GrayShadesDefault4bppDitheredB8Str-5.gif" alt="Grayscale color shades with system default 4 BPP palette using a stronger Bayer 8x8 ordered dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 4 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering using strength = 0.5. Now there is no banding but white suffers from overdithering.</para>
            <para><img src="../Help/Images/GrayShadesDefault4bppDitheredB8Interpolated.gif" alt="Grayscale color shades with system default 4 BPP palette using 8x8 ordered dithering with interpolated ato strength"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 4 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering using <see cref="F:KGySoft.Drawing.Imaging.AutoStrengthMode.Interpolated"/> auto strength strategy.
            Now there is neither banding nor overdithering for black or white colors.</para></div></td>
            </tr></tbody></table></para>
            <note type="tip">See the <strong>Examples</strong> section of the static properties for more examples.</note>
            </example>
            <seealso cref="T:KGySoft.Drawing.Imaging.IDitherer" />
            <seealso cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Dither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer2x2">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> using the standard Bayer 2x2 matrix.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_OrderedDitherer_Bayer2x2.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredBayer2x2(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = OrderedDitherer.Bayer2x2;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredB2.gif" alt="Color hues with system default 8 BPP palette, using silver background and Bayer 2x2 ordered dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredB2.gif" alt="Grayscale color shades with black and white palette using Bayer 2x2 ordered dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer3x3">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> using the standard Bayer 3x3 matrix.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_OrderedDitherer_Bayer3x3.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredBayer3x3(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = OrderedDitherer.Bayer3x3;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredB3.gif" alt="Color hues with system default 8 BPP palette, using silver background and Bayer 3x3 ordered dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredB3.gif" alt="Grayscale color shades with black and white palette using Bayer 3x3 ordered dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer4x4">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> using the standard Bayer 4x4 matrix.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_OrderedDitherer_Bayer4x4.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredBayer4x4(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = OrderedDitherer.Bayer4x4;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredB4.gif" alt="Color hues with system default 8 BPP palette, using silver background and Bayer 4x4 ordered dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredB4.gif" alt="Grayscale color shades with black and white palette using Bayer 4x4 ordered dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> using the standard Bayer 8x8 matrix.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_OrderedDitherer_Bayer8x8.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredBayer8x8(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = OrderedDitherer.Bayer8x8;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredB8.gif" alt="Color hues with system default 8 BPP palette, using silver background and Bayer 8x8 ordered dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para>
             <para><img src="../Help/Images/AlphaGradientRgb111SilverDitheredB8.gif" alt="Color hues with RGB111 palette and silver background, using Bayer 8x8 ordered dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)">custom 8-color palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredB8.gif" alt="Grayscale color shades with black and white palette using Bayer 8x8 ordered dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para>
             <para><img src="../Help/Images/GrayShades2bppDitheredB8.gif" alt="Grayscale color shades with 2 BPP grayscale palette, using nearest color lookup and Bayer 8x8 ordered dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale4(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">4-color grayscale palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldDefault8bppBlackDitheredB8.gif" alt="Shield icon with system default 8 BPP palette using Bayer 8x8 ordered dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GirlWithAPearlEarring.png" alt="Test image &quot;Girl with a Pearl Earring&quot;"/>
             <br/>Original test image "Girl with a Pearl Earring"</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GirlWithAPearlEarringDefault8bppDitheredB8Srgb.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with system default 8 BPP palette, quantized in the sRGB color space using Bayer 8x8 ordered dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.OrderedDitherer.DottedHalftone">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> using a 8x8 matrix of a dotted halftone pattern.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_OrderedDitherer_DottedHalftone.htm">online help</a> for an example with images.</div>
             </summary>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredDottedHalftone(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = OrderedDitherer.DottedHalftone;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredDH.gif" alt="Color hues with system default 8 BPP palette, using silver background and dotted halftone dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredDH.gif" alt="Grayscale color shades with black and white palette using dotted halftone dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.OrderedDitherer.BlueNoise">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> using a fixed 64x64 blue noise pattern of 256 different values.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Imaging_OrderedDitherer_BlueNoise.htm">online help</a> for an example with images.</div>
             </summary>
             <remarks>
             <note>Generating random blue noise patterns is a very resource intensive operation but this method uses a pregenerated fix pattern, which is very fast.
             To dither images with real random noise use the <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/>, which applies white noise to the quantized source.</note>
             </remarks>
             <example>
             The following example demonstrates how to use the ditherer returned by this property:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredBlueNoise(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = OrderedDitherer.BlueNoise;
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredBN.gif" alt="Color hues with system default 8 BPP palette, using silver background and blue noise dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredBN.gif" alt="Grayscale color shades with black and white palette using blue noise dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> class for more details and examples.</note>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OrderedDitherer.#ctor(System.Byte[0:,0:],System.Single)">
             <summary>
             Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> class using the specified <paramref name="matrix"/> and <paramref name="strength"/>.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_OrderedDitherer__ctor.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="matrix">A matrix to be used as the coefficients of the dithering. Ideally contains every value between zero
             and the maximum value in the matrix. Repeated values will appear always together for the same input colors.</param>
             <param name="strength">The strength of the dithering effect between 0 and 1 (inclusive bounds).
             Specify 0 to use an auto value for each dithering session based on the used quantizer.
             <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureStrength(System.Single)">ConfigureStrength</see> method for details about dithering strength. This parameter is optional.
             <br/>Default value: <c>0</c>.</param>
             <exception cref="T:System.ArgumentNullException"><paramref name="matrix"/> is <see langword="null"/>.</exception>
             <exception cref="T:System.ArgumentException"><paramref name="matrix"/> is empty.</exception>
             <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="strength"/> must be between 0 and 1, inclusive bounds.</exception>
             <example>
             The following example demonstrates how to use a custom ditherer using the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> constructor.
             It produces a similar dotted halftone pattern to the result of the <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.DottedHalftone"/> property but in a rectangular
             arrangement and with less different patterns:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToCustomDithered(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 // Using a dotted halftone pattern. As it uses only 11 values in a 7x7 matrix it is much less optimal
                 // than the DottedHalftone property but demonstrates the behavior of the ordered dithering quite well.
                 byte[,] matrix =
                 {
                    {  0,  2,  4,  5,  4,  2,  1 },
                    {  2,  3,  6,  7,  6,  3,  2 },
                    {  4,  6,  8,  9,  8,  6,  4 },
                    {  5,  7,  9, 10,  9,  7,  5 },
                    {  4,  6,  8,  9,  8,  6,  4 },
                    {  2,  3,  6,  7,  6,  3,  2 },
                    {  1,  2,  4,  5,  4,  2,  1 },
                 };
            
                 IDitherer ditherer = new OrderedDitherer(matrix);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredOC.gif" alt="Color hues with system default 8 BPP palette, using silver background and a custom dotted halftone dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredOC.gif" alt="Grayscale color shades with black and white palette using a custom dotted halftone dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             <note type="tip"><list type="bullet">
             <item>Use the static properties to perform dithering with predefined patterns.</item>
             <item>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> class for more details and image examples.</item>
             </list></note>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureStrength(System.Single)">
            <summary>
            Gets a new <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> instance that has the specified dithering <paramref name="strength"/>.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_OrderedDitherer_ConfigureStrength.htm">online help</a> for image examples.</div>
            </summary>
            <param name="strength">The strength of the dithering effect between 0 and 1 (inclusive bounds).
            Specify 0 to use an auto value for each dithering session based on the used quantizer.
            The auto strength strategy can be specified by the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureAutoStrengthMode(KGySoft.Drawing.Imaging.AutoStrengthMode)">ConfigureAutoStrengthMode</see> method.</param>
            <returns>A new <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> instance that has the specified dithering <paramref name="strength"/>.</returns>
            <remarks>
            <note>This method always returns a new <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> instance instead of changing the strength of the original one.
            This is required for the static properties so they can return a cached instance.</note>
            <para>If <paramref name="strength"/> is too low, then banding may appear in the result in place of gradients in the original image;
            whereas if <paramref name="strength"/> is too high, then dithering patterns may appear even in colors without quantization error (overdithering).</para>
            <para>If <paramref name="strength"/> is 0, then strength will be calibrated for each dithering session so that neither the black, nor the white colors will suffer from overdithering in the result.
            This is the default for <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> instances returned by the static properties.</para>
            <para>The auto strength strategy itself can be specified by the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureAutoStrengthMode(KGySoft.Drawing.Imaging.AutoStrengthMode)">ConfigureAutoStrengthMode</see> method.</para>
            </remarks>
            <example>
            <para>The following table demonstrates the effect of different strengths:
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
            <tbody>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
            <br/>Grayscale color shades</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/GrayShadesDefault4bpp.gif" alt="Grayscale color shades with system default 4 BPP palette"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 4 BPP palette</see>, no dithering. The asymmetry is due to the uneven distribution of gray shades of this palette.</para>
            <para><img src="../Help/Images/GrayShadesDefault4bppDitheredB8.gif" alt="Grayscale color shades with system default 4 BPP palette using Bayer 8x8 ordered dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 4 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering using auto strength. Darker shades have banding.</para>
            <para><img src="../Help/Images/GrayShadesDefault4bppDitheredB8Str-5.gif" alt="Grayscale color shades with system default 4 BPP palette using a stronger Bayer 8x8 ordered dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 4 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering using strength = 0.5. Now there is no banding but white suffers from overdithering.</para>
            <para><img src="../Help/Images/GrayShadesDefault4bppDitheredB8Interpolated.gif" alt="Grayscale color shades with system default 4 BPP palette using 8x8 ordered dithering with interpolated ato strength"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 4 BPP palette</see> and <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering using <see cref="F:KGySoft.Drawing.Imaging.AutoStrengthMode.Interpolated"/> auto strength strategy.
            Now there is neither banding nor overdithering for black or white colors.</para></div></td>
            </tr>
            </tbody></table></para>
            <para>
            The following example demonstrates how to specify the strength for a predefined ordered ditherer:
            <code lang="C#"><![CDATA[
            // getting a predefined ditherer with custom strength:
            IDitherer ditherer = OrderedDitherer.Bayer8x8.ConfigureStrength(0.5f);
            
            // getting a predefined ditherer with custom auto strength strategy:
            ditherer = OrderedDitherer.Bayer8x8.ConfigureAutoStrengthMode(AutoStrengthMode.Interpolated);
            ]]></code></para>
            </example>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="strength"/> must be between 0 and 1, inclusive bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureAutoStrengthMode(KGySoft.Drawing.Imaging.AutoStrengthMode)">
            <summary>
            Gets a new <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> instance that uses auto strength using the specified <paramref name="autoStrengthMode"/>.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureStrength(System.Single)">ConfigureStrength</see> method for details and image examples.
            </summary>
            <param name="autoStrengthMode">An <see cref="T:KGySoft.Drawing.Imaging.AutoStrengthMode"/> value specifying the desired behavior for calibrating auto strength.</param>
            <returns>A new <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/> instance that has the specified <paramref name="autoStrengthMode"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="autoStrengthMode"/> is not one of the defined values.</exception>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer">
            <summary>
            Provides an <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> implementation for random noise dithering. This class applies a random white noise to the result. For other noise-like
            ditherers see the <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.BlueNoise">OrderedDitherer.BlueNoise</see> property and the <see cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/> class.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Imaging_RandomNoiseDitherer.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para>The <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/> generates some random white noise to the quantized source.</para>
            <note type="tip">There are also a couple of ditherers with non-random noise-like patterns in this library. See also
            the <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.BlueNoise">OrderedDitherer.BlueNoise</see> property and the <see cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/> class.</note>
            <para>To get always the same result for the same source image and quantizer you can specify a <em>seed</em> when initializing a <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/> instance.
            Please note though that specifying a seed prevents parallel processing, which makes performance worse on multi-core systems.</para>
            </remarks>
            <example>
            <para>The following table demonstrates the effect of the dithering:
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
            <tbody>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
            <br/>Color hues with alpha gradient</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilver.gif" alt="Color hues with system default 8 BPP palette and silver background"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see>, no dithering</para>
            <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredRN.gif" alt="Color hues with system default 8 BPP palette, using silver background and random noise dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see> and random noise dithering</para></div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
            <br/>Grayscale color shades</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/GrayShadesBW.gif" alt="Grayscale color shades with black and white palette"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see>, no dithering</para>
            <para><img src="../Help/Images/GrayShadesBWDitheredRN.gif" alt="Grayscale color shades with black and white palette using random noise dithering"/>
            <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see> and random noise dithering</para></div></td>
            </tr>
            </tbody></table></para>
            </example>
            <seealso cref="T:KGySoft.Drawing.Imaging.IDitherer" />
            <seealso cref="T:KGySoft.Drawing.Imaging.OrderedDitherer" />
            <seealso cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer" />
            <seealso cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer" />
        </member>
        <member name="M:KGySoft.Drawing.Imaging.RandomNoiseDitherer.#ctor(System.Single,System.Nullable{System.Int32})">
             <summary>
             Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/> class.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_RandomNoiseDitherer__ctor_1.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="strength">The strength of the dithering effect between 0 and 1 (inclusive bounds).
             Specify 0 to use an auto value for each dithering session based on the used quantizer.
             <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureStrength(System.Single)">OrderedDitherer.ConfigureStrength</see> method
             for more details and some examples regarding dithering strength.
             The same applies also for the <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/> class. This parameter is optional.
             <br/>Default value: <c>0</c>.</param>
             <param name="seed">If <see langword="null"/>, then a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_CoreLibraries_ThreadSafeRandom.htm">ThreadSafeRandom</a>
             instance will be used internally with a time-dependent seed value, and the dithering session will allow parallel processing.
             If not <see langword="null"/>, then a <see cref="T:System.Random"/> instance will be created for each dithering session with the specified <paramref name="seed"/>, and the dithering session will not allow parallel processing.</param>
             <example>
             The following example demonstrates how to use the <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/> class.
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDitheredRandomNoise(IReadWriteBitmapData source, IQuantizer quantizer)
             {
                 IDitherer ditherer = new RandomNoiseDitherer();
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(quantizer.PixelFormatHint, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the dithering directly on the source bitmap data:
                 source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized and dithered image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverDitheredRN.gif" alt="Color hues with system default 8 BPP palette, using silver background and random noise dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP palette</see></para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBWDitheredRN.gif" alt="Grayscale color shades with black and white palette using random noise dithering"/>
             <br/>Quantizing with <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white palette</see></para></div></td>
             </tr>
             </tbody></table></para>
             </example>
             <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="strength"/> must be between 0 and 1, inclusive bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.RandomNoiseDitherer.#ctor(KGySoft.Drawing.Imaging.AutoStrengthMode,System.Nullable{System.Int32})">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/> class with a specific auto strength strategy.
            </summary>
            <param name="autoStrengthMode">An <see cref="T:KGySoft.Drawing.Imaging.AutoStrengthMode"/> value specifying the desired behavior for calibrating auto strength.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureStrength(System.Single)">OrderedDitherer.ConfigureStrength</see> method
            for more details and some examples regarding dithering strength. The same applies also for the <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/> class.</param>
            <param name="seed">If <see langword="null"/>, then a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_CoreLibraries_ThreadSafeRandom.htm">ThreadSafeRandom</a>
            instance will be used internally with a time-dependent seed value, and the dithering session will allow parallel processing.
            If not <see langword="null"/>, then a <see cref="T:System.Random"/> instance will be created for each dithering session with the specified <paramref name="seed"/>, and the dithering session will not allow parallel processing.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="autoStrengthMode"/> is not one of the defined values.</exception>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.AnimatedGifConfiguration">
            <summary>
            Represents the configuration for encoding a GIF animation by the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeAnimation(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream)">GifEncoder.EncodeAnimation</see> method.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.Size">
            <summary>
            Gets or sets the desired size of the result animation. If <see langword="null"/>, then size is determined by the first frame.
            If set explicitly or the input frames can have different sizes, then <see cref="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.SizeHandling"/> should also be set accordingly.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.SizeHandling">
            <summary>
            Gets or sets how possibly different input frame sizes are handled.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.AnimationFramesSizeHandling.ErrorIfDiffers"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.ReplaceZeroDelays">
            <summary>
            Gets or sets whether zero delay values are allowed in the result stream,
            which is usually interpreted as 100 ms by most GIF decoders.
            <br/>Default value: <see langword="true"/>.
            </summary>
            <value>
            If <see langword="true"/>, then zero delay values will be replaced to 100 milliseconds.
            <br/>If <see langword="false"/>, then zero delays will be preserved and the decoders decide how to interpret them.
            </value>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.Quantizer">
            <summary>
            Gets or sets an optional quantizer to be used for the frames. 
            Using a non-<see langword="null"/> value forces quantizing also the already indexed images.
            Should use up to 256 colors; otherwise, the result might be quantized further with using the default system 8-bit palette.
            <br/>Default value: <see langword="null"/>.
            </summary>
            <value>
            If <see langword="null"/>, then the possibly existing palette of already indexed input frames are preserved.
            For frames with a non-indexed pixel format a quantizer returned by the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">OptimizedPaletteQuantizer.Wu</see> method will be used.
            <br/>If not <see langword="null"/>, then all frames will be quantized, even the already indexed ones. If it does not support transparency,
            then <see cref="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.AllowDeltaFrames"/> will be ignored.
            </value>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.Ditherer">
            <summary>
            Gets or sets an optional ditherer to be used when quantizing the frames.
            <br/>Default value: <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.AnimationMode">
            <summary>
            Gets or sets the looping mode of the animation.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.AnimationMode.Repeat"/>.
            </summary>
            <value>
            If <see cref="F:KGySoft.Drawing.Imaging.AnimationMode.Repeat"/>, then the animation will be repeated indefinitely.
            <br/>If <see cref="F:KGySoft.Drawing.Imaging.AnimationMode.PingPong"/>, then the specified frames will be added in both ways so the final animation will be played back and forth.
            <br/>If <see cref="F:KGySoft.Drawing.Imaging.AnimationMode.PlayOnce"/>, then the animation will be played only once.
            <br/>The <see cref="T:KGySoft.Drawing.Imaging.GifEncoder"/> actually supports any positive value less than or equal to <see cref="F:System.UInt16.MaxValue">UInt16.MaxValue</see> even though
            they don't have named values in the <see cref="T:KGySoft.Drawing.Imaging.AnimationMode"/> enumeration.
            </value>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.EncodeTransparentBorders">
            <summary>
            Gets or sets whether the transparent borders of the frames should be encoded as part of the frame.
            <br/>Default value: <see langword="false"/>.
            </summary>
            <value>
            If <see langword="true"/>, then transparent borders of the frames will be considered as image content (and possibly smaller frames will be virtually
            enlarged, too). This produces a bit larger encoded size but provides better compatibility.
            <br/>If <see langword="false"/>, then always only the smallest possible non-transparent area will be encoded. Some decoders may not tolerate this option.
            </value>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.AllowClippedFrames">
            <summary>
            Gets or sets whether the encoder is allowed to add smaller actual frames than the <see cref="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.Size"/> of the animation.
            <br/>Default value: <see langword="true"/>.
            <br/>See also the <strong>Remarks</strong> section of the <see cref="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.AllowDeltaFrames"/> property for more details.
            </summary>
            <value>
            If <see langword="false"/>, then always full-sized frames are added to the animation. This might end up in a larger encoded size but provides better compatibility.
            <br/>If <see langword="true"/>, then actual frames might be clipped. If <see cref="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.AllowDeltaFrames"/> is <see langword="false"/>, then it affects only the clipping of possible
            transparent borders. Some decoders may not tolerate this option.
            </value>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.AllowDeltaFrames">
            <summary>
            Gets or sets whether it is allowed to encode only the changed region of a frame. In some circumstances the value of this property might be ignored.
            <br/>Default value: <see langword="true"/>.
            </summary>
            <value>
            If <see langword="true"/>, then the required memory during encoding may be larger but it allows creating more compact files and even high color frames (see also the <strong>Remarks</strong> section).
            <br/>If <see langword="false"/>, then all frames will be encoded individually. This provides lower memory consumption but may produce larger files.
            </value>
            <remarks>
            <para>If <see cref="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.Quantizer"/> is set to an <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> that allows creating a specific palette for each frame,
            then setting this property to <see langword="true"/> might also allow producing high color frames.</para>
            <para>If <see cref="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.AllowClippedFrames"/> is <see langword="false"/>, then this property is ignored for quantizers with no transparency support.
            Therefore, make sure that you set also the <see cref="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.AllowClippedFrames"/> to <see langword="true"/> if you use a quantizer without transparency support.</para>
            <note>The difference to be encoded is always determined by the <em>original</em> images. If you use an <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/>, then it can occur
            that the first frame has a poorer mapping of the original colors than the delta images, which can cause a "ghosting image" effect (the traces of the changes
            can be seen in the animation). It can be avoided by using a fix palette instead. To minimize it by using an <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/>
            it is recommended to use the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">MedianCut</see> quantizer.</note>
            </remarks>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.DeltaTolerance">
            <summary>
            Gets or sets the allowed maximum tolerance for detecting changes of consecutive frames when <see cref="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.AllowDeltaFrames"/> is <see langword="true"/>.
            <br/>Default value: 0.
            </summary>
            <value>
            If 0, then even a minimal color difference will be considered as a change to be encoded.
            <br/>If 255, then nothing will be treated as a change. The animation will have no new frames unless a frame contains new transparent pixels compared to the previous one.
            <br/>The reasonable range is between 0 and 16 with an optimized quantizer. Predefined quantizers may tolerate larger values (eg. up to 32) with some dithering.
            </value>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.ReportOverallProgress">
            <summary>
            Gets or sets whether to report overall and/or sub-task progress when encoding by <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.BeginEncodeAnimation(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream,KGySoft.Threading.AsyncConfig)">GifEncoder.BeginEncodeAnimation</see>
            and <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeAnimationAsync(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream,KGySoft.Threading.TaskConfig)">GifEncoder.EncodeAnimationAsync</see> methods and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">AsyncConfigBase.Progress</a> property is set.
            When <see langword="null"/>, then both are reported.
            <br/>Default value: <see langword="null"/>.
            </summary>
            <value>
            If <see langword="null"/>, then both overall and sub-task progress are reported. You can filter overall progress steps by considering <see cref="F:KGySoft.Drawing.DrawingOperation.Saving"/> operations only.
            <br/>If <see langword="true"/>, then only overall progress steps are reported. Please note that if the count of the <see cref="T:System.Collections.Generic.IEnumerable`1"/>
            instance passed to the constructor cannot be determined in a trivial way, then the maximum value of the steps will be adjusted dynamically.
            <br/>If <see langword="false"/>, then only sub-task progress steps are reported such as optimizing palette, quantizing and other processing operations.
            </value>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.#ctor(System.Collections.Generic.IEnumerable{KGySoft.Drawing.Imaging.IReadableBitmapData},System.Nullable{System.TimeSpan})">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.AnimatedGifConfiguration"/> class.
            </summary>
            <param name="frames">The collection of the frames to be added to the result animation. Disposing of the frames must be performed by the caller.
            <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeAnimation(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream)">GifEncoder.EncodeAnimation</see> enumerates the collection lazily so you can pass an iterator that disposes
            the previous frame once the next one is queried, or you can even re-use the same bitmap data for each frames if you generate them dynamically.</param>
            <param name="delay">An optional <see cref="T:System.TimeSpan"/> to specify the delay for all frames. If <see langword="null"/>,
            then a default 100 ms delay will be used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="frames"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.#ctor(System.Collections.Generic.IEnumerable{KGySoft.Drawing.Imaging.IReadableBitmapData},System.Collections.Generic.IEnumerable{System.TimeSpan})">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.AnimatedGifConfiguration"/> class.
            </summary>
            <param name="frames">The collection of the frames to be added to the result animation. Disposing of the frames must be performed by the caller.
            <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeAnimation(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream)">GifEncoder.EncodeAnimation</see> enumerates the collection lazily so you can pass an iterator that disposes
            the previous frame once the next one is queried, or you can even re-use the same bitmap data for each frames if you generate them dynamically.</param>
            <param name="delays">The collection of the delays to be used for the animation. If <see langword="null"/> or empty,
            then a default 100 ms delay will be used for all frames.
            If contains less elements than <paramref name="frames"/>, then the last value will be re-used for the remaining frames.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="frames"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.#ctor(System.Func{KGySoft.Drawing.Imaging.IReadableBitmapData},System.Func{System.Nullable{System.TimeSpan}})">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.AnimatedGifConfiguration"/> class.
            </summary>
            <param name="getNextFrame">A delegate that returns the next frame of the animation. It should return <see langword="null"/> after the last frame.
            Frames are not disposed by the encoder so the caller can dispose them once the subsequent frame is requested.</param>
            <param name="getNextDelay">A delegate that returns the delay for the next frame. If it returns <see langword="null"/> sooner than <paramref name="getNextFrame"/>, then
            the last non-<see langword="null"/> value will be re-used for the remaining frames. If it returns <see langword="null"/> for the first time, then
            each frame will use a default 100 ms delay.</param>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.GifEncoder">
            <summary>
            Provides an encoder for GIF image format that supports animation. Use the static members for high-level access or create an instance to
            control everything manually.
            </summary>
            <remarks>
            <para>The simplest way to create a single-frame GIF image is calling the static <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">EncodeImage</see> method. It can
            quantize and dither any input <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> source.</para>
            <para>The simplest way to create a GIF animation is calling the static <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeAnimation(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream)">EncodeAnimation</see> method. It expects
            an <see cref="T:KGySoft.Drawing.Imaging.AnimatedGifConfiguration"/> that describes the frames and delays to be used along with numerous optional configuration such as
            a specific quantizer and ditherer, looping mode, handling of possible different input image sizes, encoding strategies like allowing
            delta images or explicitly encoding transparent borders.
            <note type="tip">If you use an <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> and the <see cref="P:KGySoft.Drawing.Imaging.AnimatedGifConfiguration.AllowDeltaFrames"/> property
            is <see langword="true"/>, then you can create really high quality animations allowing more than 256 colors per frame.</note></para>
            <para>Alternatively, you can instantiate the <see cref="T:KGySoft.Drawing.Imaging.GifEncoder"/> class, which allows you even more control at lower levels.
            The <see cref="P:KGySoft.Drawing.Imaging.GifEncoder.RepeatCount"/>, <see cref="P:KGySoft.Drawing.Imaging.GifEncoder.GlobalPalette"/> and <see cref="P:KGySoft.Drawing.Imaging.GifEncoder.BackColorIndex"/> properties should be set before adding the first frame,
            whereas <see cref="P:KGySoft.Drawing.Imaging.GifEncoder.CompressionMode"/> can be changed before each frame. The <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.AddImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Point,System.Int32,KGySoft.Drawing.Imaging.GifGraphicDisposalMethod)">AddImage</see> method allows specifying a location
            for each frame as well as an action to be performed after the delay interval of the corresponding frame is over.
            You can even write comments to the serialization stream by the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.AddComments(System.String[])">AddComments</see> method.
            <note>When using the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.AddImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Point,System.Int32,KGySoft.Drawing.Imaging.GifGraphicDisposalMethod)">AddImage</see> method to add frames you should use already quantized images with indexed pixel format.
            Non-indexed images will be quantized using the default 8-bit "web-safe" palette without dithering.</note></para>
            </remarks>
            <example>
            <para>The following example demonstrates how to use the encoder in a <see langword="using"/> block:
            <code lang="C#"><![CDATA[
            using (var encoder = new GifEncoder(stream, new Size(48, 48)) { GlobalPalette = palette })
            {
                encoder.AddComments("My GIF animation");
                encoder.AddImage(frame1, location1, delay1);
                encoder.AddImage(frame2, location2, delay2);
            }]]></code></para>
            <para>Or, by using fluent syntax the example above can be re-written like this:
            <code lang="C#"><![CDATA[
            // Note the last FinalizeEncoding step. In the above example it is called implicitly at the end of the using block.
            new GifEncoder(stream, new Size(48, 48)) { GlobalPalette = palette }
                .AddComments("My GIF animation")
                .AddImage(frame1, location1, delay1)
                .AddImage(frame2, location2, delay2)
                .FinalizeEncoding();]]></code></para>
            </example>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.GifEncoder.RepeatCount">
            <summary>
            Gets or sets the number of repetitions if creating an animation.
            Set a non-<see langword="null"/> value to add the <c>NETSCAPE2.0</c> extension to the stream and to indicate that added images
            should be interpreted as animation frames. Use <c>0</c> to loop the animation indefinitely.
            If <see langword="null"/>, and images are added with 0 delay, then GDI+ handles image as a multi-layer single frame image,
            though some application (including browsers) still may play them as individual frames.
            <br/>Default value: <see langword="null"/>.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="value"/> is less than 0.</exception>
            <exception cref="T:System.InvalidOperationException">This property cannot be set after adding the first image.</exception>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.GifEncoder.GlobalPalette">
            <summary>
            Gets or sets the global palette. If not set, then each added image will be stored along with their own palette.
            If not <see langword="null"/>, then the palette of the added images are stored only when they are different from the global palette.
            <br/>Default value: <see langword="null"/>.
            </summary>
            <exception cref="T:System.ArgumentException"><paramref name="value"/> has more than 256 colors.</exception>
            <exception cref="T:System.InvalidOperationException">This property cannot be set after adding the first image.</exception>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.GifEncoder.BackColorIndex">
            <summary>
            Gets or sets the background color index if <see cref="P:KGySoft.Drawing.Imaging.GifEncoder.GlobalPalette"/> is set.
            It is relevant only if the palette of the first added image has no transparent entry, in which case
            determines the initial background color if the first added image does not completely cover the virtual screen,
            and also the color of the cleared virtual screen.
            </summary>
            <exception cref="T:System.InvalidOperationException">This property cannot be set after adding the first image.</exception>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.GifEncoder.AddMetaInfo">
            <summary>
            Gets or sets whether textual meta info should be added to the result stream.
            <br/>Default value: <see langword="false"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.GifEncoder.CompressionMode">
            <summary>
            Gets or sets the compression mode to be used when adding images by the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.AddImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Point,System.Int32,KGySoft.Drawing.Imaging.GifGraphicDisposalMethod)">AddImage</see> method.
            This property can be changed at any time.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.GifCompressionMode.Auto"/>.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.#ctor(System.IO.Stream,System.Drawing.Size)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.GifEncoder"/> class.
            </summary>
            <param name="stream">The writable stream to save the image content.</param>
            <param name="size">Specifies the logical screen size. It also determines the maximum size of the added images.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.AddImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Point,System.Int32,KGySoft.Drawing.Imaging.GifGraphicDisposalMethod)">
            <summary>
            Writes an image to the output stream.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.GifEncoder"/> class for details and examples.
            </summary>
            <param name="imageData">The image data to write. Non-indexed images will be quantized by using the <see cref="P:KGySoft.Drawing.Imaging.GifEncoder.GlobalPalette"/>, or, if that is not set,
            by the system default 8-bpp "web-safe" palette (see also <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">PredefinedColorsQuantizer.SystemDefault8BppPalette</see>)
            using no dithering.</param>
            <param name="location">Specifies the location of the current image within the logical screen.</param>
            <param name="delay">Specifies the delay before rendering the next image in hundredths of a second. <c>0</c> is usually interpreted as 100ms by browsers (as if 10 was specified),
            while GDI+ treats it zero delay only if <see cref="P:KGySoft.Drawing.Imaging.GifEncoder.RepeatCount"/> is <see langword="null"/>.</param>
            <param name="disposalMethod">Specifies how the decoder should treat the image after being displayed. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.GifGraphicDisposalMethod.NotSpecified"/>.</param>
            <returns>The self <see cref="T:KGySoft.Drawing.Imaging.GifEncoder"/> instance allowing adding multiple images by fluent syntax.</returns>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentOutOfRangeException"></exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.AddComments(System.String[])">
            <summary>
            Writes textual comments to the output stream.
            </summary>
            <param name="comments">The comments to write. They must not be longer than 255 characters and must consist of ASCII characters.</param>
            <returns>The self <see cref="T:KGySoft.Drawing.Imaging.GifEncoder"/> instance allowing fluent syntax.</returns>
            <exception cref="T:System.ArgumentException"><paramref name="comments"/> contain a comment longer than 255 characters or that is not of ASCII characters only.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.FinalizeEncoding(System.Boolean)">
            <summary>
            Finalizes the encoding. It should be called after adding the last image.
            It is implicitly called when this <see cref="T:KGySoft.Drawing.Imaging.GifEncoder"/> instance is disposed.
            </summary>
            <param name="leaveStreamOpen"><see langword="true"/> to leave the underlying stream open; otherwise, <see langword="false"/>. This parameter is optional.
            <br/>Default value: <see langword="true"/>.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.WriteHeaderAndLogicalScreenDescriptor(System.Int32)">
            <summary>
            See the details in chapter 17-18 in https://www.w3.org/Graphics/GIF/spec-gif89a.txt
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.WritePalette(KGySoft.Drawing.Imaging.Palette)">
            <summary>
            See the details in chapters 19 and 21 in https://www.w3.org/Graphics/GIF/spec-gif89a.txt
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.WriteCommentExtension(System.Byte[])">
            <summary>
            Writing the comment extension from direct data as per chapters 24 and 15 in https://www.w3.org/Graphics/GIF/spec-gif89a.txt
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.WriteCommentExtension(System.String[])">
            <summary>
            Writing the comment extension from strings as per chapters 24 and 15 in https://www.w3.org/Graphics/GIF/spec-gif89a.txt
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.WriteNetscapeLoopBlockApplicationExtension(System.Int32)">
            <summary>
            Writing the nonstandard NETSCAPE2.0 extension as per chapters 26 and 15 in https://www.w3.org/Graphics/GIF/spec-gif89a.txt
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.WriteGraphicControlExtension(System.Int32,KGySoft.Drawing.Imaging.GifGraphicDisposalMethod,System.Int32)">
            <summary>
            Writing the Graphic Control Extension as per chapter 23 in https://www.w3.org/Graphics/GIF/spec-gif89a.txt
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.WriteImageDescriptor(System.Drawing.Point,System.Drawing.Size,KGySoft.Drawing.Imaging.Palette)">
            <summary>
            Writing the Graphic Control Extension as per chapter 20 in https://www.w3.org/Graphics/GIF/spec-gif89a.txt
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.MoveNext">
            <summary>
            It consumes <see cref="F:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.nextGeneratedFrame"/> set by <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.MoveNextGeneratedFrame"/>, and sets <see cref="F:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.current"/>.
            </summary>
            <returns></returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.MoveNextGeneratedFrame">
            <summary>
            It consumes <see cref="F:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.nextPreparedFrame"/> set by <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.MoveNextPreparedFrame"/>, and sets <see cref="F:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.nextGeneratedFrame"/>.
            Tries to generate the next frame, but it does not set <see cref="P:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.Frame"/>
            (it is done by <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.MoveNext"/>) so it can look one frame forward.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.MoveNextPreparedFrame">
            <summary>
            It consumes <see cref="F:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.nextUnprocessedInputFrame"/> set by <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.MoveNextInputFrame"/>, and sets <see cref="F:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.nextPreparedFrame"/>.
            Tries to prepare the next frame. Prepared frames are adjusted to the final size and might already be quantized if no delta frame can be generated.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.MoveNextInputFrame">
            <summary>
            Tries to get the next frame from <see cref="F:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.inputFramesEnumerator"/>, and sets <see cref="F:KGySoft.Drawing.Imaging.GifEncoder.FramesEnumerator.nextUnprocessedInputFrame"/>.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.GifEncoder.LzwEncoder">
            <summary>
            The LZW Encoder based on the specification as per chapter 22 and Appendix F in https://www.w3.org/Graphics/GIF/spec-gif89a.txt
            The detailed LZW algorithm is written here: http://giflib.sourceforge.net/whatsinagif/lzw_image_data.html
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.GifEncoder.LzwEncoder.CodeTable">
            <summary>
            Provides the LZW code table implementation.
            It has been refactored to use open addressing double hashing instead of a regular Dictionary.
            Some implementation ideas were inspired by Kevin Weiner's Java encoder from here: http://www.java2s.com/Code/Java/2D-Graphics-GUI/AnimatedGifEncoder.htm
            Basically it uses a variant of Knuth's algorithm along with G. Knott's relatively-prime secondary probe.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.GifEncoder.LzwEncoder.CodeTable.tableSize">
            <summary>
            A prime that provides about 80% occupancy in the code table considering the max used entries when bit size is 12.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.GifEncoder.LzwEncoder.CodeTable.entries">
            <summary>
            Earlier versions used a dictionary as a code table where the key was a span of palette indices.
            Even with shared underlying buffer memory and optimized GetHashCode/Equals implementation it was much less efficient.
            Here we can exploit that all prefixes of new codes are already stored so when there is a hash collision we don't need
            to perform an equality check for the whole segment repeatedly (this is what Dictionary does when there are more entries in the same bucket).
            Instead, we use double hashing and a match key for equality check:
            - The primary hash is calculated for the current prefix and is used to select a code table entry
            - A match key is used for equality check. It is calculated last code + current index combination and is stored along with prefix codes.
            - If equality check by match key fails (collision), then using a secondary hash to jump from entry to entry.
            The idea was taken from here: http://www.java2s.com/Code/Java/2D-Graphics-GUI/AnimatedGifEncoder.htm
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Encodes the specified <paramref name="imageData"/> as a GIF image and writes it into the specified <paramref name="stream"/>.
            </summary>
            <param name="imageData">The image data to write. Non-indexed images will be quantized by using the specified <paramref name="quantizer"/>, or, if that is not set,
            by the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see> quantizer or <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">Grayscale</see> quantizer, depending on the pixel format.</param>
            <param name="stream">The stream to save the encoded image into.</param>
            <param name="quantizer">An optional <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to determine the colors of the result.
            If <see langword="null"/> and <paramref name="imageData"/> is not an indexed image or the palette contains multiple alpha entries,
            then the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see> or <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">Grayscale</see> quantizer will be used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="imageData"/> or <paramref name="stream"/> is <see langword="null"/>.</exception>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.BeginEncodeImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginEncodeImage</see>
            or <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeImageAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">EncodeImageAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to set up cancellation or for reporting progress.</note>
            <para>To encode an <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a> you can use also the <see cref="O:KGySoft.Drawing.ImageExtensions.SaveAsGif">ImageExtensions.SaveAsGif</see>
            methods that provide a higher level access.</para>
            <para>To create a GIF completely manually you can create a <see cref="T:KGySoft.Drawing.Imaging.GifEncoder"/> instance that provides a lower level access.</para>
            <para>If <paramref name="quantizer"/> is specified, then it will be used even for already indexed images.</para>
            <para>If <paramref name="quantizer"/> is an <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/>, then the palette of the result image will be adjusted for the actual image content.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.BeginEncodeImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to encode the specified <paramref name="imageData"/> as a GIF image and to write it into the specified <paramref name="stream"/>.
            </summary>
            <param name="imageData">The image data to write. Non-indexed images will be quantized by using the specified <paramref name="quantizer"/>, or, if that is not set,
            by the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see> quantizer or <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">Grayscale</see> quantizer, depending on the pixel format.</param>
            <param name="stream">The stream to save the encoded image into.</param>
            <param name="quantizer">An optional <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to determine the colors of the result.
            If <see langword="null"/> and <paramref name="imageData"/> is not an indexed image or the palette contains multiple alpha entries,
            then the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see> or <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">Grayscale</see> quantizer will be used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="imageData"/> or <paramref name="stream"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeImageAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">EncodeImageAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EndEncodeImage(System.IAsyncResult)">EndEncodeImage</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.
            The encoding itself cannot be parallelized. The <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> setting affects only the quantizing session
            if <paramref name="imageData"/> has a non-indexed pixel format, or when <paramref name="quantizer"/> is set.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">EncodeImage</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.EndEncodeImage(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.BeginEncodeImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginEncodeImage</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeImageAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">EncodeImageAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeImageAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">
            <summary>
            Encodes the specified <paramref name="imageData"/> as a GIF image asynchronously, and writes it into the specified <paramref name="stream"/>.
            </summary>
            <param name="imageData">The image data to write. Non-indexed images will be quantized by using the specified <paramref name="quantizer"/>, or, if that is not set,
            by the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see> quantizer or <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">Grayscale</see> quantizer, depending on the pixel format.</param>
            <param name="stream">The stream to save the encoded image into.</param>
            <param name="quantizer">An optional <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to determine the colors of the result.
            If <see langword="null"/> and <paramref name="imageData"/> is not an indexed image or the palette contains multiple alpha entries,
            then the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see> or <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">Grayscale</see> quantizer will be used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="imageData"/> or <paramref name="stream"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.
            The encoding itself cannot be parallelized. The <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> setting affects only the quantizing session
            if <paramref name="imageData"/> has a non-indexed pixel format, or when <paramref name="quantizer"/> is set.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">EncodeImage</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeAnimation(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream)">
            <summary>
            Encodes the frames of the specified <paramref name="configuration"/> as an animated GIF image and writes it into the specified <paramref name="stream"/>.
            </summary>
            <param name="configuration">An <see cref="T:KGySoft.Drawing.Imaging.AnimatedGifConfiguration"/> instance describing the configuration of the encoding.</param>
            <param name="stream">The stream to save the encoded animation into.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="configuration"/> or <paramref name="stream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="configuration"/> is invalid.</exception>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.BeginEncodeAnimation(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream,KGySoft.Threading.AsyncConfig)">BeginEncodeAnimation</see>
            or <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeAnimationAsync(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream,KGySoft.Threading.TaskConfig)">EncodeAnimationAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to set up cancellation or for reporting progress.</note>
            <para>To encode <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a> instances with default configuration you can use the <see cref="O:KGySoft.Drawing.ImageExtensions.SaveAsAnimatedGif">ImageExtensions.SaveAsAnimatedGif</see>
            methods that provide a higher level access.</para>
            <para>To create an animation completely manually you can create a <see cref="T:KGySoft.Drawing.Imaging.GifEncoder"/> instance that provides a lower level access.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.BeginEncodeAnimation(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to encode the frames of the specified <paramref name="configuration"/> as an animated GIF image and to write it into the specified <paramref name="stream"/>.
            </summary>
            <param name="configuration">An <see cref="T:KGySoft.Drawing.Imaging.AnimatedGifConfiguration"/> instance describing the configuration of the encoding.</param>
            <param name="stream">The stream to save the encoded animation into.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="configuration"/> or <paramref name="stream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="configuration"/> is invalid.</exception>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeAnimationAsync(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream,KGySoft.Threading.TaskConfig)">EncodeAnimationAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EndEncodeAnimation(System.IAsyncResult)">EndEncodeAnimation</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeAnimation(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream)">EncodeAnimation</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.EndEncodeAnimation(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.BeginEncodeAnimation(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream,KGySoft.Threading.AsyncConfig)">BeginEncodeAnimation</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeAnimationAsync(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream,KGySoft.Threading.TaskConfig)">EncodeAnimationAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeAnimationAsync(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream,KGySoft.Threading.TaskConfig)">
            <summary>
            Encodes the frames of the specified <paramref name="configuration"/> as an animated GIF image asynchronously, and writes it into the specified <paramref name="stream"/>.
            </summary>
            <param name="configuration">An <see cref="T:KGySoft.Drawing.Imaging.AnimatedGifConfiguration"/> instance describing the configuration of the encoding.</param>
            <param name="stream">The stream to save the encoded animation into.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="configuration"/> or <paramref name="stream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="configuration"/> is invalid.</exception>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeAnimation(KGySoft.Drawing.Imaging.AnimatedGifConfiguration,System.IO.Stream)">EncodeAnimation</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeHighColorImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,System.Boolean,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Encodes the specified <paramref name="imageData"/> as a multi-layered, single frame GIF image and writes it into the specified <paramref name="stream"/>, preserving its original color depth.
            </summary>
            <param name="imageData">The image data to write. Possible alpha pixels might be blended with <paramref name="backColor"/> but otherwise the color depth will be preserved.</param>
            <param name="stream">The stream to save the encoded animation into.</param>
            <param name="allowFullScan"><see langword="true"/> to allow scanning the whole image for each layers to be able to re-use the local palette of the current layer.
            <br/><see langword="false"/> to expand the initial layer area to the local pixels only. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="backColor">Colors with alpha (transparency), whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field
            is equal to or greater than <paramref name="alphaThreshold"/> will be blended with this color during the encoding.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a pixel is considered transparent.
            If 0, then the final composite image will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="imageData"/> or <paramref name="stream"/> is <see langword="null"/>.</exception>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.BeginEncodeHighColorImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,System.Boolean,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.AsyncConfig)">BeginEncodeHighColorImage</see>
            or <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeHighColorImageAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,System.Boolean,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.TaskConfig)">EncodeHighColorImageAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to set up cancellation or for reporting progress.</note>
            <note type="caution">This method produces a GIF image that may have compatibility issues. Though the <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>
            and <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Bitmap" target="_blank">Bitmap</a> types (at least on Windows)
            support them as expected as well as applications built on GDI+ (such as Windows Paint), many decoders may treat the result as an animation (including browsers).</note>
            <para>If <paramref name="allowFullScan"/> is <see langword="true"/>, then both the processing time and memory usage is higher.
            It helps to minimize the number of layers of the final image; however, the final image size will not be necessarily smaller, especially for true color images.</para>
            <para>If <paramref name="allowFullScan"/> is <see langword="false"/>, then each layer is attempted to be as compact as possible. It allows a very fast processing with lower memory usage.
            Though it usually produces more layers, the final size will not be necessarily larger, especially for true color images.</para>
            <note type="tip">You can prequantize true color images using a 16-bit quantizer (with or without dithering) to produce fairly compact, still high color GIF images.
            For such images the <paramref name="allowFullScan"/> parameter with <see langword="true"/> value typically produces more compact results.
            You can consider using the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Argb1555(KGySoft.Drawing.Imaging.Color32,System.Byte)">Argb1555</see> quantizer for images with transparency,
            or the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb565(KGySoft.Drawing.Imaging.Color32,System.Byte)">Rgb565</see> quantizer for non-transparent images.</note>
            <para>To encode an <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a> you can use also the <see cref="O:KGySoft.Drawing.ImageExtensions.SaveAsHighColorGif">ImageExtensions.SaveAsHighColorGif</see> methods.</para>
            <para>To create a multi-layered image completely manually you can create a <see cref="T:KGySoft.Drawing.Imaging.GifEncoder"/> instance that provides a lower level access.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.BeginEncodeHighColorImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,System.Boolean,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to encode the specified <paramref name="imageData"/> as a multi-layered, single frame GIF image, writing it into the specified <paramref name="stream"/> and preserving its original color depth.
            </summary>
            <param name="imageData">The image data to write. Possible alpha pixels might be blended with <paramref name="backColor"/> but otherwise the color depth will be preserved.</param>
            <param name="stream">The stream to save the encoded animation into.</param>
            <param name="allowFullScan"><see langword="true"/> to allow scanning the whole image for each layers to be able to re-use the local palette of the current layer.
            <br/><see langword="false"/> to expand the initial layer area to the local pixels only. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="backColor">Colors with alpha (transparency), whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field
            is equal to or greater than <paramref name="alphaThreshold"/> will be blended with this color during the encoding.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a pixel is considered transparent.
            If 0, then the final composite image will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="imageData"/> or <paramref name="stream"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeHighColorImageAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,System.Boolean,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.TaskConfig)">EncodeHighColorImageAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EndEncodeHighColorImage(System.IAsyncResult)">EndEncodeHighColorImage</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.
            The encoding itself cannot be parallelized. The <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> setting affects only some processing steps if the size of a layer exceeds a threshold.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeHighColorImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,System.Boolean,KGySoft.Drawing.Imaging.Color32,System.Byte)">EncodeHighColorImage</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.EndEncodeHighColorImage(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.BeginEncodeHighColorImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,System.Boolean,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.AsyncConfig)">BeginEncodeHighColorImage</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeHighColorImageAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,System.Boolean,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.TaskConfig)">EncodeHighColorImageAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeHighColorImageAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,System.Boolean,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.TaskConfig)">
            <summary>
            Encodes the specified <paramref name="imageData"/> as a multi-layered, single frame GIF image asynchronously, ans writes it into the specified <paramref name="stream"/>, preserving its original color depth.
            </summary>
            <param name="imageData">The image data to write. Possible alpha pixels might be blended with <paramref name="backColor"/> but otherwise the color depth will be preserved.</param>
            <param name="stream">The stream to save the encoded animation into.</param>
            <param name="allowFullScan"><see langword="true"/> to allow scanning the whole image for each layers to be able to re-use the local palette of the current layer.
            <br/><see langword="false"/> to expand the initial layer area to the local pixels only. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="backColor">Colors with alpha (transparency), whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field
            is equal to or greater than <paramref name="alphaThreshold"/> will be blended with this color during the encoding.
            The alpha value (<see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field) of the specified background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a pixel is considered transparent.
            If 0, then the final composite image will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="imageData"/> or <paramref name="stream"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.
            The encoding itself cannot be parallelized. The <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> setting affects only some processing steps if the size of a layer exceeds a threshold.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.GifEncoder.EncodeHighColorImage(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,System.Boolean,KGySoft.Drawing.Imaging.Color32,System.Byte)">EncodeHighColorImage</see> method for more details.</note>
            </remarks>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.AnimationFramesSizeHandling">
            <summary>
            Represents the strategy to be used with frames of different sizes.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.AnimationFramesSizeHandling.ErrorIfDiffers">
            <summary>
            Specifies that if an input frame has a different size, then an exception should be thrown.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.AnimationFramesSizeHandling.Center">
            <summary>
            Specifies that smaller or larger frames should be centered. Possibly exceeding areas will be clipped.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.AnimationFramesSizeHandling.Resize">
            <summary>
            Specifies that frames should be resized to the actual size of the animation.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.AnimationMode">
            <summary>
            Represents the looping mode of an animation.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.AnimationMode.PingPong">
            <summary>
            Specifies that added frames should be played back and forth.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.AnimationMode.Repeat">
            <summary>
            Specifies that the animation should be looped.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.AnimationMode.PlayOnce">
            <summary>
            Specifies that the animation should be played only once.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.GifCompressionMode">
            <summary>
            Represents the compression behavior of the <see cref="T:KGySoft.Drawing.Imaging.GifEncoder"/> class.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.GifCompressionMode.Auto">
            <summary>
            Represents the automatic adaptive mode.
            The internally used code table might be regularly cleared.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.GifCompressionMode.DoNotClear">
            <summary>
            Indicates that once the internally used code table is full, it is not maintained anymore and all remaining codes
            are written using 12 bit code size. If codes so far can be re-used, then the result can be more compact than with <see cref="F:KGySoft.Drawing.Imaging.GifCompressionMode.Auto"/> mode;
            otherwise, the result can be even longer than in <see cref="F:KGySoft.Drawing.Imaging.GifCompressionMode.Uncompressed"/> mode.
            This option might not be tolerated by some decoders.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.GifCompressionMode.DoNotIncreaseBitSize">
            <summary>
            Indicates that all written codes must use the same bit size (3 to 9 bits, depending on palette size).
            It uses less memory but it may lead to poor compression, especially with palettes using no more than 4 colors.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.GifCompressionMode.Uncompressed">
            <summary>
            Indicates that the <see cref="T:KGySoft.Drawing.Imaging.GifEncoder"/> should not use any compression.
            It uses the least memory but the result can be really long.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.GifGraphicDisposalMethod">
            <summary>
            Indicates the way in which the graphic is to be treated after being displayed.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.GifGraphicDisposalMethod.NotSpecified">
            <summary>
            No disposal specified. The decoder is not required to take any action.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.GifGraphicDisposalMethod.DoNotDispose">
            <summary>
            Do not dispose. The graphic is to be left in place.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.GifGraphicDisposalMethod.RestoreToBackground">
            <summary>
            Restore to background color. The area used by the graphic must be restored to the background color.
            If there is no global palette, or the corresponding image has transparent color, then the virtual screen
            is always cleared to transparent.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.GifGraphicDisposalMethod.RestoreToPrevious">
            <summary>
            Restore to previous. The decoder is required to restore the area overwritten by the graphic with what was there prior to rendering the graphic.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.ArrayPoolingStrategy">
            <summary>
            Represents the possible values for the <see cref="P:KGySoft.Drawing.Imaging.BitmapDataFactory.PoolingStrategy">BitmapDataFactory.PoolingStrategy</see> property, which specifies
            the array pooling strategies for the self-allocating <see cref="O:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData">CreateBitmapData</see>
            overloads in the <see cref="T:KGySoft.Drawing.Imaging.BitmapDataFactory"/> class.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.ArrayPoolingStrategy.Never">
            <summary>
            Indicates that no array pooling occurs when creating <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instances by the self-allocating factory methods.
            This strategy will always use the best matching element type for the underlying buffer.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.ArrayPoolingStrategy.IfByteArrayBased">
            <summary>
            Specifies that array pooling occurs only if the natural buffer element type of the created <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance is byte anyway.
            This is the case for indexed pixel formats in the <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> enumaration.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.ArrayPoolingStrategy.IfCanUseByteArray">
            <summary>
            Specifies that array pooling always occurs if the created <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance can use a byte array as its buffer.
            This is true for all pixel formats as long as the size of the underlying buffer does not exceed the maximum size of a byte array.
            Please note that the default array pool may not cache large arrays, and that accessing the reinterpreted elements may be
            slightly slower than using the best matching element type.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.ArrayPoolingStrategy.AnyElementType">
            <summary>
            Uses array pooling (if available on the current platform) for any element type. This may consume more memory than the other strategies,
            but there is no performance penalty for reinterpreting the elements.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.AutoStrengthMode">
            <summary>
            Represents the behavior of ditherers with configurable strength when auto strength is used.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureStrength(System.Single)">OrderedDitherer.ConfigureStrength</see> method
            for more details and some examples regarding dithering strength.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.AutoStrengthMode.Default">
            <summary>
            The auto strength mode is determined by the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.WorkingColorSpace"/> property
            of the corresponding quantizing session. If it returns <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/>, then the
            default strategy is <see cref="F:KGySoft.Drawing.Imaging.AutoStrengthMode.Interpolated"/>; otherwise, it is <see cref="F:KGySoft.Drawing.Imaging.AutoStrengthMode.Constant"/>.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.AutoStrengthMode.Constant">
            <summary>
            Represents an auto strength strategy where strength is calibrated to a fix value that assures that neither the black nor the white colors
            will suffer from overdithering. This is the default auto strength strategy when quantizing in the sRGB color space and it usually works fine
            if palette entries are evenly distributed in the sRGB color space.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.AutoStrengthMode.Interpolated">
            <summary>
            Represents an auto strength strategy where strength is calibrated both for white and black colors individually so none of them suffer from
            overdithering. During dithering the actual applied strength will be a dynamic value for each pixels using interpolation between
            the white and black strengths based on the pixel brightness. This is the default auto strength strategy when quantizing in the linear color space.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.KnownPixelFormat">
            <summary>
            Represents pixel formats with built-in support.
            For custom formats you can use the <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> type when applicable.
            </summary>
            <remarks>
            <note>The <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> enumeration contains all formats that
            the <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Imaging.PixelFormat" target="_blank">System.Drawing.Imaging.PixelFormat</a>
            enumeration also has, though some fields have different values and the matching names do not necessarily represent the same pixel layout either.
            For example, in this library wide formats, such as <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format64bppArgb"/>, use the full 16 bit per color channel range and the same gamma correction as the
            8-bit per channel formats, whereas <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Imaging.PixelFormat" target="_blank">System.Drawing.Imaging.PixelFormat.Format64bppArgb</a>
            might represent a different range or gamma correction, depending on the operating system.</note>
            </remarks>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Undefined">
            <summary>
            The pixel format is undefined.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format1bppIndexed">
            <summary>
            <para>Represents the indexed 1 bit per pixel format. The corresponding color palette can have up to 2 colors.</para>
            <para>Bit order: bits are filled up from the most significant bit to the least significant bit within a byte.</para>
            <para>Indexed pixel formats are represented by the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> type where every palette entry is a <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format4bppIndexed">
            <summary>
            <para>Represents the indexed 4 bit per pixel format. The corresponding color palette can have up to 16 colors.</para>
            <para>Bit order: even pixels occupy the high bits of a byte, whereas odd pixels are in the low bits.</para>
            <para>Indexed pixel formats are represented by the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> type where every palette entry is a <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format8bppIndexed">
            <summary>
            <para>Represents the indexed 8 bit per pixel format. The corresponding color palette can have up to 256 colors.</para>
            <para>Indexed pixel formats are represented by the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> type where every palette entry is a <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppGrayScale">
            <summary>
            <para>Represents a 16 bit per pixel grayscale format. The color information specifies 65536 shades of gray.</para>
            <para>The closest color type that can represent this pixel format without losing information is <see cref="T:KGySoft.Drawing.Imaging.Color64"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppRgb555">
            <summary>
            <para>Represents a 16 bit per pixel RGB color format where red, green and blue channels use 5 bits per pixel and 1 bit is unused.</para>
            <para>Bit order from LSB to MSB: 5 blue, 5 green, 5 red bits and 1 unused bit. As a binary value a pixel can be specified as <c>0b_X_RRRRR_GGGGG_BBBBB</c>
            on little endian CPUs where <c>X</c> is the ignored most significant bit and <c>BBBBB</c> is the blue component at the least significant bits.</para>
            <para>The closest color type that can represent this pixel format without losing information is <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppRgb565">
            <summary>
            <para>Represents a 16 bit per pixel RGB color format where red, green and blue channels use 5, 6 and 5 bits per pixel, respectively.</para>
            <para>Bit order from LSB to MSB: 5 blue, 6 green and 5 red bits. As a binary value a pixel can be specified as <c>0b_RRRRR_GGGGGG_BBBBB</c>
            on little endian CPUs where <c>BBBBB</c> is the blue component at the least significant bits.</para>
            <para>The closest color type that can represent this pixel format without losing information is <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppArgb1555">
            <summary>
            <para>Represents a 16 bit per pixel ARGB color format where red, green and blue channels use 5 bits per pixel along with 1 bit for alpha.</para>
            <para>Bit order from LSB to MSB: 5 blue, 5 green, 5 red bits and 1 alpha bit. As a binary value a pixel can be specified as <c>0b_A_RRRRR_GGGGG_BBBBB</c>
            on little endian CPUs where <c>A</c> is the most significant bit and <c>BBBBB</c> is the blue component at the least significant bits.</para>
            <para>The closest color type that can represent this pixel format without losing information is <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format24bppRgb">
            <summary>
            <para>Represents a 24 bit per pixel RGB color format where red, green and blue channels use 8 bits per pixel.</para>
            <para>Bit order from LSB to MSB: 8 blue, 8 green and 8 red bits.</para>
            <para>The closest color type that can represent this pixel format without losing information is <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppRgb">
            <summary>
            <para>Represents a 32 bit per pixel RGB color format where red, green and blue channels use 8 bits per pixel. The remaining 8 bits are not used.</para>
            <para>Bit order from LSB to MSB: 8 blue, 8 green, 8 red and 8 unused bits. As a hex value a pixel can be specified as <c>0x_XX_RR_GG_BB</c>
            on little endian CPUs where <c>XX</c> is the unused most significant byte and <c>BB</c> is the blue component at the least significant byte.</para>
            <para>The closest color type that can represent this pixel format without losing information is <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb">
            <summary>
            <para>Represents a 32 bit per pixel ARGB color format where alpha, red, green and blue channels use 8 bits per pixel.</para>
            <para>Bit order from LSB to MSB: 8 blue, 8 green, 8 red and 8 alpha bits. As a hex value a pixel can be specified as <c>0x_AA_RR_GG_BB</c>
            on little endian CPUs where <c>BB</c> is the blue component at the least significant byte.</para>
            <para>The matching color type that represents this pixel format directly is <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppPArgb">
            <summary>
            <para>Represents a 32 bit per pixel ARGB color format where alpha, red, green and blue channels use 8 bits per pixel.
            The red, green, and blue components are premultiplied, according to the alpha component.</para>
            <para>Bit order from LSB to MSB: 8 blue, 8 green, 8 red and 8 alpha bits. As a hex value a pixel can be specified as <c>0x_AA_RR_GG_BB</c>
            on little endian CPUs where <c>BB</c> is the blue component at the least significant byte.</para>
            <para>The matching color type that represents this pixel format directly is <see cref="T:KGySoft.Drawing.Imaging.PColor32"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format48bppRgb">
            <summary>
            <para>Represents a 48 bit per pixel RGB color format where red, green and blue channels use 16 bits per pixel.</para>
            <para>Bit order from LSB to MSB: 16 blue, 16 green and 16 red bits.</para>
            <para>The closest color type that can represent this pixel format without losing information is <see cref="T:KGySoft.Drawing.Imaging.Color64"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format64bppArgb">
            <summary>
            <para>Represents a 64 bit per pixel ARGB color format where alpha, red, green and blue channels use 16 bits per pixel.</para>
            <para>Bit order from LSB to MSB: 16 blue, 16 green, 16 red and 16 alpha bits. As a hex value a pixel can be specified as <c>0x_AAAA_RRRR_GGGG_BBBB</c>
            on little endian CPUs where <c>BBBB</c> is the blue component at the least significant couple of bytes.</para>
            <para>The matching color type that represents this pixel format directly is <see cref="T:KGySoft.Drawing.Imaging.Color64"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format64bppPArgb">
            <summary>
            <para>Represents a 64 bit per pixel ARGB color format where alpha, red, green and blue channels use 16 bits per pixel.
            The red, green, and blue components are premultiplied, according to the alpha component.</para>
            <para>Bit order from LSB to MSB: 16 blue, 16 green, 16 red and 16 alpha bits. As a hex value a pixel can be specified as <c>0x_AAAA_RRRR_GGGG_BBBB</c>
            on little endian CPUs where <c>BBBB</c> is the blue component at the least significant couple of bytes.</para>
            <para>The matching color type that represents this pixel format directly is <see cref="T:KGySoft.Drawing.Imaging.PColor64"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format96bppRgb">
            <summary>
            <para>Represents a 96 bit per pixel RGB color format where red, green and blue channels use 32 bits per pixel.</para>
            <para>Bit order from LSB to MSB: 32 red, 32 green and 32 blue bits.
            The color components are floating point values between 0 and 1 in the linear color space.</para>
            <para>The closest color type that can represent this pixel format without losing information is <see cref="T:KGySoft.Drawing.Imaging.ColorF"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format128bppRgba">
            <summary>
            <para>Represents a 128 bit per pixel RGBA color format where alpha, red, green and blue channels use 32 bits per pixel.</para>
            <para>Bit order from LSB to MSB: 32 red, 32 green, 32 blue and 32 alpha bits.
            The color components are floating point values between 0 and 1 in the linear color space.</para>
            <para>The matching color type that represents this pixel format directly is <see cref="T:KGySoft.Drawing.Imaging.ColorF"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format128bppPRgba">
            <summary>
            <para>Represents a 128 bit per pixel RGBA color format where alpha, red, green and blue channels use 32 bits per pixel.
            The red, green, and blue components are premultiplied, according to the alpha component.</para>
            <para>Bit order from LSB to MSB: 32 red, 32 green, 32 blue and 32 alpha bits.
            The color components are floating point values between 0 and 1 in the linear color space.</para>
            <para>The matching color type that represents this pixel format directly is <see cref="T:KGySoft.Drawing.Imaging.PColorF"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format8bppGrayScale">
            <summary>
            <para>Represents a 8 bit per pixel grayscale format. The color information specifies 256 shades of gray.</para>
            <para>The closest color type that can represent this pixel format without losing information is <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.</para>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppGrayScale">
            <summary>
            <para>Represents a 32 bit per pixel grayscale format. The color information specifies about one billion shades of gray
            between 0 and 1 where the largest difference between two representable values is about 0.00000001 (10<sup>-8</sup>).</para>
            <para>The closest color type that can represent this pixel format without losing information is <see cref="T:KGySoft.Drawing.Imaging.ColorF"/>.</para>
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.WorkingColorSpace">
            <summary>
            Represents the preferred working color space for various operations such as alpha blending, measuring distance of colors, interpolation,
            quantizing, dithering and some other operations. The working color space can be specified independently of the color space of the actual pixel format
            of an <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Imaging_WorkingColorSpace.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para>The working color space can be specified at various places in KGy SOFT Drawing Libraries:
            <list type="bullet">
            <item>At the lowest level, you can specify it when blending colors manually, for example by
            the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.WorkingColorSpace)">ColorExtensions.Blend</see> method.</item>
            <item><see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instances have a <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property, which can be set by the factory methods
            such as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData">BitmapDataFactory.CreateBitmapData</see> methods
            or by the <c>GetReadWriteBitmapData</c> methods for the technology-specific bitmap types.
            The <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace">IBitmapData.WorkingColorSpace</see> property is considered when setting pixels with transparency
            and the pixel format of the bitmap data does not support transparency so the color has to be blended with <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor">IBitmapData.BackColor</see>.
            The color space of the target bitmap is considered also when drawing shapes, or when bitmap data instances are drawn into each other.</item>
            <item>The <see cref="T:KGySoft.Drawing.Imaging.Palette"/> class also has a <see cref="P:KGySoft.Drawing.Imaging.Palette.WorkingColorSpace"/> property, which is used by the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColor(KGySoft.Drawing.Imaging.Color32)"/>
            and <see cref="M:KGySoft.Drawing.Imaging.Palette.GetNearestColorIndex(KGySoft.Drawing.Imaging.Color32)"/> methods.</item>
            <item>Quantizers also have their own working color space configuration. You can use the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.ConfigureColorSpace(KGySoft.Drawing.Imaging.WorkingColorSpace)">PredefinedColorsQuantizer.ConfigureColorSpace</see>
            and <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.ConfigureColorSpace(KGySoft.Drawing.Imaging.WorkingColorSpace)">OptimizedPaletteQuantizer.ConfigureColorSpace</see> methods to configure the
            working color space of the built-in quantizers of KGy SOFT Drawing Libraries.</item>
            <item>Ditherers may also have specific behavior for the different color spaces. The ditherer implementations in KGy SOFT Drawing Libraries
            always take the working color space of the corresponding quantizer exposed by the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.WorkingColorSpace">IQuantizingSession.WorkingColorSpace</see> property.</item>
            </list></para>
            </remarks>
            <example>
            <para>Most common color representations (just like the <see cref="T:System.Drawing.Color"/> or <see cref="T:KGySoft.Drawing.Imaging.Color32"/> types that use 8 bit color channels) use the sRGB color space
            that has gamma corrected color values. In a color type that uses the sRGB color space the consecutive RGB values don't represent linear light intensity increase.
            Instead, a gamma correction of approximately γ = 2.2 is applied to the actual light intensity, so it is adjusted for the perception of the human eye
            (in fact, the sRGB color space is linear for the darkest values and uses a γ = 2.4 correction above a threshold limit so the overall average is
            somewhere around 2.2). This representation helps to distribute RGB values so that 50% represents the apparently half-bright tones:</para>
            <list type="table"><item><term>
            <div style="text-align:center;">
            <img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
            <br/>Grayscale color shades. The difference of RGB values between the neighboring shades is constant in the sRGB color space,
            resulting an apparently linear gradient with half-gray tones at the middle.</div>
            </term></item></list>
            <h2>Alpha Blending</h2>
            <para>Blending partially transparent (alpha) colors in the sRGB color space ends up in incorrect results, though it is not always obvious.
            The most apparent incorrect results are for colors that have disjunct RGB values, for which the result is typically too dark.</para>
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Blending in the sRGB color space</div></th>
            <th width="50%"><div style="text-align:center;">Blending in the linear color space</div></th></tr></thead>
            <tbody>
            <tr><td><div style="text-align:center;">
            <img src="../Help/Images/BlendingExampleSrgb.png" alt="Blending colored stripes in the sRGB color space"/>
            <br/>Result of blending colors in the sRGB color space. The vertical bars are opaque, whereas the horizontal ones have 50% transparency.
            Blending colors with disjunct RGB components often produce too dark results.</div></td>
            <td><div style="text-align:center;">
            <img src="../Help/Images/BlendingExampleLinear.png" alt="Blending colored stripes in the linear color space"/>
            <br/>Result of blending colors in the linear color space. The result seems much more natural.
            Note that horizontal bars still have 50% transparency, though they seem brighter now.</div></td>
            </tr>
            <tr><td colspan="2"><div style="text-align:center;">
            <img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
            <br/>Color hues with alpha gradient. As the image contains transparency the blending with the background is performed by your browser.
            <br/>(Side note: just like at the grayscale gradient above, the color gradients also have constant RGB differences between the
            horizontal neighboring pixels in the sRGB color space. The examples below are different only in alpha blending
            but all of them have the same sRGB color gradients.)</div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <img src="../Help/Images/AlphaGradientRgb888White.png" alt="Color hues blended with white background in the sRGB color space"/>
            <br/>Color hues blended with white background in the sRGB color space. If the alpha image in the row above looks like this,
            then your browser blends colors in the sRGB color space.</div></td>
            <td><div style="text-align:center;">
            <img src="../Help/Images/AlphaGradientRgb888WhiteLinear.png" alt="Color hues blended with white background in the linear color space"/>
            <br/>Color hues blended with white background in the linear color space.</div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <img src="../Help/Images/AlphaGradientRgb888Black.png" alt="Color hues blended with black background in the sRGB color space"/>
            <br/>Color hues blended with black background in the sRGB color space.</div></td>
            <td><div style="text-align:center;">
            <img src="../Help/Images/AlphaGradientRgb888BlackLinear.png" alt="Color hues blended with black background in the linear color space"/>
            <br/>Color hues blended with black background in the linear color space. Note that much more colors are visible in the darker regions.</div></td>
            </tr>
            </tbody></table>
            <para>To blend sRGB colors correctly, the source colors must be converted to the linear color space first,
            and then the blended result has to be converted back to the sRGB color space. This has an additional cost,
            which is often omitted even by professional image processing applications, libraries and even by web browsers.</para>
            <note>Even though blending in the sRGB color space is not quite correct, some pixel formats are optimized exactly for doing that.
            With premultiplied sRGB pixel formats sRGB blending is very fast, and forcing color correct blending is particularly expensive.
            Use such pixel formats only when it is really justified, for example when this is the fastest or default format for
            a rendering engine (which is almost always the case, including GDI+, WPF, UWP, WinUI, Skia and many other engines).
            If you want to use color correct blending the best if you use pixel formats with linear gamma (indicated by
            the <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.LinearGamma"/> property), or for sRGB pixel formats try to avoid premultiplied formats
            to prevent the overhead of unnecessary conversions back and forth.</note>
            <h2>Quantizing</h2>
            <para>When reducing the number of colors to some specified set of colors (either by using a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> of predefined entries or some custom
            quantizer function) measuring the distance between colors may return different results depending on the used color space.
            Looking up for the nearest colors in the sRGB color space tends to turn the darker shades too bright, though
            the more colors the quantizer uses the less noticeable the difference is.</para>
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Quantizing in the sRGB color space</div></th>
            <th width="50%"><div style="text-align:center;">Quantizing in the linear color space</div></th></tr></thead>
            <tbody>
            <tr><td colspan="2"><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarring.png" alt="Test image &quot;Girl with a Pearl Earring&quot;"/>
            <br/>Original test image "Girl with a Pearl Earring"</div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringBWSrgb.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with back and white palette, quantized in the sRGB color space"/>
            <br/>Quantizing by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white</see> palette in the sRGB color space.</div></td>
            <td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringBWLinear.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with back and white palette, quantized in the linear color space"/>
            <br/>Quantizing by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white</see> palette in the linear color space.</div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringRgb111Srgb.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with RGB111 palette, quantized in the sRGB color space"/>
            <br/>Quantizing by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)">RGB111</see> palette in the sRGB color space.</div></td>
            <td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringRgb111Linear.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with RGB111 palette, quantized in the linear color space"/>
            <br/>Quantizing by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)">RGB111</see> palette in the linear color space.</div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringDefault8bppSrgb.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with system default 8 BPP palette, quantized in the sRGB color space"/>
            <br/>Quantizing by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP</see> palette in the sRGB color space.
            For more colors the difference is much less noticeable but the background is slightly brighter than in the original image.</div></td>
            <td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringDefault8bppLinear.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with system default 8 BPP  palette, quantized in the linear color space"/>
            <br/>Quantizing by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP</see> palette in the linear color space.
            For more colors the difference is much less noticeable but the background is slightly darker than in the sRGB result.</div></td>
            </tr>
            </tbody></table>
            <h2>Dithering</h2>
            <para>When quantizing is combined with dithering, the ditherers may also respect the working color space of the quantizers. Similarly to the non-dithered results,
            the difference between working in the sRGB or linear color space gets less and less noticeable with using more and more colors.</para>
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Quantizing with dithering in the sRGB color space</div></th>
            <th width="50%"><div style="text-align:center;">Quantizing with dithering in the linear color space</div></th></tr></thead>
            <tbody>
            <tr><td colspan="2"><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarring.png" alt="Test image &quot;Girl with a Pearl Earring&quot;"/>
            <br/>Original test image "Girl with a Pearl Earring"</div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringBWDitheredB8Srgb.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with back and white palette, quantized in the sRGB color space using Bayer 8x8 dithering"/>
            <br/>Quantizing by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white</see> palette in the sRGB color space using <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering.
            The result is too bright. Please note though that if your browser resizes the image in the sRGB color space it might appear correct, in which case make sure you open it in a new tab and set the zoom to 100%.</div></td>
            <td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringBWDitheredB8Linear.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with back and white palette, quantized in the linear color space using Bayer 8x8 dithering"/>
            <br/>Quantizing by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">black and white</see> palette in the linear color space using <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering.
            The result has correct brightness. Please note though that if your browser resizes the image in the sRGB color space it might appear too dark, in which case make sure you open it in a new tab and set the zoom to 100%.</div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringRgb111DitheredFSSrgb.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with RGB111 palette, quantized in the sRGB color space using Floyd-Steinberg dithering"/>
            <br/>Quantizing by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)">RGB111</see> palette in the sRGB color space using <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering.
            The result is too bright. Please note though that if your browser resizes the image in the sRGB color space it might appear correct, in which case make sure you open it in a new tab and set the zoom to 100%.</div></td>
            <td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringRgb111DitheredFSLinear.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with RGB111 palette, quantized in the linear color space using Floyd-Steinberg dithering"/>
            <br/>Quantizing by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)">RGB111</see> palette in the linear color space using <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering.
            The result has correct brightness. Please note though that if your browser resizes the image in the sRGB color space it might appear too dark, in which case make sure you open it in a new tab and set the zoom to 100%.</div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringDefault8bppDitheredFSSrgb.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with system default 8 BPP palette, quantized in the sRGB color space using Floyd-Steinberg dithering"/>
            <br/>Quantizing by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP</see> palette in the sRGB color space using <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering.
            The background is slightly brighter than in the original image but due to the number of colors the difference is barely noticeable.</div></td>
            <td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringDefault8bppDitheredFSLinear.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with system default 8 BPP  palette, quantized in the linear color space using Floyd-Steinberg dithering"/>
            <br/>Quantizing by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">system default 8 BPP</see> palette in the linear color space using <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering.
            Due to the number of colors the difference is barely noticeable between the sRGB and the linear result.</div></td>
            </tr>
            </tbody></table>
            <h2>Resizing</h2>
            <para>When resizing images with some interpolation the working color space may also affect the result. When resizing true color images the difference might be negligible;
            however, if the source image has only a few colors with high frequency areas (typically dithered images as above) the working color space used for the resizing makes a noticeable difference.</para>
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Resizing in the sRGB color space</div></th>
            <th width="50%"><div style="text-align:center;">Resizing in the linear color space</div></th></tr></thead>
            <tbody>
            <tr><td colspan="2"><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringRgb111DitheredB8Linear.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with RGB111 palette, quantized in the linear color space using Bayer 8x8 dithering"/>
            <br/>Test image "Girl with a Pearl Earring" quantized by <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)">RGB111</see> palette in the linear color space
            using <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering.</div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringRgb111ResizedSrgb.png" alt="Quantized test image &quot;Girl with a Pearl Earring&quot; resized in the sRGB color space"/>
            <br/>Resizing the quantized image with bicubic interpolation in the sRGB color space. The result is too dark.
            Ironically, if the source image had been quantized in the sRGB color space so it was too bright, then the resized result would seem quite correct.</div></td>
            <td><div style="text-align:center;">
            <img src="../Help/Images/GirlWithAPearlEarringRgb111ResizedLinear.png" alt="Quantized test image &quot;Girl with a Pearl Earring&quot; resized in the linear color space"/>
            <br/>Resizing the quantized image with bicubic interpolation in the linear color space. The result preserved the original brightness.</div></td>
            </tr>
            </tbody></table>
            </example>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default">
            <summary>
            Represents the default color space mode most optimal for the current operation or actual color space.
            When working with <see cref="T:KGySoft.Drawing.Imaging.Palette"/> entries or an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> the default option always chooses
            the sRGB color space. When working with an <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> directly, then the selected working color space
            depends on the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the target bitmap data.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear">
            <summary>
            Indicates that the linear color space should be used when performing operations on colors.
            If the actual color space of the source is sRGB, then the operation has some overhead due to the conversions back and forth.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb">
            <summary>
            Indicates that the sRGB color space should be used when performing operations on colors.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.BitmapDataExtensions">
            <summary>
            Provides extension methods for the <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>, <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
            and <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> types.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetPreferredColorSpace(KGySoft.Drawing.Imaging.IBitmapData)">
            <summary>
            Gets a non-default <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> that can be used when working with the specified <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">An <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> to determine the result. If <see langword="null"/>, then <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> is returned.</param>
            <returns>A non-default <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> that can be used when working with the specified <paramref name="bitmapData"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetPreferredColorSpaceOrDefault(KGySoft.Drawing.Imaging.IBitmapData)">
            <summary>
            Gets non-default color space if set, or sets linear if pixel format has linear gamma.
            Unlike <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetPreferredColorSpace(KGySoft.Drawing.Imaging.IBitmapData)"/>, it can return Default.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetKnownPixelFormat(KGySoft.Drawing.Imaging.IBitmapData)">
            <summary>
            Almost the same as <see cref="M:KGySoft.Drawing.Imaging.PixelFormatInfo.ToKnownPixelFormat"/> but can consider
            HasAlpha and IsGrayscale also by the palette.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <overloads>The overloads of the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> method can be grouped into the following categories:
            <list type="bullet">
            <item>The ones without <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> and <see cref="T:System.Drawing.Rectangle"/> parameters attempt to create an exact copy of the original bitmap data.
            The original pixel format is attempted to be preserved even for custom formats, which may succeed if the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/>
            property was set to <see langword="true"/> when the bitmap data was created.</item>
            <item>The overloads that have a <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> parameter create a copy with the specified pixel format. The original color depth is attempted to be preserved as much as possible,
            even between different pixel formats with wide colors.</item>
            <item>The overloads with a <see cref="T:System.Drawing.Rectangle"/> parameter allow to create a copy only of a portion of the source bitmap.</item>
            <item>If an overload has an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter, then it allows limiting the set of colors of the result even if the format would allow more colors.</item>
            <item>If the result pixel format has a low bit-per-pixel value, or you use a quantizer and you want to preserve the details as much as possible, then look for the
            overloads that have an <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> parameter.</item>
            <item>To be able to configure the degree of parallelism, cancellation or progress reporting, look for the overloads whose last parameter is
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm">ParallelConfig</a> instance.</item>
            <item>Some overloads have an <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> parameter.
            These methods are special ones and are designed to be used from your custom asynchronous methods where cloning is just one step of potentially multiple operations.
            But you can also use these overloads to force synchronous execution on a single thread.
            See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</item>
            <item>All of these methods block the caller on the current thread. For asynchronous call
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync">CloneAsync</see> overloads (on .NET Framework 4.0 and above),
            or the old-fashioned <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone">BeginClone</see> methods that work on every platform target.</item>
            </list></overloads>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="workingColorSpace">Specifies the value of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property of the cloned instance.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously.
            Alternatively, use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/>.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size and the specified <paramref name="pixelFormat"/> and color settings.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This overload automatically quantizes colors if <paramref name="pixelFormat"/> represents a narrower set of colors than <paramref name="source"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            To use a custom quantizer use the overloads with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <para>If <paramref name="pixelFormat"/> represents an indexed format, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>. To specify the desired palette of the result use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)"/> overload.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat_1.htm">ConvertPixelFormat(Image, PixelFormat, Color, byte)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size and the specified <paramref name="pixelFormat"/> and color settings.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="workingColorSpace">Specifies the value of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property of the cloned instance
            and affects the possible blending operations during the cloning.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.ParallelConfig)"/> overload to force synchronous execution on a single thread. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This overload automatically quantizes colors if <paramref name="pixelFormat"/> represents a narrower set of colors than <paramref name="source"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            To use a custom quantizer use the overloads with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <para>If <paramref name="pixelFormat"/> represents an indexed format, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>. To specify the desired palette of the result use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)"/> overload.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat_1.htm">ConvertPixelFormat(Image, PixelFormat, Color, byte)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and color settings.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This overload automatically quantizes colors if <paramref name="pixelFormat"/> represents a narrower set of colors than <paramref name="source"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            To use a custom quantizer use the overloads with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <para>If <paramref name="pixelFormat"/> represents an indexed format, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>. To specify the desired palette of the result use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)"/> overload.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat_2.htm">ConvertPixelFormat(Image, PixelFormat, Color[], Color, byte)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and color settings.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="workingColorSpace">Specifies the value of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property of the cloned instance
            and affects the possible blending operations during the cloning.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This overload automatically quantizes colors if <paramref name="pixelFormat"/> represents a narrower set of colors than <paramref name="source"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            To use a custom quantizer use the overloads with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <para>If <paramref name="pixelFormat"/> represents an indexed format, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>. To specify the desired palette of the result use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)"/> overload.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat_2.htm">ConvertPixelFormat(Image, PixelFormat, Color[], Color, byte)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size and the specified <paramref name="pixelFormat"/> and <paramref name="palette"/>.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="palette">If <paramref name="pixelFormat"/> is an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.
            If <see langword="null"/>, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This overload automatically quantizes colors if <paramref name="pixelFormat"/> represents a narrower set of colors than <paramref name="source"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            To use a custom quantizer use the overloads with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat_2.htm">ConvertPixelFormat(Image, PixelFormat, Color[], Color, byte)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="palette"/> contains too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and <paramref name="palette"/>.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="palette">If <paramref name="pixelFormat"/> is an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.
            If <see langword="null"/>, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This overload automatically quantizes colors if <paramref name="pixelFormat"/> represents a narrower set of colors than <paramref name="source"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            To use a custom quantizer use the overloads with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat_2.htm">ConvertPixelFormat(Image, PixelFormat, Color[], Color, byte)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="palette"/> contains too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size and the specified <paramref name="pixelFormat"/>, using an optional <paramref name="quantizer"/> and <paramref name="ditherer"/>.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="quantizer">An optional <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to determine the colors of the result.
            If <see langword="null"/> and <paramref name="pixelFormat"/> is an indexed format, then a default palette and quantization logic will be used.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="pixelFormat"/> represents an at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If <paramref name="pixelFormat"/> can represent a narrower set of colors, then the result will be automatically quantized to its color space,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="pixelFormat"/> can represent,
            then the result will eventually be quantized to <paramref name="pixelFormat"/>, though the result may have a poorer quality than expected.</para>
            <para>Color depth can be preserved if <paramref name="quantizer"/> is not specigied and the target format can represent the colors of the source format without losing information.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat(Image, PixelFormat, IQuantizer?, IDitherer?)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="quantizer"/> uses a palette with too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size and the specified <paramref name="pixelFormat"/>, using an optional <paramref name="ditherer"/>.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="pixelFormat"/> represents an at least 24 bits-per-pixel size.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If <paramref name="pixelFormat"/> can represent a narrower set of colors, then the result will be automatically quantized to its color space.
            To use dithering a <paramref name="ditherer"/> must be explicitly specified.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat(Image, PixelFormat, IQuantizer?, IDitherer?)</a>extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/>, using an optional <paramref name="ditherer"/>.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="pixelFormat"/> represents an at least 24 bits-per-pixel size.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If <paramref name="pixelFormat"/> can represent a narrower set of colors, then the result will be automatically quantized to its color space.
            To use dithering a <paramref name="ditherer"/> must be explicitly specified.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat(Image, PixelFormat, IQuantizer?, IDitherer?)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/>, using an optional <paramref name="quantizer"/> and <paramref name="ditherer"/>.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="quantizer">An optional <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to determine the colors of the result.
            If <see langword="null"/> and <paramref name="pixelFormat"/> is an indexed format, then a default palette and quantization logic will be used.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="pixelFormat"/> represents an at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If <paramref name="pixelFormat"/> can represent a narrower set of colors, then the result will be automatically quantized to its color space,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="pixelFormat"/> can represent,
            then the result will eventually be quantized to <paramref name="pixelFormat"/>, though the result may have a poorer quality than expected.</para>
            <para>Color depth can be preserved if <paramref name="quantizer"/> is not specigied and the target format can represent the colors of the source format without losing information.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat(Image, PixelFormat, IQuantizer?, IDitherer?)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="quantizer"/> uses a palette with too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.ParallelConfig)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation
            was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism,
            cancellation and progress reporting. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Threading.ParallelConfig)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="workingColorSpace">Specifies the value of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property of the cloned instance.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation
            was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism,
            cancellation and progress reporting. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Threading.ParallelConfig)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/>.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation
            was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/>
            parameter allows you to configure the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.ParallelConfig)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size and the specified <paramref name="pixelFormat"/> and color settings.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation
            was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This overload automatically quantizes colors if <paramref name="pixelFormat"/> represents a narrower set of colors than <paramref name="source"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            To use a custom quantizer use the overloads with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <para>If <paramref name="pixelFormat"/> represents an indexed format, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>. To specify the desired palette of the result use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,KGySoft.Threading.ParallelConfig)"/> overload.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat_1.htm">ConvertPixelFormat(Image, PixelFormat, Color, byte)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.ParallelConfig)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size and the specified <paramref name="pixelFormat"/> and color settings.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="workingColorSpace">Specifies the value of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property of the cloned instance
            and affects the possible blending operations during the cloning.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation
            was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This overload automatically quantizes colors if <paramref name="pixelFormat"/> represents a narrower set of colors than <paramref name="source"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            To use a custom quantizer use the overloads with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <para>If <paramref name="pixelFormat"/> represents an indexed format, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>. To specify the desired palette of the result use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,KGySoft.Threading.ParallelConfig)"/> overload.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat_1.htm">ConvertPixelFormat(Image, PixelFormat, Color, byte)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.ParallelConfig)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and color settings.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation
            was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This overload automatically quantizes colors if <paramref name="pixelFormat"/> represents a narrower set of colors than <paramref name="source"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            To use a custom quantizer use the overloads with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <para>If <paramref name="pixelFormat"/> represents an indexed format, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>. To specify the desired palette of the result use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,KGySoft.Threading.ParallelConfig)"/> overload.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat_2.htm">ConvertPixelFormat(Image, PixelFormat, Color[], Color, byte)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Threading.ParallelConfig)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and color settings.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="workingColorSpace">Specifies the value of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property of the cloned instance
            and affects the possible blending operations during the cloning.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation
            was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This overload automatically quantizes colors if <paramref name="pixelFormat"/> represents a narrower set of colors than <paramref name="source"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            To use a custom quantizer use the overloads with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <para>If <paramref name="pixelFormat"/> represents an indexed format, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>. To specify the desired palette of the result use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,KGySoft.Threading.ParallelConfig)"/> overload.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat_2.htm">ConvertPixelFormat(Image, PixelFormat, Color[], Color, byte)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,KGySoft.Threading.ParallelConfig)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size and the specified <paramref name="pixelFormat"/> and <paramref name="palette"/>.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="palette">If <paramref name="pixelFormat"/> is an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.
            If <see langword="null"/>, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation
            was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This overload automatically quantizes colors if <paramref name="pixelFormat"/> represents a narrower set of colors than <paramref name="source"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            To use a custom quantizer use the overloads with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat_2.htm">ConvertPixelFormat(Image, PixelFormat, Color[], Color, byte)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="palette"/> contains too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,KGySoft.Threading.ParallelConfig)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and <paramref name="palette"/>.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="palette">If <paramref name="pixelFormat"/> is an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.
            If <see langword="null"/>, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation
            was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This overload automatically quantizes colors if <paramref name="pixelFormat"/> represents a narrower set of colors than <paramref name="source"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            To use a custom quantizer use the overloads with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter.</para>
            <para>Color depth can be preserved if the target format can represent the colors of the source format without losing information.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat_2.htm">ConvertPixelFormat(Image, PixelFormat, Color[], Color, byte)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="palette"/> contains too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size and the specified <paramref name="pixelFormat"/>, using an optional <paramref name="quantizer"/> and <paramref name="ditherer"/>.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="quantizer">An optional <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to determine the colors of the result.
            If <see langword="null"/> and <paramref name="pixelFormat"/> is an indexed format, then a default palette and quantization logic will be used.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="pixelFormat"/> represents an at least 24 bits-per-pixel size.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation
            was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If <paramref name="pixelFormat"/> can represent a narrower set of colors, then the result will be automatically quantized to its color space,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="pixelFormat"/> can represent,
            then the result will eventually be quantized to <paramref name="pixelFormat"/>, though the result may have a poorer quality than expected.</para>
            <para>Color depth can be preserved if <paramref name="quantizer"/> is not specigied and the target format can represent the colors of the source format without losing information.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat(Image, PixelFormat, IQuantizer?, IDitherer?)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="quantizer"/> uses a palette with too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/>, using an optional <paramref name="quantizer"/> and <paramref name="ditherer"/>.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="quantizer">An optional <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to determine the colors of the result.
            If <see langword="null"/> and <paramref name="pixelFormat"/> is an indexed format, then a default palette and quantization logic will be used.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="pixelFormat"/> represents an at least 24 bits-per-pixel size.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation
            was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If <paramref name="pixelFormat"/> can represent a narrower set of colors, then the result will be automatically quantized to its color space,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="pixelFormat"/> can represent,
            then the result will eventually be quantized to <paramref name="pixelFormat"/>, though the result may have a poorer quality than expected.</para>
            <para>Color depth can be preserved if <paramref name="quantizer"/> is not specigied and the target format can represent the colors of the source format without losing information.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat(Image, PixelFormat, IQuantizer?, IDitherer?)</a> extension method
            for some examples. The <a href="https://docs.kgysoft.net/drawing/html/Overload_KGySoft_Drawing_ImageExtensions_ConvertPixelFormat.htm">ConvertPixelFormat</a> extensions work the same way
            for <a href="https://docs.microsoft.com/en-us/dotnet/api/System.Drawing.Image" target="_blank">Image</a>s
            as the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> extensions for <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instances.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="quantizer"/> uses a palette with too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext,System.Nullable{System.Drawing.Rectangle})">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation. If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation was canceled.</returns>
            <remarks>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle})">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and color settings,
            using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation. If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned,
            or <see langword="null"/> to clone the whole <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation was canceled.</returns>
            <remarks>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            <note>See the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for more details about the other parameters.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle})">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and color settings,
            using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation. If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="workingColorSpace">Specifies the value of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property of the cloned instance
            and affects the possible blending operations during the cloning.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned,
            or <see langword="null"/> to clone the whole <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation was canceled.</returns>
            <remarks>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            <note>See the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> overload for more details about the other parameters.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle})">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and <paramref name="palette"/>,
            using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation. If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="palette">If <paramref name="pixelFormat"/> is an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.
            If <see langword="null"/>, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned,
            or <see langword="null"/> to clone the whole <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation was canceled.</returns>
            <remarks>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            <note>See the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)"/> overload for more details about the other parameters.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="palette"/> contains too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle})">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/>, using an optional <paramref name="quantizer"/> and <paramref name="ditherer"/>,
            along with a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation. If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="quantizer">An optional <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to determine the colors of the result.
            If <see langword="null"/> and <paramref name="pixelFormat"/> is an indexed format, then a default palette and quantization logic will be used.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="pixelFormat"/> represents an at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned,
            or <see langword="null"/> to clone the whole <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>, or <see langword="null"/>, if the operation was canceled.</returns>
            <remarks>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            <note>See the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/> overload for more details about the other parameters.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="quantizer"/> uses a palette with too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to clone the specified <paramref name="source"/> with identical size asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndClone(System.IAsyncResult)">EndClone</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to clone the specified <paramref name="source"/> with identical size asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="workingColorSpace">Specifies the value of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property of the cloned instance.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndClone(System.IAsyncResult)">EndClone</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to clone the specified portion of the specified <paramref name="source"/> asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndClone(System.IAsyncResult)">EndClone</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to clone the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and color settings asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned, or <see langword="null"/> to clone the entire <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndClone(System.IAsyncResult)">EndClone</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to clone the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and color settings asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="workingColorSpace">Specifies the value of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property of the cloned instance
            and affects the possible blending operations during the cloning.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned, or <see langword="null"/> to clone the entire <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndClone(System.IAsyncResult)">EndClone</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to clone the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and <paramref name="palette"/> asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="palette">If <paramref name="pixelFormat"/> is an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.
            If <see langword="null"/>, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned, or <see langword="null"/> to clone the entire <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndClone(System.IAsyncResult)">EndClone</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="palette"/> contains too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to clone the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/>, using an optional <paramref name="quantizer"/> and <paramref name="ditherer"/> asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="quantizer">An optional <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to determine the colors of the result.
            If <see langword="null"/> and <paramref name="pixelFormat"/> is an indexed format, then a default palette and quantization logic will be used.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="pixelFormat"/> represents an at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned, or <see langword="null"/> to clone the entire <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndClone(System.IAsyncResult)">EndClone</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="quantizer"/> uses a palette with too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndClone(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone">BeginClone</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync">CloneAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that is the result of the operation,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <c>asyncConfig</c> parameter was <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is the new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Alternatively, you can also use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)"/> method, which is available on every platform.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Threading.TaskConfig)">
            <summary>
            Gets the clone of the specified <paramref name="source"/> with identical size asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="workingColorSpace">Specifies the value of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property of the cloned instance.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is the new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Alternatively, you can also use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)"/> method, which is available on every platform.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Threading.TaskConfig)">
            <summary>
            Gets the clone of the specified portion of the specified <paramref name="source"/> asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is the new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Alternatively, you can also use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Threading.AsyncConfig)"/> method, which is available on every platform.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and color settings asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="workingColorSpace">Specifies the value of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property of the cloned instance
            and affects the possible blending operations during the cloning.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned, or <see langword="null"/> to clone the entire <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is the new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and color settings asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="backColor">If <paramref name="pixelFormat"/> does not support alpha or supports only single-bit alpha, then specifies the color of the background.
            Source pixels with alpha, which will be opaque in the result will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If <paramref name="pixelFormat"/> can represent only single-bit alpha or <paramref name="pixelFormat"/> is an indexed format and the target palette contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property, under which the color is considered transparent. If 0,
            then the result will not have transparent pixels. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned, or <see langword="null"/> to clone the entire <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is the new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/> and <paramref name="palette"/> asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="palette">If <paramref name="pixelFormat"/> is an indexed format, then specifies the desired <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the returned <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance.
            It determines also the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> properties of the result.
            If <see langword="null"/>, then the target palette is taken from <paramref name="source"/> if it also has a palette of no more entries than the target indexed format can have;
            otherwise, a default palette will be used based on <paramref name="pixelFormat"/>.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned, or <see langword="null"/> to clone the entire <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is the new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Palette)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="palette"/> contains too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CloneAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,System.Nullable{System.Drawing.Rectangle},KGySoft.Threading.TaskConfig)">
            <summary>
            Gets the clone of the specified portion of <paramref name="source"/> with the specified <paramref name="pixelFormat"/>, using an optional <paramref name="quantizer"/> and <paramref name="ditherer"/> asynchronously.
            </summary>
            <param name="source">An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance to be cloned.</param>
            <param name="pixelFormat">The desired pixel format of the result.</param>
            <param name="quantizer">An optional <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to determine the colors of the result.
            If <see langword="null"/> and <paramref name="pixelFormat"/> is an indexed format, then a default palette and quantization logic will be used.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="pixelFormat"/> represents an at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be cloned, or <see langword="null"/> to clone the entire <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is the new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that represents the clone of the specified <paramref name="source"/>,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> does not specify a valid format.
            <br/>-or-
            <br/><paramref name="sourceRectangle"/> has no overlapping region with source bounds.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="quantizer"/> uses a palette with too many colors for the specified <paramref name="pixelFormat"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Copies the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
            without scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To draw a bitmap data into another one with blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto">DrawInto</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be copied into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> into which <paramref name="source"/> should be copied.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size. This parameter is optional.
            <br/>Default value: <see cref="F:System.Drawing.Point.Empty">Point.Empty</see>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used. If not specified, then the copying operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginCopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginCopyTo</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyToAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">CopyToAsync</see> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The copied area is automatically clipped if its size or <paramref name="targetLocation"/> makes it impossible to completely fit in the <paramref name="target"/>.</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="target"/> can represent,
            then the result will eventually be quantized to <paramref name="target"/>, though the result may have a poorer quality than expected.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <overloads>The overloads of the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> method can be grouped into the following categories:
            <list type="bullet">
            <item>The overloads with a <see cref="T:System.Drawing.Rectangle"/> parameter allow to copy only a portion of the source bitmap.</item>
            <item>If an overload has an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter, then it allows limiting the set of colors of the result even if the pixel format of the target would allow more colors.</item>
            <item>If the target pixel format has a low bit-per-pixel value or you use a quantizer and you want to preserve the details as much as possible, then look for the
            overloads that have an <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> parameter.</item>
            <item>To be able to configure the degree of parallelism, cancellation or progress reporting, look for the overloads whose last parameter is
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm">ParallelConfig</a> instance.</item>
            <item>One overload has an <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> parameter.
            That method is a special one and is designed to be used from your custom asynchronous methods where copying a bitmap is just one step of potentially multiple operations.
            But you can also use that overload to force synchronous execution on a single thread.
            See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</item>
            <item>All of these methods block the caller on the current thread. For asynchronous call
            you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyToAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">CopyToAsync</see> method (on .NET Framework 4.0 and above),
            or the old-fashioned <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginCopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginCopyTo</see> method that works on every platform target.</item>
            </list>
            <note>Note that these methods preserve the original size of the source bitmap, and copy even the alpha pixels without alpha blending.
            To draw a bitmap data into another one with blending and potential resizing, use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto">DrawInto</see> methods instead.</note>
            </overloads>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Point,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Copies the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
            without scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To draw a bitmap data into another one with blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto">DrawInto</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be copied into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> into which <paramref name="source"/> should be copied.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginCopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginCopyTo</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyToAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">CopyToAsync</see> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The copied area is automatically clipped if its size or <paramref name="targetLocation"/> makes it impossible to completely fit in the <paramref name="target"/>.</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>.
            To use dithering a <paramref name="ditherer"/> must be explicitly specified.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Copies the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
            without scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To draw a bitmap data into another one with blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto">DrawInto</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be copied into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> into which <paramref name="source"/> should be copied.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be copied into the <paramref name="target"/>.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginCopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginCopyTo</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyToAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">CopyToAsync</see> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The copied area is automatically clipped if its size or <paramref name="targetLocation"/> makes it impossible to completely fit in the <paramref name="target"/>.</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>.
            To use dithering a <paramref name="ditherer"/> must be explicitly specified.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Copies the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
            without scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To draw a bitmap data into another one with blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto">DrawInto</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be copied into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> into which <paramref name="source"/> should be copied.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be copied into the <paramref name="target"/>.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used. If not specified, then the copying operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginCopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginCopyTo</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyToAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">CopyToAsync</see> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The copied area is automatically clipped if its size or <paramref name="targetLocation"/> makes it impossible to completely fit in the <paramref name="target"/>.</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="target"/> can represent,
            then the result will eventually be quantized to <paramref name="target"/>, though the result may have a poorer quality than expected.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)">
            <summary>
            Copies the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
            without scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To draw a bitmap data into another one with blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto">DrawInto</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be copied into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> into which <paramref name="source"/> should be copied.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used. If not specified, then the copying operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. </param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism,
            cancellation and progress reporting. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginCopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginCopyTo</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyToAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">CopyToAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The copied area is automatically clipped if its size or <paramref name="targetLocation"/> makes it impossible to completely fit in the <paramref name="target"/>.</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="target"/> can represent,
            then the result will eventually be quantized to <paramref name="target"/>, though the result may have a poorer quality than expected.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)">
            <summary>
            Copies the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
            without scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To draw a bitmap data into another one with blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto">DrawInto</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be copied into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> into which <paramref name="source"/> should be copied.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be copied into the <paramref name="target"/>.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used. If not specified, then the copying operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. </param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism,
            cancellation and progress reporting. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginCopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginCopyTo</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyToAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">CopyToAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The copied area is automatically clipped if its size or <paramref name="targetLocation"/> makes it impossible to completely fit in the <paramref name="target"/>.</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="target"/> can represent,
            then the result will eventually be quantized to <paramref name="target"/>, though the result may have a poorer quality than expected.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Threading.IAsyncContext,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Copies the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
            without scaling and blending, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be copied into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> into which <paramref name="source"/> should be copied.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be copied into the <paramref name="target"/>.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used. If not specified, then the copying operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            <note>See the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/> overload for more details about the other parameters.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginCopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to copy the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> asynchronously,
            without scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To draw a bitmap data into another one with blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto">BeginDrawInto</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be copied into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> into which <paramref name="source"/> should be copied.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be copied, or <see langword="null"/> to copy the entire <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="targetLocation">A <see cref="T:System.Drawing.Point"/> that specifies the target location, or <see langword="null"/> top copy the <paramref name="source"/> to the top-left corner of the <paramref name="target"/>. Target size will be always the same as the source size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used. If not specified, then the copying operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyToAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">CopyToAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndCopyTo(System.IAsyncResult)">EndCopyTo</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndCopyTo(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginCopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginCopyTo</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyToAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">CopyToAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyToAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">
            <summary>
            Copies the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> asynchronously,
            without scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To draw a bitmap data into another one with blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync">DrawIntoAsync</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be copied into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> into which <paramref name="source"/> should be copied.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be copied, or <see langword="null"/> to copy the entire <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="targetLocation">A <see cref="T:System.Drawing.Point"/> that specifies the target location, or <see langword="null"/> top copy the <paramref name="source"/> to the top-left corner of the <paramref name="target"/>. Target size will be always the same as the source size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used. If not specified, then the copying operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            without scaling, using blending. This method always preserves the source size in pixels, works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            For scaling use the overloads with <c>targetRectangle</c> and <see cref="T:KGySoft.Drawing.ScalingMode"/> parameters.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size. This parameter is optional.
            <br/>Default value: <see cref="F:System.Drawing.Point.Empty">Point.Empty</see>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The image to be drawn is automatically clipped if its size or <paramref name="targetLocation"/> makes it impossible to completely fit in the <paramref name="target"/>.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods.</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="target"/> can represent,
            then the result will eventually be quantized to <paramref name="target"/>, though the result may have a poorer quality than expected.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <overloads>The overloads of the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto">DrawInto</see> method can be grouped into the following categories:
            <list type="bullet">
            <item>The ones that have a <see cref="T:System.Drawing.Point"/> parameter for target location preserve the original size of the source bitmap.</item>
            <item>The overloads with a <see cref="T:System.Drawing.Rectangle"/> and <see cref="T:System.Drawing.Point"/> parameter allow to draw only a portion of the source bitmap, while they still preserve the original size.</item>
            <item>There are overloads that allow resizing. These either have no <see cref="T:System.Drawing.Point"/> parameter but one <see cref="T:System.Drawing.Rectangle"/> argument to allow drawing the whole source bitmap into the specified target rectangle;
            or, they have two <see cref="T:System.Drawing.Rectangle"/> parameters to allow drawing a portion of the source bitmap into the specified target rectangle. All of these methods have also
            a <see cref="T:KGySoft.Drawing.ScalingMode"/> parameter that specifies the behavior of the potential shrinking or enlarging.</item>
            <item>If an overload has an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> parameter, then it allows limiting the set of colors of the result even if the pixel format of the target would allow more colors.</item>
            <item>If the target pixel format has a low bit-per-pixel value or you use a quantizer and you want to preserve the details as much as possible, then look for the
            overloads that have an <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> parameter.</item>
            <item>To be able to configure the degree of parallelism, cancellation or progress reporting, look for the overloads whose last parameter is
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm">ParallelConfig</a> instance.</item> 
            <item>A couple of overloads have an <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> parameter.
            These methods are special ones and are designed to be used from your custom asynchronous methods where drawing a bitmap into another one is just one step of potentially multiple operations.
            But you can also use these overloads to force synchronous execution on a single thread.
            See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</item>
            <item>All of these methods block the caller on the current thread. For asynchronous call
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync">DrawIntoAsync</see> overloads (on .NET Framework 4.0 and above),
            or the old-fashioned <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto">BeginDrawInto</see> methods that work on every platform target.</item>
            </list>
            <note>Note that these methods always perform an alpha blending (respecting the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> of the target bitmap) if the source contains alpha pixels.
            To copy a bitmap data into another one without blending and resizing, use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.</note>
            </overloads>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Point,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            without scaling, using blending. This method always preserves the source size in pixels, works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            For scaling use the overloads with <c>targetRectangle</c> and <see cref="T:KGySoft.Drawing.ScalingMode"/> parameters.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The image to be drawn is automatically clipped if its size or <paramref name="targetLocation"/> makes it impossible to completely fit in the <paramref name="target"/>.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods.</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>.
            To use dithering a <paramref name="ditherer"/> must be explicitly specified.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            without scaling, using blending. This method always preserves the source size in pixels, works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            For scaling use the overloads with <c>targetRectangle</c> and <see cref="T:KGySoft.Drawing.ScalingMode"/> parameters.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The image to be drawn is automatically clipped if its size or <paramref name="targetLocation"/> makes it impossible to completely fit in the <paramref name="target"/>.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods.</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>.
            To use dithering a <paramref name="ditherer"/> must be explicitly specified.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            without scaling, using blending. This method always preserves the source size in pixels, works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            For scaling use the overloads with <c>targetRectangle</c> and <see cref="T:KGySoft.Drawing.ScalingMode"/> parameters.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The image to be drawn is automatically clipped if its size or <paramref name="targetLocation"/> makes it impossible to completely fit in the <paramref name="target"/>.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods.</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="target"/> can represent,
            then the result will eventually be quantized to <paramref name="target"/>, though the result may have a poorer quality than expected.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            without scaling, using blending. This method always preserves the source size in pixels, works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            For scaling use the overloads with <c>targetRectangle</c> and <see cref="T:KGySoft.Drawing.ScalingMode"/> parameters.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The image to be drawn is automatically clipped if its size or <paramref name="targetLocation"/> makes it impossible to completely fit in the <paramref name="target"/>.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods.</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="target"/> can represent,
            then the result will eventually be quantized to <paramref name="target"/>, though the result may have a poorer quality than expected.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            without scaling, using blending. This method always preserves the source size in pixels, works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            For scaling use the overloads with <c>targetRectangle</c> and <see cref="T:KGySoft.Drawing.ScalingMode"/> parameters.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)"/> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)"/>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The image to be drawn is automatically clipped if its size or <paramref name="targetLocation"/> makes it impossible to completely fit in the <paramref name="target"/>.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods.</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="target"/> can represent,
            then the result will eventually be quantized to <paramref name="target"/>, though the result may have a poorer quality than expected.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            without scaling, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="targetLocation">The target location. Target size will be always the same as the source size.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            <note>See the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/> overload for more details about the other parameters.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> asynchronously,
            without scaling, using blending. This method always preserves the source size in pixels, works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            For scaling use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.AsyncConfig)"/> overload.
            To copy a bitmap data into another one without blending use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginCopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginCopyTo</see> method instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>, or <see langword="null"/> to draw the entire <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="targetLocation">A <see cref="T:System.Drawing.Point"/> that specifies the target location, or <see langword="null"/> top draw the <paramref name="source"/> to the top-left corner of the <paramref name="target"/>. Target size will be always the same as the source size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndDrawInto(System.IAsyncResult)">EndDrawInto</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndDrawInto(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto">BeginDrawInto</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync">DrawIntoAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> asynchronously,
            without scaling, using blending. This method always preserves the source size in pixels, works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            For scaling use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.TaskConfig)"/> overload.
            To copy a bitmap data into another one without blending use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyToAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">CopyToAsync</see> method instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>, or <see langword="null"/> to draw the entire <paramref name="source"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="targetLocation">A <see cref="T:System.Drawing.Point"/> that specifies the target location, or <see langword="null"/> top draw the <paramref name="source"/> to the top-left corner of the <paramref name="target"/>. Target size will be always the same as the source size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Point,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            using scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="targetRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the location and size of the drawn <paramref name="source"/>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="scalingMode">Specifies the scaling mode if the bitmap data to be drawn needs to be resized. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ScalingMode.Auto"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The method has the best performance if <paramref name="source"/> and <paramref name="targetRectangle"/> have the same size, or when <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>.</para>
            <para>The image to be drawn is automatically clipped if <paramref name="targetRectangle"/> exceeds bounds, or <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>
            and <paramref name="source"/> and <paramref name="targetRectangle"/> have different sizes.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods (without scaling).</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="target"/> can represent,
            then the result will eventually be quantized to <paramref name="target"/>, though the result may have a poorer quality than expected.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="scalingMode"/> has an unsupported value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            using scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="targetRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the location and size of the drawn <paramref name="source"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size.</param>
            <param name="scalingMode">Specifies the scaling mode if the bitmap data to be drawn needs to be resized. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ScalingMode.Auto"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The method has the best performance if <paramref name="source"/> and <paramref name="targetRectangle"/> have the same size, or when <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>.</para>
            <para>The image to be drawn is automatically clipped if <paramref name="targetRectangle"/> exceeds bounds, or <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>
            and <paramref name="source"/> and <paramref name="targetRectangle"/> have different sizes.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods (without scaling).</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>.
            To use dithering a <paramref name="ditherer"/> must be explicitly specified.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="scalingMode"/> has an unsupported value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.ScalingMode)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            using scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="targetRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the location and size of the drawn <paramref name="source"/>.</param>
            <param name="scalingMode">Specifies the scaling mode if the bitmap data to be drawn needs to be resized.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The method has the best performance if <paramref name="source"/> and <paramref name="targetRectangle"/> have the same size, or when <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>.</para>
            <para>The image to be drawn is automatically clipped if <paramref name="targetRectangle"/> exceeds bounds, or <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>
            and <paramref name="source"/> and <paramref name="targetRectangle"/> have different sizes.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods (without scaling).</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="scalingMode"/> has an unsupported value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.ScalingMode)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            using scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="targetRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the location and size of the drawn <paramref name="source"/>.</param>
            <param name="scalingMode">Specifies the scaling mode if the bitmap data to be drawn needs to be resized.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The method has the best performance if <paramref name="sourceRectangle"/> and <paramref name="targetRectangle"/> have the same size, or when <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>.</para>
            <para>The image to be drawn is automatically clipped if <paramref name="sourceRectangle"/> or <paramref name="targetRectangle"/> exceed bounds, or <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>
            and <paramref name="sourceRectangle"/> and <paramref name="targetRectangle"/> are different.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods (without scaling).</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="scalingMode"/> has an unsupported value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            using scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="targetRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the location and size of the drawn <paramref name="source"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>
            format has at least 24 bits-per-pixel size.</param>
            <param name="scalingMode">Specifies the scaling mode if the bitmap data to be drawn needs to be resized. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ScalingMode.Auto"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The method has the best performance if <paramref name="sourceRectangle"/> and <paramref name="targetRectangle"/> have the same size, or when <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>.</para>
            <para>The image to be drawn is automatically clipped if <paramref name="sourceRectangle"/> or <paramref name="targetRectangle"/> exceed bounds, or <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>
            and <paramref name="sourceRectangle"/> and <paramref name="targetRectangle"/> are different.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods (without scaling).</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>.
            To use dithering a <paramref name="ditherer"/> must be explicitly specified.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="scalingMode"/> has an unsupported value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            using scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="targetRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the location and size of the drawn <paramref name="source"/>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="scalingMode">Specifies the scaling mode if the bitmap data to be drawn needs to be resized. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ScalingMode.Auto"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The method has the best performance if <paramref name="sourceRectangle"/> and <paramref name="targetRectangle"/> have the same size, or when <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>.</para>
            <para>The image to be drawn is automatically clipped if <paramref name="sourceRectangle"/> or <paramref name="targetRectangle"/> exceed bounds, or <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>
            and <paramref name="sourceRectangle"/> and <paramref name="targetRectangle"/> are different.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods (without scaling).</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="target"/> can represent,
            then the result will eventually be quantized to <paramref name="target"/>, though the result may have a poorer quality than expected.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="scalingMode"/> has an unsupported value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            using scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="targetRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the location and size of the drawn <paramref name="source"/>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="scalingMode">Specifies the scaling mode if the bitmap data to be drawn needs to be resized. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ScalingMode.Auto"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The method has the best performance if <paramref name="source"/> and <paramref name="targetRectangle"/> have the same size, or when <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>.</para>
            <para>The image to be drawn is automatically clipped if <paramref name="targetRectangle"/> exceeds bounds, or <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>
            and <paramref name="source"/> and <paramref name="targetRectangle"/> have different sizes.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods (without scaling).</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="target"/> can represent,
            then the result will eventually be quantized to <paramref name="target"/>, though the result may have a poorer quality than expected.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="scalingMode"/> has an unsupported value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            using scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To copy a bitmap data into another one without blending use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="targetRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the location and size of the drawn <paramref name="source"/>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="scalingMode">Specifies the scaling mode if the bitmap data to be drawn needs to be resized. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ScalingMode.Auto"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>The method has the best performance if <paramref name="source"/> and <paramref name="targetRectangle"/> have the same size, or when <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>.</para>
            <para>The image to be drawn is automatically clipped if <paramref name="targetRectangle"/> exceeds bounds, or <paramref name="scalingMode"/> is <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/>
            and <paramref name="source"/> and <paramref name="targetRectangle"/> have different sizes.</para>
            <para><paramref name="target"/> must be an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> because it must be readable if blending is necessary. For write-only <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instances
            you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyTo">CopyTo</see> methods (without scaling).</para>
            <para>If <paramref name="target"/> can represent a narrower set of colors, then the result will be automatically quantized to the colors of the <paramref name="target"/>,
            even if there is no <paramref name="quantizer"/> specified. To use dithering a <paramref name="ditherer"/> must be explicitly specified though.</para>
            <para>If <paramref name="quantizer"/> is specified but it uses more/different colors than <paramref name="target"/> can represent,
            then the result will eventually be quantized to <paramref name="target"/>, though the result may have a poorer quality than expected.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="scalingMode"/> has an unsupported value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            with scaling and blending, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="targetRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the location and size of the drawn <paramref name="source"/>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="scalingMode">Specifies the scaling mode if the bitmap data to be drawn needs to be resized. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ScalingMode.Auto"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            <note>See the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode)"/> overload for more details about the other parameters.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="scalingMode"/> has an unsupported value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> asynchronously,
            using scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To copy a bitmap data into another one without blending use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginCopyTo(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginCopyTo</see> method instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="targetRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the location and size of the drawn <paramref name="source"/>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="scalingMode">Specifies the scaling mode if the bitmap data to be drawn needs to be resized. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ScalingMode.Auto"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndDrawInto(System.IAsyncResult)">EndDrawInto</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="scalingMode"/> has an unsupported value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawIntoAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws the <paramref name="source"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> into the <paramref name="target"/>&#160;<see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> asynchronously,
            using scaling and blending. This method works between any pair of source and target <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s and supports quantizing and dithering.
            To copy a bitmap data into another one without blending use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.CopyToAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IWritableBitmapData,System.Nullable{System.Drawing.Rectangle},System.Nullable{System.Drawing.Point},KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">CopyToAsync</see> method instead.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="target">The target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> into which <paramref name="source"/> should be drawn.</param>
            <param name="sourceRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the portion of the <paramref name="source"/> to be drawn into the <paramref name="target"/>.</param>
            <param name="targetRectangle">A <see cref="T:System.Drawing.Rectangle"/> that specifies the location and size of the drawn <paramref name="source"/>.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to be used for the drawing. If not specified, then the drawing operation might automatically
            pick a quantizer based on <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="ditherer">The ditherer to be used for the drawing. Might be ignored if <paramref name="quantizer"/> is not specified
            and <paramref name="target"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> format has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="scalingMode">Specifies the scaling mode if the bitmap data to be drawn needs to be resized. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ScalingMode.Auto"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ScalingMode)"/> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> or <paramref name="target"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="scalingMode"/> has an unsupported value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clip(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,System.Boolean)">
            <summary>
            Clips the specified <paramref name="source"/> using the specified <paramref name="clippingRegion"/>.
            Unlike the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> methods, this one returns a wrapper,
            providing access only to the specified region of the original <paramref name="source"/>.
            </summary>
            <param name="source">The source bitmap data to be clipped.</param>
            <param name="clippingRegion">A <see cref="T:System.Drawing.Rectangle"/> that specifies a region within the <paramref name="source"/>.</param>
            <param name="disposeSource"><see langword="true"/> to dispose <paramref name="source"/> when the result is disposed; otherwise, <see langword="false"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> that provides access only to the specified region withing the <paramref name="source"/>.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="clippingRegion"/> has no overlapping region with source bounds.</exception>
            <remarks>
            <para>The <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize"/> property of the returned instance can be 0, indicating that the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see>
            method cannot be used. It can occur if the left edge of the clipping is not zero.</para>
            <para>Even if <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize"/> property of the returned instance is a nonzero value it can happen that it is too low to access all columns
            by the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see> method. It can occur with indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>s if the right edge of the clipping is not on byte boundary.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clip(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle)">
            <summary>
            Clips the specified <paramref name="source"/> using the specified <paramref name="clippingRegion"/>.
            Unlike the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> methods, this one returns a wrapper,
            providing access only to the specified region of the original <paramref name="source"/>.
            This overload does not dispose <paramref name="source"/> when the result is disposed.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clip(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,System.Boolean)"/> overload for details.
            </summary>
            <param name="source">The source bitmap data to be clipped.</param>
            <param name="clippingRegion">A <see cref="T:System.Drawing.Rectangle"/> that specifies a region within the <paramref name="source"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> that provides access only to the specified region withing the <paramref name="source"/>.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="clippingRegion"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColors(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Int32,System.Boolean)">
            <summary>
            Gets the colors used in the specified <paramref name="bitmapData"/>. A limit can be defined in <paramref name="maxColors"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>, whose colors have to be returned. If it is indexed and the <paramref name="forceScanningContent"/> parameter is <see langword="false"/>,
            then its palette entries are returned and <paramref name="maxColors"/> is ignored.</param>
            <param name="maxColors">A limit of the returned colors. If <paramref name="forceScanningContent"/> parameter is <see langword="false"/>, then
            this parameter is ignored for indexed bitmaps. Use 0 for no limit. This parameter is optional.
            <br/>Default value: <c>0</c>.</param>
            <param name="forceScanningContent"><see langword="true"/> to force scanning the actual image content even if the specified <paramref name="bitmapData"/> is
            indexed and has a palette. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <returns>An <see cref="T:System.Collections.Generic.ICollection`1"/> of <see cref="T:KGySoft.Drawing.Imaging.Color32"/> entries.</returns>
            <remarks>
            <note>This method blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginGetColors(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Int32,System.Boolean,KGySoft.Threading.AsyncConfig)">BeginGetColors</see>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorsAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Int32,System.Boolean,KGySoft.Threading.TaskConfig)">GetColorsAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to set up cancellation or for reporting progress.</note>
            <para>Completely transparent pixels are considered the same regardless of their color information.</para>
            <para>Every <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> is supported, though wide color formats (<see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppGrayScale"/>, <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format48bppRgb"/>,
            <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format64bppArgb"/> and <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format64bppPArgb"/>) are quantized to 32 bit during the processing.
            To get the actual <em>number</em> of colors, which can be accurate even for wide color formats, use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorCount(KGySoft.Drawing.Imaging.IReadableBitmapData)">GetColorCount</see> method.
            </para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginGetColors(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Int32,System.Boolean,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to get the colors used in the specified <paramref name="bitmapData"/> asynchronously. A limit can be defined in <paramref name="maxColors"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>, whose colors have to be returned. If it is indexed and the <paramref name="forceScanningContent"/> parameter is <see langword="false"/>,
            then its palette entries are returned and <paramref name="maxColors"/> is ignored.</param>
            <param name="maxColors">A limit of the returned colors. If <paramref name="forceScanningContent"/> parameter is <see langword="false"/>, then
            this parameter is ignored for indexed bitmaps. Use 0 for no limit. This parameter is optional.
            <br/>Default value: <c>0</c>.</param>
            <param name="forceScanningContent"><see langword="true"/> to force scanning the actual image content even if the specified <paramref name="bitmapData"/> is
            indexed and has a palette. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorsAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Int32,System.Boolean,KGySoft.Threading.TaskConfig)">GetColorsAsync</see> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndGetColors(System.IAsyncResult)">EndGetColors</see> method.</para>
            <para>This method is not a blocking call, though the operation is not parallelized and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is ignored.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColors(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Int32,System.Boolean)">GetColors</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndGetColors(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginGetColors(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Int32,System.Boolean,KGySoft.Threading.AsyncConfig)">BeginGetColors</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorsAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Int32,System.Boolean,KGySoft.Threading.TaskConfig)">GetColorsAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns>An <see cref="T:System.Collections.Generic.ICollection`1"/> of <see cref="T:KGySoft.Drawing.Imaging.Color32"/> entries that is the result of the operation.
            If the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <c>asyncConfig</c> parameter was <see langword="false"/>, then an empty collection is returned.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorsAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Int32,System.Boolean,KGySoft.Threading.TaskConfig)">
            <summary>
            Gets the colors used in the specified <paramref name="bitmapData"/> asynchronously. A limit can be defined in <paramref name="maxColors"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>, whose colors have to be returned. If it is indexed and the <paramref name="forceScanningContent"/> parameter is <see langword="false"/>,
            then its palette entries are returned and <paramref name="maxColors"/> is ignored.</param>
            <param name="maxColors">A limit of the returned colors. If <paramref name="forceScanningContent"/> parameter is <see langword="false"/>, then
            this parameter is ignored for indexed bitmaps. Use 0 for no limit. This parameter is optional.
            <br/>Default value: <c>0</c>.</param>
            <param name="forceScanningContent"><see langword="true"/> to force scanning the actual image content even if the specified <paramref name="bitmapData"/> is
            indexed and has a palette. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is an <see cref="T:System.Collections.Generic.ICollection`1"/> of <see cref="T:KGySoft.Drawing.Imaging.Color32"/> entries.
            If the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>, then the result of the task is an empty collection.</returns>
            <remarks>
            <para>This method is not a blocking call, though the operation is not parallelized and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is ignored.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColors(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Int32,System.Boolean)">GetColors</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorCount(KGySoft.Drawing.Imaging.IReadableBitmapData)">
            <summary>
            Gets the actual number of colors of the specified <paramref name="bitmapData"/>. Colors are counted even for indexed bitmaps.
            </summary>
            <param name="bitmapData">The bitmap, whose colors have to be counted to count its colors.</param>
            <returns>The actual number of colors of the specified <paramref name="bitmapData"/>.</returns>
            <remarks>
            <note>This method blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginGetColorCount(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)">BeginGetColorCount</see>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorCountAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)">GetColorCountAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to set up cancellation or for reporting progress.</note>
            <para>Completely transparent pixels are considered the same regardless of their color information.</para>
            <para>Every <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> is supported, and an accurate result can be retrieved even for custom pixel formats with wide color formats
            if color access preference id correctly set in their <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/>.
            Otherwise, colors might be quantized to 32 bits-per-pixel values while counting them.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginGetColorCount(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)">
            <summary>
            Gets the actual number of colors of the specified <paramref name="bitmapData"/> asynchronously. Colors are counted even for indexed bitmaps.
            </summary>
            <param name="bitmapData">The bitmap, whose colors have to be counted to count its colors.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorCountAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)">GetColorCountAsync</see> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndGetColorCount(System.IAsyncResult)">EndGetColorCount</see> method.</para>
            <para>This method is not a blocking call, though the operation is not parallelized and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is ignored.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorCount(KGySoft.Drawing.Imaging.IReadableBitmapData)">GetColorCount</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndGetColorCount(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginGetColorCount(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)">BeginGetColorCount</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorCountAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)">GetColorCountAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns>An <see cref="T:System.Int32">int</see> value that is the result of the operation,
            or <c>0</c>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <c>asyncConfig</c> parameter was <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorCountAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)">
            <summary>
            Gets the actual number of colors of the specified <paramref name="bitmapData"/> asynchronously. Colors are counted even for indexed bitmaps.
            </summary>
            <param name="bitmapData">The bitmap, whose colors have to be counted to count its colors.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is the actual number of colors of the specified <paramref name="bitmapData"/>,
            or <c>0</c>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method is not a blocking call, though the operation is not parallelized and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is ignored.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorCount(KGySoft.Drawing.Imaging.IReadableBitmapData)">GetColorCount</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToGrayscale(KGySoft.Drawing.Imaging.IReadableBitmapData)">
            <summary>
            Returns a new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, which is the grayscale version of the specified <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to convert to grayscale.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> containing the grayscale version of the original <paramref name="bitmapData"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginToGrayscale(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)">BeginToGrayscale</see>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToGrayscaleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.TaskConfig)">ToGrayscaleAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>This method always returns a new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> with <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/> pixel format.</para>
            <para>To return an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> with arbitrary <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> overloads with a grayscale palette,
            quantizer (e.g. <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">PredefinedColorsQuantizer.Grayscale</see>) or pixel format (<see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppGrayScale"/>).</para>
            <para>To make an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> grayscale without creating a new instance use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeGrayscale(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer)">MakeGrayscale</see> method.</para>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeGrayscale(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginToGrayscale(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to convert the specified <paramref name="bitmapData"/> to grayscale asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to convert to grayscale.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> containing the grayscale version of the original <paramref name="bitmapData"/>.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToGrayscaleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.TaskConfig)">ToGrayscaleAsync</see> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndToGrayscale(System.IAsyncResult)">EndToGrayscale</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToGrayscale(KGySoft.Drawing.Imaging.IReadableBitmapData)">ToGrayscale</see> method for more details.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeGrayscale(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndToGrayscale(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginToGrayscale(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)">BeginToGrayscale</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToGrayscaleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.TaskConfig)">ToGrayscaleAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that is the result of the operation,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <c>asyncConfig</c> parameter was <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToGrayscaleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.TaskConfig)">
            <summary>
            Returns a new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> asynchronously, which is the grayscale version of the specified <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to convert to grayscale.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> containing the grayscale version of the original <paramref name="bitmapData"/>,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToGrayscale(KGySoft.Drawing.Imaging.IReadableBitmapData)">ToGrayscale</see> method for more details.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeGrayscaleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData)">
            <summary>
            Returns a new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, which is the clone of the specified <paramref name="bitmapData"/> with transparent background.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to convert to transparent.</param>
            <returns>A new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, which is the clone of the specified <paramref name="bitmapData"/> with transparent background.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparentAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>This method uses the bottom-left pixel to determine the background color, which must be completely opaque; otherwise, just an exact clone of <paramref name="bitmapData"/> will be returned.</para>
            <para>This method always returns a new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> with <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/> pixel format.</para>
            <para>To attempt to make an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> transparent without creating a new instance use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData)">MakeTransparent</see> method.</para>
            <para>To force replacing even non-completely opaque pixels use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32)"/> overload instead.</para>
            <note>Please note that unlike the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">MakeOpaque</see> method, this one changes exactly one color shade without any tolerance.
            For any customization use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">Clone</see> method with a quantizer
            created by the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.KnownPixelFormat)">PredefinedColorsQuantizer.FromCustomFunction</see> method.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Returns a new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, which is the clone of the specified <paramref name="bitmapData"/> with transparent background.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to convert to transparent.</param>
            <param name="transparentColor">Specifies the color to make transparent.</param>
            <returns>A new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, which is the clone of the specified <paramref name="bitmapData"/> with transparent background.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparentAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>This method always returns a new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> with <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/> pixel format.</para>
            <para>To attempt to make an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> transparent without creating a new instance use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32)">MakeTransparent</see> method.</para>
            <para>To auto-detect the background color to be made transparent use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData)"/> overload instead.</para>
            <note>Please note that unlike the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">MakeOpaque</see> method, this one changes exactly one color shade without any tolerance.
            For any customization use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">Clone</see> method with a quantizer
            created by the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.KnownPixelFormat)">PredefinedColorsQuantizer.FromCustomFunction</see> method.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to convert the specified <paramref name="bitmapData"/> to another one with transparent background asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to convert to transparent.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparentAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndToTransparent(System.IAsyncResult)">EndToTransparent</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData)"/> method for more details.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.AsyncConfig)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to convert the specified <paramref name="bitmapData"/> to another one with transparent background asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to convert to transparent.</param>
            <param name="transparentColor">Specifies the color to make transparent.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparentAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndToTransparent(System.IAsyncResult)">EndToTransparent</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32)"/> method for more details.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.AsyncConfig)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndToTransparent(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginToTransparent">BeginToTransparent</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparentAsync">ToTransparentAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that is the result of the operation,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <c>asyncConfig</c> parameter was <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparentAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)">
            <summary>
            Returns a new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> asynchronously, which is the clone of the specified <paramref name="bitmapData"/> with transparent background.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to convert to transparent.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, which is the clone of the specified <paramref name="bitmapData"/> with transparent background,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData)"/> method for more details.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparentAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.TaskConfig)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaqueAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparentAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.TaskConfig)">
            <summary>
            Returns a new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> asynchronously, which is the clone of the specified <paramref name="bitmapData"/> with transparent background.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to convert to transparent.</param>
            <param name="transparentColor">Specifies the color to make transparent.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, which is the clone of the specified <paramref name="bitmapData"/> with transparent background,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32)"/> method for more details.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparentAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.TaskConfig)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaqueAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Resize(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Size,KGySoft.Drawing.ScalingMode,System.Boolean)">
            <summary>
            Resizes the specified <paramref name="source"/>.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to resize.</param>
            <param name="newSize">The requested new size.</param>
            <param name="scalingMode">A <see cref="T:KGySoft.Drawing.ScalingMode"/> value, which determines the quality of the result as well as the processing time. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ScalingMode.Auto"/>.</param>
            <param name="keepAspectRatio"><see langword="true"/> to keep aspect ratio of the specified <paramref name="source"/>; otherwise, <see langword="false"/>. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <returns>A new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, which is the resized version of the specified <paramref name="source"/>.</returns>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress.
            Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginResize(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Size,KGySoft.Drawing.ScalingMode,System.Boolean,KGySoft.Threading.AsyncConfig)">BeginResize</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ResizeAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Size,KGySoft.Drawing.ScalingMode,System.Boolean,KGySoft.Threading.TaskConfig)">ResizeAsync</see>
            (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>The result <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> depends on the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> of the <paramref name="source"/>
            bitmap data but is always at least a 32 BPP format. To resize a bitmap data with a custom pixel format you can create a
            new <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData(System.Drawing.Size,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)"/> method
            and use the <see cref="O:KGySoft.Drawing.ImageExtensions.DrawInto">DrawInto</see> extension methods, which has several overloads that also allow quantizing and dithering.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="scalingMode"/> has an unsupported value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginResize(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Size,KGySoft.Drawing.ScalingMode,System.Boolean,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to resize the specified <paramref name="source"/> asynchronously.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to resize.</param>
            <param name="newSize">The requested new size.</param>
            <param name="scalingMode">A <see cref="T:KGySoft.Drawing.ScalingMode"/> value, which determines the quality of the result as well as the processing time. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ScalingMode.Auto"/>.</param>
            <param name="keepAspectRatio"><see langword="true"/> to keep aspect ratio of the specified <paramref name="source"/>; otherwise, <see langword="false"/>. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ResizeAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Size,KGySoft.Drawing.ScalingMode,System.Boolean,KGySoft.Threading.TaskConfig)">ResizeAsync</see> method.</para>
            <para>To get the result or the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndResize(System.IAsyncResult)">EndResize</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Resize(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Size,KGySoft.Drawing.ScalingMode,System.Boolean)">Resize</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndResize(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginResize(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Size,KGySoft.Drawing.ScalingMode,System.Boolean,KGySoft.Threading.AsyncConfig)">BeginResize</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ResizeAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Size,KGySoft.Drawing.ScalingMode,System.Boolean,KGySoft.Threading.TaskConfig)">ResizeAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that is the result of the operation,
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <c>asyncConfig</c> parameter was <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ResizeAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Size,KGySoft.Drawing.ScalingMode,System.Boolean,KGySoft.Threading.TaskConfig)">
            <summary>
            Resizes the specified <paramref name="source"/> asynchronously.
            </summary>
            <param name="source">The source <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to resize.</param>
            <param name="newSize">The requested new size.</param>
            <param name="scalingMode">A <see cref="T:KGySoft.Drawing.ScalingMode"/> value, which determines the quality of the result as well as the processing time. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ScalingMode.Auto"/>.</param>
            <param name="keepAspectRatio"><see langword="true"/> to keep aspect ratio of the specified <paramref name="source"/>; otherwise, <see langword="false"/>. This parameter is optional.
            <br/>Default value: <see langword="false"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Resize(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Size,KGySoft.Drawing.ScalingMode,System.Boolean)">Resize</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Save(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream)">
            <summary>
            Saves the content of this <paramref name="bitmapData"/> into the specified <paramref name="stream"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to save.</param>
            <param name="stream">The stream to save the bitmap data into.</param>
            <remarks>
            <note>This method blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginSave(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Threading.AsyncConfig)">BeginSave</see>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.SaveAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Threading.TaskConfig)">SaveAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to set up cancellation or for reporting progress.</note>
            <para>To reload the content use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.Load(System.IO.Stream)">BitmapDataFactory.Load</see> method.</para>
            <para>The saved content always preserves known <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s so the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataFactory.Load(System.IO.Stream)">BitmapDataFactory.Load</see>
            method can restore it the same way on any platform. Custom pixel formats are saved by a compatible known pixel format.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginSave(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to save the content of this <paramref name="bitmapData"/> into the specified <paramref name="stream"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to save.</param>
            <param name="stream">The stream to save the bitmap data into.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.SaveAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Threading.TaskConfig)">SaveAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndSave(System.IAsyncResult)">EndSave</see> method.</para>
            <para>This method is not a blocking call, though the operation is not parallelized and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is ignored.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Save(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream)">Save</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndSave(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginSave(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Threading.AsyncConfig)">BeginSave</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.SaveAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Threading.TaskConfig)">SaveAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.SaveAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream,KGySoft.Threading.TaskConfig)">
            <summary>
            Saves the content of this <paramref name="bitmapData"/> into the specified <paramref name="stream"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> to save.</param>
            <param name="stream">The stream to save the bitmap data into.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call, though the operation is not parallelized and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is ignored.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Save(KGySoft.Drawing.Imaging.IReadableBitmapData,System.IO.Stream)">Save</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DoCloneExact(KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Cloning without changing pixel format if possible. Pixel format is changed only for indexed custom formats.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DoCloneDirect(KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte,KGySoft.Drawing.Imaging.WorkingColorSpace,KGySoft.Drawing.Imaging.Palette)">
            <summary>
            Cloning with arbitrary pixel format and core settings using direct get/set pixels.
            NOTE: pixelFormat actually can be invalid here for custom pixel formats, in which case CreateCompatibleBitmapDataFactory must create the clone.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clip(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Boolean)">
            <summary>
            Clips the specified <paramref name="source"/> using the specified <paramref name="clippingRegion"/>.
            Unlike the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> methods, this one returns a wrapper,
            providing access only to the specified region of the original <paramref name="source"/>.
            </summary>
            <param name="source">The source bitmap data to be clipped.</param>
            <param name="clippingRegion">A <see cref="T:System.Drawing.Rectangle"/> that specifies a region within the <paramref name="source"/>.</param>
            <param name="disposeSource"><see langword="true"/> to dispose <paramref name="source"/> when the result is disposed; otherwise, <see langword="false"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> that provides access only to the specified region withing the <paramref name="source"/>.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="clippingRegion"/> has no overlapping region with source bounds.</exception>
            <remarks>
            <para>The <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize"/> property of the returned instance can be 0, indicating that the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see>/<see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see>
            method cannot be used. It can occur if the left edge of the clipping is not zero.</para>
            <para>Even if <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize"/> property of the returned instance is a nonzero value it can happen that it is too low to access all columns
            by the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see>/<see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> methods. It can occur with indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>s if the right edge of the clipping is not on byte boundary.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clip(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle)">
            <summary>
            Clips the specified <paramref name="source"/> using the specified <paramref name="clippingRegion"/>.
            Unlike the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> methods, this one returns a wrapper,
            providing access only to the specified region of the original <paramref name="source"/>.
            This overload does not dispose <paramref name="source"/> when the result is disposed.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clip(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Drawing.Rectangle,System.Boolean)"/> overload for details.
            </summary>
            <param name="source">The source bitmap data to be clipped.</param>
            <param name="clippingRegion">A <see cref="T:System.Drawing.Rectangle"/> that specifies a region within the <paramref name="source"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> that provides access only to the specified region withing the <paramref name="source"/>.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="clippingRegion"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Quantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer)">
            <summary>
            Quantizes an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> using the specified <paramref name="quantizer"/> (reduces the number of colors).
            </summary>
            <param name="bitmapData">An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to be quantized.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> implementation to be used for quantizing the specified <paramref name="bitmapData"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Quantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginQuantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Threading.AsyncConfig)">BeginQuantize</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.QuantizeAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Threading.TaskConfig)">QuantizeAsync</see> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This method quantizes the specified <paramref name="bitmapData"/> in place (its original content will be overwritten). To return a new instance
            use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">Clone</see> extension method instead.</para>
            <para>If the <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> or the palette of <paramref name="bitmapData"/> is not compatible with the colors of the specified <paramref name="quantizer"/>, then
            the result may not be correct.</para>
            <para>If <paramref name="bitmapData"/> has already the same set of colors that the specified <paramref name="quantizer"/>, then it can happen
            that calling this method does not change the <paramref name="bitmapData"/> at all.</para>
            <note type="tip"><list type="bullet">
            <item>To use predefined colors or custom quantization functions use the static methods of the <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> class.
            <br/>See the <strong>Remarks</strong> section of its members for details and examples.</item>
            <item>To use an optimized palette of a specified number of colors adjusted for <paramref name="bitmapData"/> see the <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> class.</item>
            </list></note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="quantizer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.InvalidOperationException">The <paramref name="quantizer"/>'s <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">Initialize</see> method returned <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Quantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Threading.ParallelConfig)">
            <summary>
            Quantizes an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> using the specified <paramref name="quantizer"/> (reduces the number of colors).
            </summary>
            <param name="bitmapData">An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to be quantized.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> implementation to be used for quantizing the specified <paramref name="bitmapData"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism,
            cancellation and progress reporting. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginQuantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Threading.AsyncConfig)">BeginQuantize</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.QuantizeAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Threading.TaskConfig)">QuantizeAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This method quantizes the specified <paramref name="bitmapData"/> in place (its original content will be overwritten). To return a new instance
            use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)">Clone</see> extension method instead.</para>
            <para>If the <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> or the palette of <paramref name="bitmapData"/> is not compatible with the colors of the specified <paramref name="quantizer"/>, then
            the result may not be correct.</para>
            <para>If <paramref name="bitmapData"/> has already the same set of colors that the specified <paramref name="quantizer"/>, then it can happen
            that calling this method does not change the <paramref name="bitmapData"/> at all.</para>
            <note type="tip"><list type="bullet">
            <item>To use predefined colors or custom quantization functions use the static methods of the <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> class.
            <br/>See the <strong>Remarks</strong> section of its members for details and examples.</item>
            <item>To use an optimized palette of a specified number of colors adjusted for <paramref name="bitmapData"/> see the <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> class.</item>
            </list></note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="quantizer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.InvalidOperationException">The <paramref name="quantizer"/>'s <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">Initialize</see> method returned <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Quantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.IQuantizer)">
            <summary>
            Quantizes an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> with the specified <paramref name="quantizer"/> (reduces the number of colors),
            using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to be quantized.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> implementation to be used for quantizing the specified <paramref name="bitmapData"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            <note>See the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Quantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer)"/> overload for more details about the other parameters.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="quantizer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.InvalidOperationException">The <paramref name="quantizer"/>'s <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">Initialize</see> method returned <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginQuantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to quantize an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> asynchronously, using the specified <paramref name="quantizer"/> (reduces the number of colors).
            </summary>
            <param name="bitmapData">An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to be quantized.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> implementation to be used for quantizing the specified <paramref name="bitmapData"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="quantizer"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.QuantizeAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Threading.TaskConfig)">QuantizeAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndQuantize(System.IAsyncResult)">EndQuantize</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Quantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer)">Quantize</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndQuantize(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginQuantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Threading.AsyncConfig)">BeginQuantize</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.QuantizeAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Threading.TaskConfig)">QuantizeAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <exception cref="T:System.InvalidOperationException">The quantizer's <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">Initialize</see> method returned <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.QuantizeAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Threading.TaskConfig)">
            <summary>
            Quantizes an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> asynchronously, using the specified <paramref name="quantizer"/> (reduces the number of colors).
            </summary>
            <param name="bitmapData">An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to be quantized.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> implementation to be used for quantizing the specified <paramref name="bitmapData"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="quantizer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.InvalidOperationException">The <paramref name="quantizer"/>'s <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">Initialize</see> method returned <see langword="null"/>.</exception>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Quantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer)">Quantize</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Dither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Quantizes an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> with dithering (reduces the number of colors while trying to preserve details)
            using the specified <paramref name="quantizer"/> and <paramref name="ditherer"/>.
            </summary>
            <param name="bitmapData">An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to be quantized.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> implementation to be used for quantizing the specified <paramref name="bitmapData"/>.</param>
            <param name="ditherer">An <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> implementation to be used for dithering during the quantization of the specified <paramref name="bitmapData"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Dither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginDither</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DitherAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">DitherAsync</see> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This method quantizes <paramref name="bitmapData"/> with dithering in place (its original content will be overwritten). To return a new instance
            use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">Clone</see> extension method instead.</para>
            <para>If the <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> or the palette of <paramref name="bitmapData"/> is not compatible with the colors of the specified <paramref name="quantizer"/>, then
            the result may not be correct.</para>
            <para>If <paramref name="bitmapData"/> has already the same set of colors that the specified <paramref name="quantizer"/>, then it can happen
            that calling this method does not change <paramref name="bitmapData"/> at all.</para>
            <note type="tip"><list type="bullet">
            <item>To use predefined colors or custom quantization functions use the static methods of the <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> class.
            <br/>See the <strong>Remarks</strong> section of its members for details and examples.</item>
            <item>To use an optimized palette of a specified number of colors adjusted for <paramref name="bitmapData"/> see the <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> class.</item>
            <item>For some built-in dithering solutions see the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/>, <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/>, <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/>
            and <see cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/> classes. All of them have several examples in their <strong>Remarks</strong> section.</item>
            </list></note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="quantizer"/> or <paramref name="ditherer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.InvalidOperationException">The <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">IQuantizer.Initialize</see> method
            or the <see cref="M:KGySoft.Drawing.Imaging.IDitherer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.IAsyncContext)">IDitherer.Initialize</see> method returned <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Dither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)">
            <summary>
            Quantizes an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> with dithering (reduces the number of colors while trying to preserve details)
            using the specified <paramref name="quantizer"/> and <paramref name="ditherer"/>.
            </summary>
            <param name="bitmapData">An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to be quantized.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> implementation to be used for quantizing the specified <paramref name="bitmapData"/>.</param>
            <param name="ditherer">An <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> implementation to be used for dithering during the quantization of the specified <paramref name="bitmapData"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism,
            cancellation and progress reporting. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginDither</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DitherAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">DitherAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This method quantizes <paramref name="bitmapData"/> with dithering in place (its original content will be overwritten). To return a new instance
            use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)">Clone</see> extension method instead.</para>
            <para>If the <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> or the palette of <paramref name="bitmapData"/> is not compatible with the colors of the specified <paramref name="quantizer"/>, then
            the result may not be correct.</para>
            <para>If <paramref name="bitmapData"/> has already the same set of colors that the specified <paramref name="quantizer"/>, then it can happen
            that calling this method does not change <paramref name="bitmapData"/> at all.</para>
            <note type="tip"><list type="bullet">
            <item>To use predefined colors or custom quantization functions use the static methods of the <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> class.
            <br/>See the <strong>Remarks</strong> section of its members for details and examples.</item>
            <item>To use an optimized palette of a specified number of colors adjusted for <paramref name="bitmapData"/> see the <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> class.</item>
            <item>For some built-in dithering solutions see the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/>, <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/>, <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/>
            and <see cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/> classes. All of them have several examples in their <strong>Remarks</strong> section.</item>
            </list></note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="quantizer"/> or <paramref name="ditherer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.InvalidOperationException">The <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">IQuantizer.Initialize</see> method
            or the <see cref="M:KGySoft.Drawing.Imaging.IDitherer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.IAsyncContext)">IDitherer.Initialize</see> method returned <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Dither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Quantizes an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> with the specified <paramref name="quantizer"/> and <paramref name="ditherer"/>,
            using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to be quantized.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> implementation to be used for quantizing the specified <paramref name="bitmapData"/>.</param>
            <param name="ditherer">An <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> implementation to be used for dithering during the quantization of the specified <paramref name="bitmapData"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="quantizer"/> or <paramref name="ditherer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.InvalidOperationException">The <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">IQuantizer.Initialize</see> method
            or the <see cref="M:KGySoft.Drawing.Imaging.IDitherer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.IAsyncContext)">IDitherer.Initialize</see> method returned <see langword="null"/>.</exception>
            <remarks>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            <note>See the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Dither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/> overload for more details about the other parameters.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to quantize an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> with dithering asynchronously (reduces the number of colors while trying to preserve details)
            using the specified <paramref name="quantizer"/> and <paramref name="ditherer"/>.
            </summary>
            <param name="bitmapData">An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to be quantized.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> implementation to be used for quantizing the specified <paramref name="bitmapData"/>.</param>
            <param name="ditherer">An <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> implementation to be used for dithering during the quantization of the specified <paramref name="bitmapData"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="quantizer"/> or <paramref name="ditherer"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DitherAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">DitherAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndQuantize(System.IAsyncResult)">EndQuantize</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Dither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">Dither</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndDither(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginDither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginDither</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DitherAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">QuantizeAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <exception cref="T:System.InvalidOperationException">The <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">IQuantizer.Initialize</see> method
            or the <see cref="M:KGySoft.Drawing.Imaging.IDitherer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.IAsyncContext)">IDitherer.Initialize</see> method returned <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.DitherAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">
            <summary>
            Quantizes an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> with dithering asynchronously (reduces the number of colors while trying to preserve details)
            using the specified <paramref name="quantizer"/> and <paramref name="ditherer"/>.
            </summary>
            <param name="bitmapData">An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to be quantized.</param>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> implementation to be used for quantizing the specified <paramref name="bitmapData"/>.</param>
            <param name="ditherer">An <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> implementation to be used for dithering during the quantization of the specified <paramref name="bitmapData"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="quantizer"/> or <paramref name="ditherer"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.InvalidOperationException">The <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">IQuantizer.Initialize</see> method
            or the <see cref="M:KGySoft.Drawing.Imaging.IDitherer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.IAsyncContext)">IDitherer.Initialize</see> method returned <see langword="null"/>.</exception>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Dither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">Dither</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32})">
            <summary>
            Transforms the colors of this <paramref name="bitmapData"/> using the specified <paramref name="transformFunction"/> delegate.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="transformFunction">The transform function to be used on the colors of the specified <paramref name="bitmapData"/>. It must be thread-safe.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously.
            Alternatively, use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginTransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginTransformColors</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColorsAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">TransformColorsAsync</see> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This method transforms the <paramref name="bitmapData"/> in place (its original content will be overwritten). To return a new instance
            use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">Clone</see> extension method
            with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance created by the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.KnownPixelFormat)">PredefinedColorsQuantizer.FromCustomFunction</see> method.</para>
            <para>If <paramref name="bitmapData"/> has an indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> and it supports setting the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/>, then its palette entries will be transformed instead of the actual pixels.</para>
            <para>On multi-core systems <paramref name="transformFunction"/> might be called concurrently so it must be thread-safe.</para>
            <note type="tip">If <paramref name="transformFunction"/> can return colors incompatible with the pixel format of the specified <paramref name="bitmapData"/>, or you want to transform the actual
            pixels of an indexed <paramref name="bitmapData"/> instead of modifying the palette, then use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)"/> overload and specify an <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="transformFunction"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Transforms the colors of this <paramref name="bitmapData"/> using the specified <paramref name="transformFunction"/> delegate.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="transformFunction">The transform function to be used on the colors of the specified <paramref name="bitmapData"/>. It must be thread-safe.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if <paramref name="transformFunction"/> returns colors
            that is not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously.
            Alternatively, use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginTransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginTransformColors</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColorsAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">TransformColorsAsync</see> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This method transforms the <paramref name="bitmapData"/> in place (its original content will be overwritten). To return a new instance
            use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">Clone</see> extension method
            with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance created by the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.KnownPixelFormat)">PredefinedColorsQuantizer.FromCustomFunction</see> method.</para>
            <para>If <paramref name="bitmapData"/> has an indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> and <paramref name="ditherer"/> is <see langword="null"/>,
            then its palette entries are tried to be transformed instead of the actual pixels in the first place (if it is supported by <paramref name="bitmapData"/>).
            To transform the colors of an indexed <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> without changing the palette specify a non-<see langword="null"/>&#160;<paramref name="ditherer"/>.
            Transforming the palette is both faster and provides a better result.</para>
            <para>On multi-core systems <paramref name="transformFunction"/> might be called concurrently so it must be thread-safe.</para>
            <para>The <paramref name="ditherer"/> is ignored for <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s with more than 16 bits-per-pixel and for grayscale formats.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_TransformColors.htm">BitmapExtensions.TransformColors</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="transformFunction"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)">
            <summary>
            Transforms the colors of this <paramref name="bitmapData"/> using the specified <paramref name="transformFunction"/> delegate.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="transformFunction">The transform function to be used on the colors of the specified <paramref name="bitmapData"/>. It must be thread-safe.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if <paramref name="transformFunction"/> returns colors
            that is not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism,
            cancellation and progress reporting. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginTransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginTransformColors</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColorsAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">TransformColorsAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>This method transforms the <paramref name="bitmapData"/> in place (its original content will be overwritten). To return a new instance
            use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">Clone</see> extension method
            with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance created by the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.KnownPixelFormat)">PredefinedColorsQuantizer.FromCustomFunction</see> method.</para>
            <para>If <paramref name="bitmapData"/> has an indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> and <paramref name="ditherer"/> is <see langword="null"/>,
            then its palette entries are tried to be transformed instead of the actual pixels in the first place (if it is supported by <paramref name="bitmapData"/>).
            To transform the colors of an indexed <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> without changing the palette specify a non-<see langword="null"/>&#160;<paramref name="ditherer"/>.
            Transforming the palette is both faster and provides a better result.</para>
            <para>On multi-core systems <paramref name="transformFunction"/> might be called concurrently so it must be thread-safe.</para>
            <para>The <paramref name="ditherer"/> is ignored for <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s with more than 16 bits-per-pixel and for grayscale formats.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_TransformColors.htm">BitmapExtensions.TransformColors</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="transformFunction"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Transforms the colors of this <paramref name="bitmapData"/> using the specified <paramref name="transformFunction"/> delegate
            and a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="transformFunction">The transform function to be used on the colors of the specified <paramref name="bitmapData"/>. It must be thread-safe.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if <paramref name="transformFunction"/> returns colors
            that is not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="transformFunction"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            <note>See the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)"/> overload for more details about the other parameters.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginTransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to transform the colors of this <paramref name="bitmapData"/> asynchronously, using the specified <paramref name="transformFunction"/> delegate.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="transformFunction">The transform function to be used on the colors of the specified <paramref name="bitmapData"/>. It must be thread-safe.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if <paramref name="transformFunction"/> returns colors
            that is not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="transformFunction"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColorsAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">TransformColorsAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndTransformColors(System.IAsyncResult)">EndTransformColors</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)"/> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndTransformColors(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginTransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginTransformColors</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColorsAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">TransformColorsAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColorsAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">
            <summary>
            Transforms the colors of this <paramref name="bitmapData"/> asynchronously, using the specified <paramref name="transformFunction"/> delegate.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="transformFunction">The transform function to be used on the colors of the specified <paramref name="bitmapData"/>. It must be thread-safe.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if <paramref name="transformFunction"/> returns colors
            that is not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="transformFunction"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)"/> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ReplaceColor(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Replaces every <paramref name="oldColor"/> occurrences to <paramref name="newColor"/> in the specified <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="oldColor">The original color to be replaced.</param>
            <param name="newColor">The new color to replace <paramref name="oldColor"/> with.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result if <paramref name="newColor"/>
            is not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginReplaceColor(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginReplaceColor</see>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ReplaceColorAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">ReplaceColorAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>If <paramref name="newColor"/> has alpha, which cannot be represented by <paramref name="bitmapData"/>, then it will be blended with <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/>.</para>
            <para>This method calls the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method internally. See
            the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method for more details.</para>
            <para>If <paramref name="bitmapData"/> has an indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> and <paramref name="ditherer"/> is <see langword="null"/>,
            then its palette entries are tried to be transformed instead of the actual pixels in the first place (if it is supported by <paramref name="bitmapData"/>).
            To transform the colors of an indexed <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> without changing the palette specify a non-<see langword="null"/>&#160;<paramref name="ditherer"/>.
            Transforming the palette is both faster and provides a better result.</para>
            <para>The <paramref name="ditherer"/> is ignored for <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s with more than 16 bits-per-pixel and for grayscale formats.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginReplaceColor(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to replace every <paramref name="oldColor"/> occurrences to <paramref name="newColor"/> in the specified <paramref name="bitmapData"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="oldColor">The original color to be replaced.</param>
            <param name="newColor">The new color to replace <paramref name="oldColor"/> with.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result if <paramref name="newColor"/>
            is not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ReplaceColorAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">ReplaceColorAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndReplaceColor(System.IAsyncResult)">EndReplaceColor</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ReplaceColor(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">ReplaceColor</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndReplaceColor(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginReplaceColor(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginReplaceColor</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ReplaceColorAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">ReplaceColorAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ReplaceColorAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">
            <summary>
            Replaces every <paramref name="oldColor"/> occurrences to <paramref name="newColor"/> in the specified <paramref name="bitmapData"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="oldColor">The original color to be replaced.</param>
            <param name="newColor">The new color to replace <paramref name="oldColor"/> with.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result if <paramref name="newColor"/>
            is not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ReplaceColor(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">ReplaceColor</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Invert(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Inverts the colors of the specified <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be inverted.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the inverse of the <paramref name="bitmapData"/>
            has no exact representation with its <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginInvert(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginInvert</see>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.InvertAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">InvertAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>This method calls the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method internally. See
            the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method for more details.</para>
            <para>If <paramref name="bitmapData"/> has an indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> and <paramref name="ditherer"/> is <see langword="null"/>,
            then its palette entries are tried to be transformed instead of the actual pixels in the first place (if it is supported by <paramref name="bitmapData"/>).
            To transform the colors of an indexed <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> without changing the palette specify a non-<see langword="null"/>&#160;<paramref name="ditherer"/>.
            Transforming the palette is both faster and provides a better result.</para>
            <para>The <paramref name="ditherer"/> is ignored for <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s with more than 16 bits-per-pixel and for grayscale formats.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginInvert(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to Invert the colors of the specified <paramref name="bitmapData"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be inverted.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the inverse of the <paramref name="bitmapData"/>
            has no exact representation with its <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.InvertAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">InvertAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndInvert(System.IAsyncResult)">EndInvert</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Invert(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer)">Invert</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndInvert(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginInvert(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginInvert</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.InvertAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">InvertAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.InvertAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">
            <summary>
            Inverts the colors of the specified <paramref name="bitmapData"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be inverted.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the inverse of the <paramref name="bitmapData"/>
            has no exact representation with its <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Invert(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer)">Invert</see> method for more details.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData)">
            <summary>
            If possible, makes the background of this <paramref name="bitmapData"/> transparent, taking the bottom-left pixel as the background color.
            If the <paramref name="bitmapData"/> does not support transparency, then the pixels that have the same color as the bottom-left pixel will be set
            to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> of <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to make transparent.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparentAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>This method calls the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ReplaceColor(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">ReplaceColor</see> method internally.</para>
            <para>Similarly to the <a href="https://docs.microsoft.com/en-us/dotnet/api/system.drawing.bitmap.maketransparent" target="_blank">Bitmap.MakeTransparent</a> method,
            this one uses the bottom-left pixel to determine the background color, which must be completely opaque; otherwise, <paramref name="bitmapData"/> will not be changed.</para>
            <para>Unlike the <a href="https://docs.microsoft.com/en-us/dotnet/api/system.drawing.bitmap.maketransparent" target="_blank">Bitmap.MakeTransparent</a> method,
            this one preserves the original <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. If <paramref name="bitmapData"/> does not support transparency and cannot set <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/>
            either, then every occurrence of the color of the bottom-left pixel will be changed to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> of <paramref name="bitmapData"/>.
            To make such bitmaps transparent use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData)">ToTransparent</see> method instead,
            which returns a new instance with <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>To force replacing even non-completely opaque pixels use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32)"/> overload instead.</para>
            <note>Please note that unlike the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">MakeOpaque</see> method, this one changes exactly one color shade without any tolerance.
            For any customization use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32})">TransformColors</see> method instead.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32)">
            <summary>
            If possible, makes the background of this <paramref name="bitmapData"/> transparent, using <paramref name="transparentColor"/> as the background color.
            If the <paramref name="bitmapData"/> does not support transparency, then the pixels that have the same color as <paramref name="transparentColor"/> will be set
            to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> of <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to make transparent.</param>
            <param name="transparentColor">Specifies the color to make transparent.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.AsyncConfig)"/>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparentAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.TaskConfig)"/> (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>This method calls the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ReplaceColor(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">ReplaceColor</see> method internally.</para>
            <para>Unlike the <a href="https://docs.microsoft.com/en-us/dotnet/api/system.drawing.bitmap.maketransparent" target="_blank">Bitmap.MakeTransparent(Color)</a> method,
            this one preserves the original <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. If <paramref name="bitmapData"/> does not support transparency and cannot set <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> either,
            then every occurrence of the <paramref name="transparentColor"/> will be changed to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> of <paramref name="bitmapData"/>.
            To make such bitmaps transparent use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32)">ToTransparent</see> method instead,
            which returns a new instance with <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>To auto-detect the background color to be made transparent use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData)"/> overload instead.</para>
            <note>Please note that unlike the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">MakeOpaque</see> method, this one changes exactly one color shade without any tolerance.
            For any customization use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32})">TransformColors</see> method instead.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.AsyncConfig)">
            <summary>
            If possible, begins to make the background of this <paramref name="bitmapData"/> transparent asynchronously, taking the bottom-left pixel as the background color.
            If the <paramref name="bitmapData"/> does not support transparency, then the pixels that have the same color as the bottom-left pixel will be set
            to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> of <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to make transparent.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparentAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndMakeTransparent(System.IAsyncResult)">EndMakeTransparent</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData)"/> method for more details.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.AsyncConfig)">
            <summary>
            If possible, begins to make the background of this <paramref name="bitmapData"/> transparent asynchronously, using <paramref name="transparentColor"/> as the background color.
            If the <paramref name="bitmapData"/> does not support transparency, then the pixels that have the same color as <paramref name="transparentColor"/> will be set
            to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> of <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to make transparent.</param>
            <param name="transparentColor">Specifies the color to make transparent.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparentAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.TaskConfig)"/> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndMakeTransparent(System.IAsyncResult)">EndMakeTransparent</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32)"/> method for more details.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginToTransparent(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.AsyncConfig)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndMakeTransparent(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeTransparent">BeginMakeTransparent</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparentAsync">MakeTransparentAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparentAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.TaskConfig)">
            <summary>
            If possible, makes the background of this <paramref name="bitmapData"/> transparent asynchronously, taking the bottom-left pixel as the background color.
            If the <paramref name="bitmapData"/> does not support transparency, then the pixels that have the same color as the bottom-left pixel will be set
            to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> of <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to make transparent.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData)"/> method for more details.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparentAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaqueAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparentAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.TaskConfig)">
            <summary>
            If possible, makes the background of this <paramref name="bitmapData"/> transparent asynchronously, using <paramref name="transparentColor"/> as the background color.
            If the <paramref name="bitmapData"/> does not support transparency, then the pixels that have the same color as <paramref name="transparentColor"/> will be set
            to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> of <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to make transparent.</param>
            <param name="transparentColor">Specifies the color to make transparent.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeTransparent(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32)"/> method for more details.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToTransparentAsync(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Threading.TaskConfig)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaqueAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Makes this <paramref name="bitmapData"/> opaque using the specified <paramref name="backColor"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to make opaque.</param>
            <param name="backColor">Pixels with alpha in <paramref name="bitmapData"/> will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the specified color is ignored.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the inverse of the <paramref name="bitmapData"/>
            has no exact representation with its <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginMakeOpaque</see>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaqueAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">MakeOpaqueAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>This method calls the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method internally. See
            the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method for more details.</para>
            <para>If <paramref name="bitmapData"/> has an indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> and <paramref name="ditherer"/> is <see langword="null"/>,
            then its palette entries are tried to be transformed instead of the actual pixels in the first place (if it is supported by <paramref name="bitmapData"/>).
            To transform the colors of an indexed <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> without changing the palette specify a non-<see langword="null"/>&#160;<paramref name="ditherer"/>.
            Transforming the palette is both faster and provides a better result.</para>
            <para>The <paramref name="ditherer"/> is ignored for <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s with more than 16 bits-per-pixel and for grayscale formats.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to make this <paramref name="bitmapData"/> opaque asynchronously using the specified <paramref name="backColor"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to make opaque.</param>
            <param name="backColor">Pixels with alpha in <paramref name="bitmapData"/> will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the specified color is ignored.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the inverse of the <paramref name="bitmapData"/>
            has no exact representation with its <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaqueAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">MakeOpaqueAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndMakeOpaque(System.IAsyncResult)">EndMakeOpaque</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">MakeOpaque</see> method for more details.</note>
            <remarks>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndMakeOpaque(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginMakeOpaque</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaqueAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">MakeOpaqueAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaqueAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">
            <summary>
            Makes this <paramref name="bitmapData"/> opaque asynchronously using the specified <paramref name="backColor"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to make opaque.</param>
            <param name="backColor">Pixels with alpha in <paramref name="bitmapData"/> will be blended with this color.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> property of the specified color is ignored.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the inverse of the <paramref name="bitmapData"/>
            has no exact representation with its <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeOpaque(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">MakeOpaque</see> method for more details.</note>
            <remarks>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeGrayscale(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Makes this <paramref name="bitmapData"/> grayscale.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to make grayscale.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result if grayscale colors
            cannot be represented by the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> or the current palette of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeGrayscale(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginMakeGrayscale</see>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeGrayscaleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">MakeGrayscaleAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>This method transforms the <paramref name="bitmapData"/> in place (its original content will be overwritten). To return a new instance
            use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToGrayscale(KGySoft.Drawing.Imaging.IReadableBitmapData)">ToGrayscale</see> extension method, which always returns a bitmap data with <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/> format,
            or the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">Clone</see> method with a grayscale
            quantizer (<see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">PredefinedColorsQuantizer.Grayscale</see>, for example).</para>
            <para>This method calls the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method internally. See
            the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method for more details.</para>
            <para>If <paramref name="bitmapData"/> has an indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> and <paramref name="ditherer"/> is <see langword="null"/>,
            then its palette entries are tried to be transformed instead of the actual pixels in the first place (if it is supported by <paramref name="bitmapData"/>).
            To transform the colors of an indexed <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> without changing the palette specify a non-<see langword="null"/>&#160;<paramref name="ditherer"/>.
            Transforming the palette is both faster and provides a better result.</para>
            <para>The <paramref name="ditherer"/> is ignored for <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s with more than 16 bits-per-pixel and for grayscale formats.</para>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToGrayscale(KGySoft.Drawing.Imaging.IReadableBitmapData)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeGrayscale(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to make this <paramref name="bitmapData"/> grayscale asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to make grayscale.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result if grayscale colors
            cannot be represented by the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> or the current palette of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeGrayscaleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">MakeGrayscaleAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndMakeGrayscale(System.IAsyncResult)">EndMakeGrayscale</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeGrayscale(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer)">MakeGrayscale</see> method for more details.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginToGrayscale(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.AsyncConfig)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndMakeGrayscale(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginMakeGrayscale(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginMakeGrayscale</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeGrayscaleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">MakeGrayscaleAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeGrayscaleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">
            <summary>
            Makes this <paramref name="bitmapData"/> grayscale asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to make grayscale.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result if grayscale colors
            cannot be represented by the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> or the current palette of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeGrayscale(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer)">MakeGrayscale</see> method for more details.</note>
            </remarks>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToGrayscaleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.TaskConfig)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustBrightness(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels)">
            <summary>
            Adjusts the brightness of the specified <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="brightness">A float value between -1 and 1, inclusive bounds. Positive values make the <paramref name="bitmapData"/> brighter,
            while negative values make it darker.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the transformed colors
            are not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="channels">The <see cref="T:KGySoft.Drawing.ColorChannels"/>, on which the adjustment has to be performed. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ColorChannels.Rgb"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginAdjustBrightness(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.AsyncConfig)">BeginAdjustBrightness</see>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustBrightnessAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.TaskConfig)">AdjustBrightnessAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>This method calls the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method internally. See
            the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method for more details.</para>
            <para>If <paramref name="bitmapData"/> has an indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> and <paramref name="ditherer"/> is <see langword="null"/>,
            then its palette entries are tried to be transformed instead of the actual pixels in the first place (if it is supported by <paramref name="bitmapData"/>).
            To transform the colors of an indexed <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> without changing the palette specify a non-<see langword="null"/>&#160;<paramref name="ditherer"/>.
            Transforming the palette is both faster and provides a better result.</para>
            <para>The <paramref name="ditherer"/> is ignored for <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s with more than 16 bits-per-pixel and for grayscale formats.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_AdjustBrightness.htm">BitmapExtensions.AdjustBrightness</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="brightness"/> is not between -1 and 1
            <br/>-or-
            <br/><paramref name="channels"/> is out of the defined flags.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginAdjustBrightness(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to adjust the brightness of the specified <paramref name="bitmapData"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="brightness">A float value between -1 and 1, inclusive bounds. Positive values make the <paramref name="bitmapData"/> brighter,
            while negative values make it darker.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the transformed colors
            are not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="channels">The <see cref="T:KGySoft.Drawing.ColorChannels"/>, on which the adjustment has to be performed. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ColorChannels.Rgb"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustBrightnessAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.TaskConfig)">AdjustBrightnessAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndAdjustBrightness(System.IAsyncResult)">EndAdjustBrightness</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustBrightness(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels)">AdjustBrightness</see> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="brightness"/> is not between -1 and 1
            <br/>-or-
            <br/><paramref name="channels"/> is out of the defined flags.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndAdjustBrightness(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginAdjustBrightness(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.AsyncConfig)">BeginAdjustBrightness</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustBrightnessAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.TaskConfig)">AdjustBrightnessAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustBrightnessAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.TaskConfig)">
            <summary>
            Adjusts the brightness of the specified <paramref name="bitmapData"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="brightness">A float value between -1 and 1, inclusive bounds. Positive values make the <paramref name="bitmapData"/> brighter,
            while negative values make it darker.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the transformed colors
            are not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="channels">The <see cref="T:KGySoft.Drawing.ColorChannels"/>, on which the adjustment has to be performed. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ColorChannels.Rgb"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustBrightness(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels)">AdjustBrightness</see> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="brightness"/> is not between -1 and 1
            <br/>-or-
            <br/><paramref name="channels"/> is out of the defined flags.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustContrast(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels)">
            <summary>
            Adjusts the contrast of the specified <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="contrast">A float value between -1 and 1, inclusive bounds. Positive values increase the contrast,
            while negative values decrease it.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the transformed colors
            are not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="channels">The <see cref="T:KGySoft.Drawing.ColorChannels"/>, on which the adjustment has to be performed. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ColorChannels.Rgb"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginAdjustContrast(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.AsyncConfig)">BeginAdjustContrast</see>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustContrastAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.TaskConfig)">AdjustContrastAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>This method calls the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method internally. See
            the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method for more details.</para>
            <para>If <paramref name="bitmapData"/> has an indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> and <paramref name="ditherer"/> is <see langword="null"/>,
            then its palette entries are tried to be transformed instead of the actual pixels in the first place (if it is supported by <paramref name="bitmapData"/>).
            To transform the colors of an indexed <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> without changing the palette specify a non-<see langword="null"/>&#160;<paramref name="ditherer"/>.
            Transforming the palette is both faster and provides a better result.</para>
            <para>The <paramref name="ditherer"/> is ignored for <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s with more than 16 bits-per-pixel and for grayscale formats.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_AdjustContrast.htm">BitmapExtensions.AdjustContrast</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="contrast"/> is not between -1 and 1
            <br/>-or-
            <br/><paramref name="channels"/> is out of the defined flags.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginAdjustContrast(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to adjust the contrast of the specified <paramref name="bitmapData"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="contrast">A float value between -1 and 1, inclusive bounds. Positive values increase the contrast,
            while negative values decrease it.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the transformed colors
            are not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="channels">The <see cref="T:KGySoft.Drawing.ColorChannels"/>, on which the adjustment has to be performed. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ColorChannels.Rgb"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustContrastAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.TaskConfig)">AdjustContrastAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndAdjustContrast(System.IAsyncResult)">EndAdjustContrast</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustContrast(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels)">AdjustContrast</see> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="contrast"/> is not between -1 and 1
            <br/>-or-
            <br/><paramref name="channels"/> is out of the defined flags.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndAdjustContrast(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginAdjustContrast(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.AsyncConfig)">BeginAdjustContrast</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustContrastAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.TaskConfig)">AdjustContrastAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustContrastAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.TaskConfig)">
            <summary>
            Adjusts the contrast of the specified <paramref name="bitmapData"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="contrast">A float value between -1 and 1, inclusive bounds. Positive values increase the contrast,
            while negative values decrease it.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the transformed colors
            are not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="channels">The <see cref="T:KGySoft.Drawing.ColorChannels"/>, on which the adjustment has to be performed. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ColorChannels.Rgb"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustContrast(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels)">AdjustContrast</see> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="contrast"/> is not between -1 and 1
            <br/>-or-
            <br/><paramref name="channels"/> is out of the defined flags.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustGamma(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels)">
            <summary>
            Adjusts the gamma correction of the specified <paramref name="bitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="gamma">A float value between 0 and 10, inclusive bounds. Values less than 1 decrease gamma correction,
            while values above 1 increase it.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the transformed colors
            are not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="channels">The <see cref="T:KGySoft.Drawing.ColorChannels"/>, on which the adjustment has to be performed. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ColorChannels.Rgb"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginAdjustGamma(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.AsyncConfig)">BeginAdjustGamma</see>
            or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustGammaAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.TaskConfig)">AdjustGammaAsync</see> (in .NET Framework 4.0 and above) methods for asynchronous call and to adjust parallelization, set up cancellation and for reporting progress.</note>
            <para>This method calls the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method internally. See
            the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TransformColors(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.IDitherer)">TransformColors</see> method for more details.</para>
            <para>If <paramref name="bitmapData"/> has an indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> and <paramref name="ditherer"/> is <see langword="null"/>,
            then its palette entries are tried to be transformed instead of the actual pixels in the first place (if it is supported by <paramref name="bitmapData"/>).
            To transform the colors of an indexed <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> without changing the palette specify a non-<see langword="null"/>&#160;<paramref name="ditherer"/>.
            Transforming the palette is both faster and provides a better result.</para>
            <para>The <paramref name="ditherer"/> is ignored for <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s with more than 16 bits-per-pixel and for grayscale formats.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_AdjustGamma.htm">BitmapExtensions.AdjustGamma</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="gamma"/> is not between 0 and 10
            <br/>-or-
            <br/><paramref name="channels"/> is out of the defined flags.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginAdjustGamma(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to adjust the gamma correction of the specified <paramref name="bitmapData"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="gamma">A float value between 0 and 10, inclusive bounds. Values less than 1 decrease gamma correction,
            while values above 1 increase it.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the transformed colors
            are not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="channels">The <see cref="T:KGySoft.Drawing.ColorChannels"/>, on which the adjustment has to be performed. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ColorChannels.Rgb"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustGammaAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.TaskConfig)">AdjustGammaAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndAdjustGamma(System.IAsyncResult)">EndAdjustGamma</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustGamma(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels)">AdjustGamma</see> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="gamma"/> is not between 0 and 10
            <br/>-or-
            <br/><paramref name="channels"/> is out of the defined flags.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndAdjustGamma(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginAdjustGamma(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.AsyncConfig)">BeginAdjustGamma</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustGammaAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.TaskConfig)">AdjustGammaAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustGammaAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels,KGySoft.Threading.TaskConfig)">
            <summary>
            Adjusts the gamma correction of the specified <paramref name="bitmapData"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> to be transformed.</param>
            <param name="gamma">A float value between 0 and 10, inclusive bounds. Values less than 1 decrease gamma correction,
            while values above 1 increase it.</param>
            <param name="ditherer">An optional <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to dither the result of the transformation if the transformed colors
            are not compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="channels">The <see cref="T:KGySoft.Drawing.ColorChannels"/>, on which the adjustment has to be performed. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.ColorChannels.Rgb"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.AdjustGamma(KGySoft.Drawing.Imaging.IReadWriteBitmapData,System.Single,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.ColorChannels)">AdjustGamma</see> method for more details.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="gamma"/> is not between 0 and 10
            <br/>-or-
            <br/><paramref name="channels"/> is out of the defined flags.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ResizingSessionInterpolated.Dispose">
            <summary>
            Not the usual Dispose pattern because the class is used internally only.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.BitmapDataExtensions.KernelMap">
            <summary>
            Represents the kernel map for resizing using a specific interpolation function.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.BitmapDataExtensions.KernelMap.MaxDiameter">
            <summary>
            Gets the maximum diameter of the kernels.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.KernelMap.GetKernel(System.Int32)">
            <summary>
            Returns a <see cref="T:KGySoft.Drawing.Imaging.BitmapDataExtensions.ResizeKernel"/> for an index value between 0 and targetLength - 1.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.KernelMap.BuildKernel(System.Func{System.Single,System.Single},System.Int32,System.Int32)">
            <summary>
            Builds a <see cref="T:KGySoft.Drawing.Imaging.BitmapDataExtensions.ResizeKernel"/> for the row <paramref name="destRowIndex"/> (in <see cref="F:KGySoft.Drawing.Imaging.BitmapDataExtensions.KernelMap.kernels"/>)
            referencing the data at row <paramref name="dataRowIndex"/> within <see cref="F:KGySoft.Drawing.Imaging.BitmapDataExtensions.KernelMap.data"/>, so the data reusable by other data rows.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.BitmapDataExtensions.ResizeKernel">
            <summary>
            Points to a collection of weights allocated in <see cref="T:KGySoft.Drawing.Imaging.BitmapDataExtensions.ResizingSessionInterpolated"/>.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ResizeKernel.ConvolveWith``1(KGySoft.Collections.CastArray{``0,KGySoft.Drawing.Imaging.PColorF}@,System.Int32)">
            <summary>
            Computes the sum of colors weighted by weight values, pointed by this <see cref="T:KGySoft.Drawing.Imaging.BitmapDataExtensions.ResizeKernel"/> instance.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ResizeKernel.Slide(System.Int32)">
            <summary>
            Reinterprets the origin of the current kernel adjusting the destination column index
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clip(KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Rectangle,System.Boolean)">
            <summary>
            Clips the specified <paramref name="source"/> using the specified <paramref name="clippingRegion"/>.
            Unlike the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> methods, this one returns a wrapper,
            providing access only to the specified region of the original <paramref name="source"/>.
            </summary>
            <param name="source">The source bitmap data to be clipped.</param>
            <param name="clippingRegion">A <see cref="T:System.Drawing.Rectangle"/> that specifies a region within the <paramref name="source"/>.</param>
            <param name="disposeSource"><see langword="true"/> to dispose <paramref name="source"/> when the result is disposed; otherwise, <see langword="false"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> that provides access only to the specified region withing the <paramref name="source"/>.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="clippingRegion"/> has no overlapping region with source bounds.</exception>
            <remarks>
            <para>The <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize"/> property of the returned instance can be 0, indicating that the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see>
            method cannot be used. It can occur if the left edge of the clipping is not zero.</para>
            <para>Even if <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize"/> property of the returned instance is a nonzero value it can happen that it is too low to access all columns
            by the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method. It can occur with indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>s if the right edge of the clipping is not on byte boundary.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clip(KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Rectangle)">
            <summary>
            Clips the specified <paramref name="source"/> using the specified <paramref name="clippingRegion"/>.
            Unlike the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone">Clone</see> methods, this one returns a wrapper,
            providing access only to the specified region of the original <paramref name="source"/>.
            This overload does not dispose <paramref name="source"/> when the result is disposed.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clip(KGySoft.Drawing.Imaging.IWritableBitmapData,System.Drawing.Rectangle,System.Boolean)"/> overload for details.
            </summary>
            <param name="source">The source bitmap data to be clipped.</param>
            <param name="clippingRegion">A <see cref="T:System.Drawing.Rectangle"/> that specifies a region within the <paramref name="source"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> that provides access only to the specified region withing the <paramref name="source"/>.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="source"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="clippingRegion"/> has no overlapping region with source bounds.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clear(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Clears the content of the specified <paramref name="bitmapData"/> and fills it with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> to be cleared.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> that represents the desired result color of the <paramref name="bitmapData"/>.
            If it has transparency, which is not supported by <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/>, then the result might be either
            completely transparent (depends also on <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/>), or the color will be blended with <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/>.
            </param>
            <param name="ditherer">The ditherer to be used for the clearing. Has no effect if <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/> has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clear(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)"/> overload to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClear(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginClear</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ClearAsync(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">ClearAsync</see> (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clear(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.ParallelConfig)">
            <summary>
            Clears the content of the specified <paramref name="bitmapData"/> and fills it with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> to be cleared.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> that represents the desired result color of the <paramref name="bitmapData"/>.
            If it has transparency, which is not supported by <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/>, then the result might be either
            completely transparent (depends also on <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/>), or the color will be blended with <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/>.
            </param>
            <param name="ditherer">The ditherer to be used for the clearing. Has no effect if <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/> has at least 24 bits-per-pixel size.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism,
            cancellation and progress reporting. Use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClear(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginClear</see> or <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ClearAsync(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">ClearAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clear(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer)">
            <summary>
            Clears the content of the specified <paramref name="bitmapData"/> and fills it with the specified <paramref name="color"/>,
            using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> to be cleared.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> that represents the desired result color of the <paramref name="bitmapData"/>.
            If it has transparency, which is not supported by <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/>, then the result might be either
            completely transparent (depends also on <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/>), or the color will be blended with <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/>.
            </param>
            <param name="ditherer">The ditherer to be used for the clearing. Has no effect if <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/> has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClear(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to clear the content of the specified <paramref name="bitmapData"/> and fills it with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> to be cleared.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> that represents the desired result color of the <paramref name="bitmapData"/>.
            If it has transparency, which is not supported by <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/>, then the result might be either
            completely transparent (depends also on <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/>), or the color will be blended with <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/>.
            </param>
            <param name="ditherer">The ditherer to be used for the clearing. Has no effect if <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/> has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ClearAsync(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">ClearAsync</see> method.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndClear(System.IAsyncResult)">EndClear</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.EndClear(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.BeginClear(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.AsyncConfig)">BeginClear</see> method to complete.
            In .NET Framework 4.0 and above you can use the <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ClearAsync(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">ClearAsync</see> method instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ClearAsync(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.IDitherer,KGySoft.Threading.TaskConfig)">
            <summary>
            Begins to clear the content of the specified <paramref name="bitmapData"/> and fills it with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> to be cleared.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> that represents the desired result color of the <paramref name="bitmapData"/>.
            If it has transparency, which is not supported by <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/>, then the result might be either
            completely transparent (depends also on <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/>), or the color will be blended with <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/>.
            </param>
            <param name="ditherer">The ditherer to be used for the clearing. Has no effect if <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/> has at least 24 bits-per-pixel size. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.TrySetPalette(KGySoft.Drawing.Imaging.IWritableBitmapData,KGySoft.Drawing.Imaging.Palette)">
            <summary>
            Tries to the set the specified <paramref name="palette"/> for this <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> whose <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> should be set.</param>
            <param name="palette">A <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance to set.</param>
            <returns><see langword="true"/>&#160;<paramref name="palette"/> can be set as the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of this <paramref name="bitmapData"/>; otherwise, <see langword="false"/>.</returns>
            <remarks>
            <para>Setting may fail if <paramref name="bitmapData"/>&#160;<see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> is not an indexed one,
            the number of entries in <paramref name="palette"/> is less than <see cref="P:KGySoft.Drawing.Imaging.Palette.Count"/> of the current <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/>,
            the number of entries in <paramref name="palette"/> is larger than the possible maximum number of colors of the current <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>,
            or when the current <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> does not support setting the palette.</para>
            <para>The <see cref="P:KGySoft.Drawing.Imaging.Palette.BackColor">Palette.BackColor</see> and <see cref="P:KGySoft.Drawing.Imaging.Palette.AlphaThreshold">Palette.AlphaThreshold</see> properties of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> property will
            continue to return the same value as the original <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold"/> values of this <paramref name="bitmapData"/>.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.ColorExtensions">
            <summary>
            Contains extension methods for various color types representing colors.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor32(System.Drawing.Color)">
            <summary>
            Converts this <see cref="T:System.Drawing.Color"/> to a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <param name="color">The <see cref="T:System.Drawing.Color"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance converted from this <see cref="T:System.Drawing.Color"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor32(System.Drawing.Color)">
            <summary>
            Converts this <see cref="T:System.Drawing.Color"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.
            </summary>
            <param name="color">The <see cref="T:System.Drawing.Color"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance converted from this <see cref="T:System.Drawing.Color"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor64(System.Drawing.Color)">
            <summary>
            Converts this <see cref="T:System.Drawing.Color"/> to a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <param name="color">The <see cref="T:System.Drawing.Color"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance converted from this <see cref="T:System.Drawing.Color"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor64(System.Drawing.Color)">
            <summary>
            Converts this <see cref="T:System.Drawing.Color"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.
            </summary>
            <param name="color">The <see cref="T:System.Drawing.Color"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance converted from this <see cref="T:System.Drawing.Color"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColorF(System.Drawing.Color)">
            <summary>
            Converts this <see cref="T:System.Drawing.Color"/> to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:System.Drawing.Color"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance converted from this <see cref="T:System.Drawing.Color"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColorF(System.Drawing.Color,System.Boolean)">
            <summary>
            Converts this <see cref="T:System.Drawing.Color"/> to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:System.Drawing.Color"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from sRGB to linear; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance converted from this <see cref="T:System.Drawing.Color"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColorF(System.Drawing.Color)">
            <summary>
            Converts this <see cref="T:System.Drawing.Color"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:System.Drawing.Color"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance converted from this <see cref="T:System.Drawing.Color"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColorF(System.Drawing.Color,System.Boolean)">
            <summary>
            Converts this <see cref="T:System.Drawing.Color"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:System.Drawing.Color"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from sRGB to linear; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance converted from this <see cref="T:System.Drawing.Color"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor32(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.
            It's practically the same as calling the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPremultiplied(KGySoft.Drawing.Imaging.Color32)"/> method.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor64(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor64(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColorF(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColorF(KGySoft.Drawing.Imaging.Color32,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from sRGB to linear; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColorF(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColorF(KGySoft.Drawing.Imaging.Color32,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from sRGB to linear; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor(KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to a <see cref="T:System.Drawing.Color"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to convert.</param>
            <returns>A <see cref="T:System.Drawing.Color"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor64(KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColorF(KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColorF(KGySoft.Drawing.Imaging.PColor32,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from sRGB to linear; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor64(KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColorF(KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColorF(KGySoft.Drawing.Imaging.PColor32,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from sRGB to linear; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to a <see cref="T:System.Drawing.Color"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to convert.</param>
            <returns>A <see cref="T:System.Drawing.Color"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor32(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor64(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.
            It's practically the same as calling the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPremultiplied(KGySoft.Drawing.Imaging.Color64)"/> method.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColorF(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColorF(KGySoft.Drawing.Imaging.Color64,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from sRGB to linear; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColorF(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColorF(KGySoft.Drawing.Imaging.Color64,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from sRGB to linear; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor(KGySoft.Drawing.Imaging.PColor64)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> to a <see cref="T:System.Drawing.Color"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> to convert.</param>
            <returns>A <see cref="T:System.Drawing.Color"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColorF(KGySoft.Drawing.Imaging.PColor64)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColorF(KGySoft.Drawing.Imaging.PColor64,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from sRGB to linear; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColorF(KGySoft.Drawing.Imaging.PColor64)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColorF(KGySoft.Drawing.Imaging.PColor64,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from sRGB to linear; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor(KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to a <see cref="T:System.Drawing.Color"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to convert.</param>
            <returns>A <see cref="T:System.Drawing.Color"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor(KGySoft.Drawing.Imaging.ColorF,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to a <see cref="T:System.Drawing.Color"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from linear to sRGB; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:System.Drawing.Color"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor32(KGySoft.Drawing.Imaging.ColorF,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from linear to sRGB; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the <see cref="M:KGySoft.Drawing.Imaging.ColorF.ToColor32">ColorF.ToColor32</see> method for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor32(KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor32(KGySoft.Drawing.Imaging.ColorF,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from linear to sRGB; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor64(KGySoft.Drawing.Imaging.ColorF,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from linear to sRGB; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the <see cref="M:KGySoft.Drawing.Imaging.ColorF.ToColor64">ColorF.ToColor64</see> method for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor64(KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor64(KGySoft.Drawing.Imaging.ColorF,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from linear to sRGB; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColorF(KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.
            It's practically the same as calling the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPremultiplied(KGySoft.Drawing.Imaging.ColorF)"/> method.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor(KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to a <see cref="T:System.Drawing.Color"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to convert.</param>
            <returns>A <see cref="T:System.Drawing.Color"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor(KGySoft.Drawing.Imaging.PColorF,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to a <see cref="T:System.Drawing.Color"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from linear to sRGB; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:System.Drawing.Color"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor32(KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor32(KGySoft.Drawing.Imaging.PColorF,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from linear to sRGB; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor32(KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor32(KGySoft.Drawing.Imaging.PColorF,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from linear to sRGB; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor64(KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToColor64(KGySoft.Drawing.Imaging.PColorF,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from linear to sRGB; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor64(KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to convert.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor64(KGySoft.Drawing.Imaging.PColorF,System.Boolean)">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> to convert.</param>
            <param name="adjustColorSpace"><see langword="true"/> to adjust the color space from linear to sRGB; otherwise, <see langword="false"/>.
            If you would just pass a <see langword="true"/> constant to this parameter, then use the overload without this parameter for a slightly better performance.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance converted from this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPremultiplied(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Converts this straight <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value to a premultiplied <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value.
            It's practically the same as calling the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor32(KGySoft.Drawing.Imaging.Color32)"/> method.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value to convert.</param>
            <returns>A premultiplied <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPremultiplied(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Converts this straight <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value to a premultiplied <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value.
            It's practically the same as calling the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColor64(KGySoft.Drawing.Imaging.Color64)"/> method.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value to convert.</param>
            <returns>A premultiplied <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPremultiplied(KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Converts this straight <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value to a premultiplied <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value.
            It's practically the same as calling the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.ToPColorF(KGySoft.Drawing.Imaging.ColorF)"/> method.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value to convert.</param>
            <returns>A premultiplied <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToStraight(KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Converts this premultiplied <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value to a straight <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value.
            It's practically the same as calling the <see cref="M:KGySoft.Drawing.Imaging.PColor32.ToColor32"/> method.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value to convert.</param>
            <returns>A straight <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToStraight(KGySoft.Drawing.Imaging.PColor64)">
            <summary>
            Converts this premultiplied <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value to a straight <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value.
            It's practically the same as calling the <see cref="M:KGySoft.Drawing.Imaging.PColor64.ToColor64"/> method.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value to convert.</param>
            <returns>A straight <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToStraight(KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Converts this premultiplied <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value to a straight <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value.
            It's practically the same as calling the <see cref="M:KGySoft.Drawing.Imaging.PColorF.ToColorF"/> method.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value to convert.</param>
            <returns>A straight <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToStraightSafe(KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Converts this premultiplied <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance containing possibly invalid RGB values to a straight <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value to convert.</param>
            <returns>A straight <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToStraightSafe(KGySoft.Drawing.Imaging.PColor64)">
            <summary>
            Converts this premultiplied <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance containing possibly invalid RGB values to a straight <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value to convert.</param>
            <returns>A straight <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.ToStraightSafe(KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Converts this premultiplied <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance containing possibly invalid ARGB values to a straight <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value.
            </summary>
            <param name="color">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value to convert.</param>
            <returns>A straight <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightness(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Gets the brightness of a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance as a <see cref="T:System.Byte">byte</see> based on human perception.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A"/> component of the specified value is ignored.
            </summary>
            <param name="c">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance to get the brightness of.</param>
            <returns>A <see cref="T:System.Byte">byte</see> value where 0 represents the darkest and 255 represents the brightest possible value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightness(KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Gets the brightness of a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance as a <see cref="T:System.Byte">byte</see> based on human perception.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A"/> component of the specified value is ignored.
            </summary>
            <param name="c">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance to get the brightness of.</param>
            <param name="colorSpace">The color space to be used for determining the brightness. If <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the sRGB color space will be used.
            For performance reasons this method does not validate this parameter. For undefined values the sRGB color space will be used as well.</param>
            <returns>A <see cref="T:System.Byte">byte</see> value where 0 represents the darkest and 255 represents the brightest possible value.</returns>
            <remarks>
            <note>This method always returns a gamma corrected result, even if <paramref name="colorSpace"/> is <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/>.
            To get the brightness in the linear color space use the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightness(KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> method instead.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightness(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Gets the brightness of a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance as a <see cref="T:System.UInt16"/> based on human perception.
            The <see cref="F:KGySoft.Drawing.Imaging.Color64.A"/> component of the specified value is ignored.
            </summary>
            <param name="c">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance to get the brightness of.</param>
            <returns>A <see cref="T:System.UInt16"/> value where 0 represents the darkest and 65535 represents the brightest possible value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightness(KGySoft.Drawing.Imaging.Color64,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Gets the brightness of a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance as a <see cref="T:System.UInt16"/> based on human perception.
            The <see cref="F:KGySoft.Drawing.Imaging.Color64.A"/> component of the specified value is ignored.
            </summary>
            <param name="c">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance to get the brightness of.</param>
            <param name="colorSpace">The color space to be used for determining the brightness. If <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the sRGB color space will be used.
            For performance reasons this method does not validate this parameter. For undefined values the sRGB color space will be used as well.</param>
            <returns>A <see cref="T:System.UInt16"/> value where 0 represents the darkest and 65535 represents the brightest possible value.</returns>
            <remarks>
            <note>This method always returns a gamma corrected result, even if <paramref name="colorSpace"/> is <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/>.
            To get the brightness in the linear color space use the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightness(KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> method instead.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightness(KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Gets the brightness of a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance as a <see cref="T:System.Single">float</see> value in the linear color space.
            The <see cref="F:KGySoft.Drawing.Imaging.ColorF.A"/> component of the specified value is ignored.
            </summary>
            <param name="c">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance to get the brightness of.</param>
            <returns>A <see cref="T:System.Single">float</see> value where 0 represents the darkest and 1 represents the brightest possible value.</returns>
            <remarks>
            <note>The result of this method is not gamma corrected. To get a gamma corrected <see cref="T:System.Single">float</see> result,
            call the <see cref="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.LinearToSrgb(System.Single)">ColorSpaceHelper.LinearToSrgb</see> method on the result,
            or use the <see cref="O:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightnessF">GetBrightnessF</see> methods instead.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightness(KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Gets the brightness of a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance as a <see cref="T:System.Single">float</see> value in the linear color space.
            The <see cref="F:KGySoft.Drawing.Imaging.ColorF.A"/> component of the specified value is ignored.
            </summary>
            <param name="c">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance to get the brightness of.</param>
            <param name="colorSpace">The color space to be used for determining the brightness. If <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the linear color space will be used.
            For performance reasons this method does not validate this parameter. For undefined values the linear color space will be used as well.</param>
            <returns>A <see cref="T:System.Single">float</see> value where 0 represents the darkest and 1 represents the brightest possible value.</returns>
            <remarks>
            <note>The result of this method is not gamma corrected. To get a gamma corrected <see cref="T:System.Single">float</see> result,
            call the <see cref="M:KGySoft.Drawing.Imaging.ColorSpaceHelper.LinearToSrgb(System.Single)">ColorSpaceHelper.LinearToSrgb</see> method on the result,
            or use the <see cref="O:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightnessF">GetBrightnessF</see> methods instead.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightnessF(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Gets the brightness of a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance as a <see cref="T:System.Single">float</see> value based on human perception.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A"/> component of the specified value is ignored.
            </summary>
            <param name="c">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance to get the brightness of.</param>
            <returns>A <see cref="T:System.Single">float</see> value where 0 represents the darkest and 1 represents the brightest possible value.</returns>
            <remarks>
            <note>This method always returns a gamma corrected result.
            To get the brightness in the linear color space use the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightness(KGySoft.Drawing.Imaging.ColorF)"/> method instead.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightnessF(KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Gets the brightness of a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance as a <see cref="T:System.Single">float</see> value based on human perception.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A"/> component of the specified value is ignored.
            </summary>
            <param name="c">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance to get the brightness of.</param>
            <param name="colorSpace">The color space to be used for determining the brightness. If <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the sRGB color space will be used.
            For performance reasons this method does not validate this parameter. For undefined values the sRGB color space will be used as well.</param>
            <returns>A <see cref="T:System.Single">float</see> value where 0 represents the darkest and 1 represents the brightest possible value.</returns>
            <remarks>
            <note>This method always returns a gamma corrected result, even if <paramref name="colorSpace"/> is <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/>.
            To get the brightness in the linear color space use the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightness(KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> method instead.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightnessF(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Gets the brightness of a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance as a <see cref="T:System.Single">float</see> value based on human perception.
            The <see cref="F:KGySoft.Drawing.Imaging.Color64.A"/> component of the specified value is ignored.
            </summary>
            <param name="c">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance to get the brightness of.</param>
            <returns>A <see cref="T:System.Single">float</see> value where 0 represents the darkest and 1 represents the brightest possible value.</returns>
            <remarks>
            <note>This method always returns a gamma corrected result.
            To get the brightness in the linear color space use the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightness(KGySoft.Drawing.Imaging.ColorF)"/> method instead.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightnessF(KGySoft.Drawing.Imaging.Color64,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Gets the brightness of a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance as a <see cref="T:System.Single">float</see> value based on human perception.
            The <see cref="F:KGySoft.Drawing.Imaging.Color64.A"/> component of the specified value is ignored.
            </summary>
            <param name="c">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance to get the brightness of.</param>
            <param name="colorSpace">The color space to be used for determining the brightness. If <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the sRGB color space will be used.
            For performance reasons this method does not validate this parameter. For undefined values the sRGB color space will be used as well.</param>
            <returns>A <see cref="T:System.Single">float</see> value where 0 represents the darkest and 1 represents the brightest possible value.</returns>
            <remarks>
            <note>This method always returns a gamma corrected result, even if <paramref name="colorSpace"/> is <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/>.
            To get the brightness in the linear color space use the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.GetBrightness(KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> method instead.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Blends the specified <paramref name="foreColor"/> and <paramref name="backColor"/> in the sRGB color space.
            It returns <paramref name="foreColor"/> if it has no transparency (that is, when <see cref="F:KGySoft.Drawing.Imaging.Color32.A"/> is 255); otherwise, the result of the blending.
            </summary>
            <param name="foreColor">The covering color to blend with <paramref name="backColor"/>.</param>
            <param name="backColor">The background color to be covered with <paramref name="foreColor"/>.</param>
            <returns><paramref name="foreColor"/> if it has no transparency; otherwise, the result of the blending.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Blends the specified <paramref name="foreColor"/> and <paramref name="backColor"/> in the specified <paramref name="colorSpace"/>.
            It returns <paramref name="foreColor"/> if it has no transparency (that is, when <see cref="F:KGySoft.Drawing.Imaging.Color32.A"/> is 255); otherwise, the result of the blending.
            </summary>
            <param name="foreColor">The covering color to blend with <paramref name="backColor"/>.</param>
            <param name="backColor">The background color to be covered with <paramref name="foreColor"/>.</param>
            <param name="colorSpace">The color space to be used for the blending. If <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the sRGB color space will be used.
            For performance reasons this method does not validate this parameter. For undefined values the sRGB color space will be used as well.</param>
            <returns><paramref name="foreColor"/> if it has no transparency; otherwise, the result of the blending.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.Color64,KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Blends the specified <paramref name="foreColor"/> and <paramref name="backColor"/> in the sRGB color space.
            It returns <paramref name="foreColor"/> if it has no transparency (that is, when <see cref="F:KGySoft.Drawing.Imaging.Color64.A"/> is 65535); otherwise, the result of the blending.
            </summary>
            <param name="foreColor">The covering color to blend with <paramref name="backColor"/>.</param>
            <param name="backColor">The background color to be covered with <paramref name="foreColor"/>.</param>
            <returns><paramref name="foreColor"/> if it has no transparency; otherwise, the result of the blending.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.Color64,KGySoft.Drawing.Imaging.Color64,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Blends the specified <paramref name="foreColor"/> and <paramref name="backColor"/> in the specified <paramref name="colorSpace"/>.
            It returns <paramref name="foreColor"/> if it has no transparency (that is, when <see cref="F:KGySoft.Drawing.Imaging.Color64.A"/> is 65535); otherwise, the result of the blending.
            </summary>
            <param name="foreColor">The covering color to blend with <paramref name="backColor"/>.</param>
            <param name="backColor">The background color to be covered with <paramref name="foreColor"/>.</param>
            <param name="colorSpace">The color space to be used for the blending. If <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the sRGB color space will be used.
            For performance reasons this method does not validate this parameter. For undefined values the sRGB color space will be used as well.</param>
            <returns><paramref name="foreColor"/> if it has no transparency; otherwise, the result of the blending.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Blends the specified <paramref name="foreColor"/> and <paramref name="backColor"/> in the linear color space.
            It returns <paramref name="foreColor"/> if it has no transparency (that is, when <see cref="F:KGySoft.Drawing.Imaging.ColorF.A"/> is greater than or equal to 1); otherwise, the result of the blending.
            </summary>
            <param name="foreColor">The covering color to blend with <paramref name="backColor"/>.</param>
            <param name="backColor">The background color to be covered with <paramref name="foreColor"/>.</param>
            <returns><paramref name="foreColor"/> if it has no transparency; otherwise, the result of the blending.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Blends the specified <paramref name="foreColor"/> and <paramref name="backColor"/> in the specified <paramref name="colorSpace"/>.
            It returns <paramref name="foreColor"/> if it has no transparency (that is, when <see cref="F:KGySoft.Drawing.Imaging.ColorF.A"/> is greater than or equal to 1); otherwise, the result of the blending.
            </summary>
            <param name="foreColor">The covering color to blend with <paramref name="backColor"/>.</param>
            <param name="backColor">The background color to be covered with <paramref name="foreColor"/>.</param>
            <param name="colorSpace">The color space to be used for the blending. If <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the linear color space will be used.
            For performance reasons this method does not validate this parameter. For undefined values the linear color space will be used as well.</param>
            <returns><paramref name="foreColor"/> if it has no transparency; otherwise, the result of the blending.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.PColor32,KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Blends the specified <paramref name="foreColor"/> and <paramref name="backColor"/> in the sRGB color space.
            It returns <paramref name="foreColor"/> if it has no transparency (that is, when <see cref="F:KGySoft.Drawing.Imaging.PColor32.A"/> is 255); otherwise, the result of the blending.
            </summary>
            <param name="foreColor">The covering color to blend with <paramref name="backColor"/>.</param>
            <param name="backColor">The background color to be covered with <paramref name="foreColor"/>.</param>
            <returns><paramref name="foreColor"/> if it has no transparency; otherwise, the result of the blending.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.PColor32,KGySoft.Drawing.Imaging.PColor32,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Blends the specified <paramref name="foreColor"/> and <paramref name="backColor"/> in the specified <paramref name="colorSpace"/>.
            It returns <paramref name="foreColor"/> if it has no transparency (that is, when <see cref="F:KGySoft.Drawing.Imaging.PColor32.A"/> is 255); otherwise, the result of the blending.
            </summary>
            <param name="foreColor">The covering color to blend with <paramref name="backColor"/>.</param>
            <param name="backColor">The background color to be covered with <paramref name="foreColor"/>.</param>
            <param name="colorSpace">The color space to be used for the blending. If <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the sRGB color space will be used.
            For performance reasons this method does not validate this parameter. For undefined values the sRGB color space will be used as well.</param>
            <returns><paramref name="foreColor"/> if it has no transparency; otherwise, the result of the blending.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.PColor64,KGySoft.Drawing.Imaging.PColor64)">
            <summary>
            Blends the specified <paramref name="foreColor"/> and <paramref name="backColor"/> in the sRGB color space.
            It returns <paramref name="foreColor"/> if it has no transparency (that is, when <see cref="F:KGySoft.Drawing.Imaging.PColor64.A"/> is 65535); otherwise, the result of the blending.
            </summary>
            <param name="foreColor">The covering color to blend with <paramref name="backColor"/>.</param>
            <param name="backColor">The background color to be covered with <paramref name="foreColor"/>.</param>
            <returns><paramref name="foreColor"/> if it has no transparency; otherwise, the result of the blending.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.PColor64,KGySoft.Drawing.Imaging.PColor64,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Blends the specified <paramref name="foreColor"/> and <paramref name="backColor"/> in the specified <paramref name="colorSpace"/>.
            It returns <paramref name="foreColor"/> if it has no transparency (that is, when <see cref="F:KGySoft.Drawing.Imaging.Color64.A"/> is 65535); otherwise, the result of the blending.
            </summary>
            <param name="foreColor">The covering color to blend with <paramref name="backColor"/>.</param>
            <param name="backColor">The background color to be covered with <paramref name="foreColor"/>.</param>
            <param name="colorSpace">The color space to be used for the blending. If <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the sRGB color space will be used.
            For performance reasons this method does not validate this parameter. For undefined values the sRGB color space will be used as well.</param>
            <returns><paramref name="foreColor"/> if it has no transparency; otherwise, the result of the blending.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.PColorF,KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Blends the specified <paramref name="foreColor"/> and <paramref name="backColor"/> in the linear color space.
            It returns <paramref name="foreColor"/> if it has no transparency (that is, when <see cref="F:KGySoft.Drawing.Imaging.PColorF.A"/> is greater than or equal to 1); otherwise, the result of the blending.
            </summary>
            <param name="foreColor">The covering color to blend with <paramref name="backColor"/>.</param>
            <param name="backColor">The background color to be covered with <paramref name="foreColor"/>.</param>
            <returns><paramref name="foreColor"/> if it has no transparency; otherwise, the result of the blending.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.Blend(KGySoft.Drawing.Imaging.PColorF,KGySoft.Drawing.Imaging.PColorF,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Blends the specified <paramref name="foreColor"/> and <paramref name="backColor"/> in the specified <paramref name="colorSpace"/>.
            It returns <paramref name="foreColor"/> if it has no transparency (that is, when <see cref="F:KGySoft.Drawing.Imaging.PColorF.A"/> is greater than or equal to 1); otherwise, the result of the blending.
            </summary>
            <param name="foreColor">The covering color to blend with <paramref name="backColor"/>.</param>
            <param name="backColor">The background color to be covered with <paramref name="foreColor"/>.</param>
            <param name="colorSpace">The color space to be used for the blending. If <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the linear color space will be used.
            For performance reasons this method does not validate this parameter. For undefined values the linear color space will be used as well.</param>
            <returns><paramref name="foreColor"/> if it has no transparency; otherwise, the result of the blending.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.TolerantEquals(KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instances are equal using a specified <paramref name="tolerance"/>.
            </summary>
            <param name="c1">The first color to compare.</param>
            <param name="c2">The second color to compare.</param>
            <param name="tolerance">The allowed tolerance for ARGB components.</param>
            <param name="alphaThreshold">Specifies a threshold under which colors are considered transparent. If both colors have lower <see cref="F:KGySoft.Drawing.Imaging.Color32.A"/> value than the threshold, then they are considered equal.
            If only one of the specified colors has lower <see cref="F:KGySoft.Drawing.Imaging.Color32.A"/> value than the threshold, then the colors are considered different.
            If both colors' <see cref="F:KGySoft.Drawing.Imaging.Color32.A"/> value are equal to or greater than this value, then <paramref name="tolerance"/> is applied to the <see cref="F:KGySoft.Drawing.Imaging.Color32.A"/> value, too. This parameter is optional.
            <br/>Default value: 0.</param>
            <returns><see langword="true"/>, if the colors are considered equal with the specified <paramref name="tolerance"/>; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.TolerantEquals(KGySoft.Drawing.Imaging.Color64,KGySoft.Drawing.Imaging.Color64,System.UInt16,System.UInt16)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instances are equal using a specified <paramref name="tolerance"/>.
            </summary>
            <param name="c1">The first color to compare.</param>
            <param name="c2">The second color to compare.</param>
            <param name="tolerance">The allowed tolerance for ARGB components.</param>
            <param name="alphaThreshold">Specifies a threshold under which colors are considered transparent. If both colors have lower <see cref="F:KGySoft.Drawing.Imaging.Color64.A"/> value than the threshold, then they are considered equal.
            If only one of the specified colors has lower <see cref="F:KGySoft.Drawing.Imaging.Color64.A"/> value than the threshold, then the colors are considered different.
            If both colors' <see cref="F:KGySoft.Drawing.Imaging.Color64.A"/> value are equal to or greater than this value, then <paramref name="tolerance"/> is applied to the <see cref="F:KGySoft.Drawing.Imaging.Color64.A"/> value, too. This parameter is optional.
            <br/>Default value: 0.</param>
            <returns><see langword="true"/>, if the colors are considered equal with the specified <paramref name="tolerance"/>; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.TolerantEquals(KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.ColorF,System.Single,System.Single)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instances are equal using a specified <paramref name="tolerance"/>.
            </summary>
            <param name="c1">The first color to compare.</param>
            <param name="c2">The second color to compare.</param>
            <param name="tolerance">The allowed tolerance for ARGB components. For performance reasons this parameter is not validated. This parameter is optional.
            <br/>Default value: <c>0.000001</c> (10<sup>-6</sup>).</param>
            <param name="alphaThreshold">Specifies a threshold under which colors are considered transparent. If both colors have lower <see cref="F:KGySoft.Drawing.Imaging.ColorF.A"/> value than the threshold, then they are considered equal.
            If only one of the specified colors has lower <see cref="F:KGySoft.Drawing.Imaging.ColorF.A"/> value than the threshold, then the colors are considered different.
            If both colors' <see cref="F:KGySoft.Drawing.Imaging.ColorF.A"/> value are equal to or greater than this value, then <paramref name="tolerance"/> is applied to the <see cref="F:KGySoft.Drawing.Imaging.ColorF.A"/> value, too.
            For performance reasons this parameter is not validated. This parameter is optional.
            <br/>Default value: 0.</param>
            <returns><see langword="true"/>, if the colors are considered equal with the specified <paramref name="tolerance"/>; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.TolerantEquals(KGySoft.Drawing.Imaging.PColor32,KGySoft.Drawing.Imaging.PColor32,System.Byte,System.Byte)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instances are equal using a specified <paramref name="tolerance"/>.
            </summary>
            <param name="c1">The first color to compare.</param>
            <param name="c2">The second color to compare.</param>
            <param name="tolerance">The allowed tolerance for ARGB components.</param>
            <param name="alphaThreshold">Specifies a threshold under which colors are considered transparent. If both colors have lower <see cref="F:KGySoft.Drawing.Imaging.PColor32.A"/> value than the threshold, then they are considered equal.
            If only one of the specified colors has lower <see cref="F:KGySoft.Drawing.Imaging.PColor32.A"/> value than the threshold, then the colors are considered different.
            If both colors' <see cref="F:KGySoft.Drawing.Imaging.PColor32.A"/> value are equal to or greater than this value, then <paramref name="tolerance"/> is applied to the <see cref="F:KGySoft.Drawing.Imaging.PColor32.A"/> value, too. This parameter is optional.
            <br/>Default value: 0.</param>
            <returns><see langword="true"/>, if the colors are considered equal with the specified <paramref name="tolerance"/>; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.TolerantEquals(KGySoft.Drawing.Imaging.PColor64,KGySoft.Drawing.Imaging.PColor64,System.UInt16,System.UInt16)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instances are equal using a specified <paramref name="tolerance"/>.
            </summary>
            <param name="c1">The first color to compare.</param>
            <param name="c2">The second color to compare.</param>
            <param name="tolerance">The allowed tolerance for ARGB components.</param>
            <param name="alphaThreshold">Specifies a threshold under which colors are considered transparent. If both colors have lower <see cref="F:KGySoft.Drawing.Imaging.PColor64.A"/> value than the threshold, then they are considered equal.
            If only one of the specified colors has lower <see cref="F:KGySoft.Drawing.Imaging.PColor64.A"/> value than the threshold, then the colors are considered different.
            If both colors' <see cref="F:KGySoft.Drawing.Imaging.PColor64.A"/> value are equal to or greater than this value, then <paramref name="tolerance"/> is applied to the <see cref="F:KGySoft.Drawing.Imaging.PColor64.A"/> value, too. This parameter is optional.
            <br/>Default value: 0.</param>
            <returns><see langword="true"/>, if the colors are considered equal with the specified <paramref name="tolerance"/>; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorExtensions.TolerantEquals(KGySoft.Drawing.Imaging.PColorF,KGySoft.Drawing.Imaging.PColorF,System.Single,System.Single)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instances are equal using a specified <paramref name="tolerance"/>.
            </summary>
            <param name="c1">The first color to compare.</param>
            <param name="c2">The second color to compare.</param>
            <param name="tolerance">The allowed tolerance for ARGB components. For performance reasons this parameter is not validated. This parameter is optional.
            <br/>Default value: <c>0.000001</c> (10<sup>-6</sup>).</param>
            <param name="alphaThreshold">Specifies a threshold under which colors are considered transparent. If both colors have lower <see cref="F:KGySoft.Drawing.Imaging.PColorF.A"/> value than the threshold, then they are considered equal.
            If only one of the specified colors has lower <see cref="F:KGySoft.Drawing.Imaging.PColorF.A"/> value than the threshold, then the colors are considered different.
            If both colors' <see cref="F:KGySoft.Drawing.Imaging.PColorF.A"/> value are equal to or greater than this value, then <paramref name="tolerance"/> is applied to the <see cref="F:KGySoft.Drawing.Imaging.PColorF.A"/> value, too.
            For performance reasons this parameter is not validated. This parameter is optional.
            <br/>Default value: 0.</param>
            <returns><see langword="true"/>, if the colors are considered equal with the specified <paramref name="tolerance"/>; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.DithererExtensions">
            <summary>
            Contains extension methods for the <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> type.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.DithererExtensions.InitializeAsync(KGySoft.Drawing.Imaging.IDitherer,KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.TaskConfig)">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IDitheringSession"/> instance potentially asynchronously that can be used to dither the result of the specified <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/>
            applied to the specified <paramref name="source"/>.
            If <paramref name="ditherer"/> is a known ditherer that can be evaluated quickly, then this method might be executed synchronously.
            <br/>This method is available in.NET Framework 4.0 and above.
            </summary>
            <param name="ditherer">An <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to get an <see cref="T:KGySoft.Drawing.Imaging.IDitheringSession"/> for.</param>
            <param name="source">The dithering session to be initialized will be performed on the specified <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance.</param>
            <param name="quantizingSession">The <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> to which the dithering should be applied.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is an <see cref="T:KGySoft.Drawing.Imaging.IDitheringSession"/> instance that can be used to dither the result of the specified <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/>
            applied to the specified <paramref name="source"/>, or <see langword="null"/>, if the operation was canceled and
            the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <exception cref="T:System.InvalidOperationException">The non-canceled <see cref="M:KGySoft.Drawing.Imaging.IDitherer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.IAsyncContext)">IDitherer.Initialize</see> method returned <see langword="null"/>.</exception>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.KnownPixelFormatExtensions">
            <summary>
            Contains extension methods for the <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> type.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.KnownPixelFormatExtensions.ToBitsPerPixel(KGySoft.Drawing.Imaging.KnownPixelFormat)">
            <summary>
            Gets the bits per pixel (BPP) value of a <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> value without checking
            whether <paramref name="pixelFormat"/> represents a valid value.
            </summary>
            <param name="pixelFormat">The pixel format to convert.</param>
            <returns>The bits per pixel (BPP) value of a <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.KnownPixelFormatExtensions.IsValidFormat(KGySoft.Drawing.Imaging.KnownPixelFormat)">
            <summary>
            Gets whether this <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> instance represents a valid format.
            The valid format values are the named ones, exception with the default <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Undefined"/> value.
            </summary>
            <param name="pixelFormat">The pixel format to be checked.</param>
            <returns><see langword="true"/>, if this <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> instance represents a valid format; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.KnownPixelFormatExtensions.IsIndexed(KGySoft.Drawing.Imaging.KnownPixelFormat)">
            <summary>
            Gets whether this <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> instance represents an indexed format without checking
            whether <paramref name="pixelFormat"/> represents a valid value.
            </summary>
            <param name="pixelFormat">The pixel format to be checked.</param>
            <returns><see langword="true"/>, if this <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> instance represents an indexed format; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.KnownPixelFormatExtensions.HasAlpha(KGySoft.Drawing.Imaging.KnownPixelFormat)">
            <summary>
            Gets whether this <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> instance represents a format with alpha (transparency) without checking
            whether <paramref name="pixelFormat"/> represents a valid value.
            </summary>
            <param name="pixelFormat">The pixel format to be checked.</param>
            <returns><see langword="true"/>, if this <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> instance represents a format with alpha; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.KnownPixelFormatExtensions.GetInfo(KGySoft.Drawing.Imaging.KnownPixelFormat)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> for this <paramref name="pixelFormat"/>.
            </summary>
            <param name="pixelFormat">The pixel format to retrieve a <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> for.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> representing the specified <paramref name="pixelFormat"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> must be a valid format.</exception>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.QuantizerExtensions">
            <summary>
            Contains extension methods for the <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> type.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.QuantizerExtensions.InitializeAsync(KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.TaskConfig)">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> instance potentially asynchronously that can be used to quantize the colors of the specified <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance.
            If <paramref name="quantizer"/> is a known quantizer that can be evaluated quickly, then this method might be executed synchronously.
            <br/>This method is available in.NET Framework 4.0 and above.
            </summary>
            <param name="quantizer">An <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to get an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> for.</param>
            <param name="source">The quantizing session to be initialized will be performed on the specified <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> instance that can be used to quantize the colors of the specified <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance
            or <see langword="null"/>, if the operation was canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property of the <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <exception cref="T:System.InvalidOperationException">The non-canceled <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">IQuantizer.Initialize</see> method returned <see langword="null"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ScalingModeExtensions.SinC(System.Single)">
            <summary>
            Gets the sine cardinal of <paramref name="x"/>, which is Sin(PI * x) / (PI * x)
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IBitmapData">
            <summary>
            Represents the raw data of a bitmap. To create a managed instance use the <see cref="T:KGySoft.Drawing.Imaging.BitmapDataFactory"/> class.
            To obtain a readable or writable instance for platform specific bitmaps you can either use the specific <c>GetReadableBitmapData</c>, <c>GetWritableBitmapData</c>
            or <c>GetReadWriteBitmapData</c> extension methods when applicable (see the <strong>Remarks</strong> section of the <see cref="N:KGySoft.Drawing"/> namespace for a list
            about the supported platforms). Otherwise, you can use the members of the <see cref="T:KGySoft.Drawing.Imaging.BitmapDataFactory"/> class to create a bitmap data for
            any managed or unmanaged preallocated buffer of any bitmap implementation.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">BitmapExtensions.GetReadWriteBitmapData</a>
            method for details and code samples. That method is for the GDI+ <a href="https://docs.microsoft.com/en-us/dotnet/api/system.drawing.bitmap" target="_blank">Bitmap</a> type but the main principles apply for all sources.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapData.Height">
            <summary>
            Gets the height of the current <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance in pixels.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapData.Width">
            <summary>
            Gets the width of the current <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance in pixels.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapData.Size">
            <summary>
            Gets the size of the current <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance in pixels.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> of the current <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance.
            </summary>
            <remarks>
            <para>The value of this property determines how the raw underlying values should be interpreted if the pixels
            are accessed by the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see> or <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see>
            methods. Otherwise, in most cases using the members of the interfaces derived from the <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> and <see cref="T:KGySoft.Drawing.Imaging.IBitmapDataRow"/> interfaces
            work seamlessly.</para>
            <para>If this property returns an indexed format (see <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Indexed"/>),
            then the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> property returns a non-<see langword="null"/> value.</para>
            </remarks>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapData.Palette">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance representing the colors used in this <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> if <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> represents an indexed format.
            For indexed bitmaps <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Indexed"/> property of <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> returns <see langword="true"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize">
            <summary>
            Gets the size of a row in bytes, or zero, if this <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance does not have an actual raw buffer to access.
            </summary>
            <remarks>
            <para>This property can be useful when accessing the bitmap data by the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see> or <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> methods.</para>
            <para>As <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> can represent any custom bitmap data, row size is not guaranteed to be a multiple of 4.</para>
            <note>
            <para>This property can return 0 if the current <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance represents a bitmap data without actual raw data or represents a clipped
            region where the left edge of the clipping has an offset compared to the original bitmap data.</para>
            <para>Even if this property returns a nonzero value, it is possible that raw access does not cover the few last columns.
            This may occur in case of indexed <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>s if the bitmap data is clipped and the right edge of the clipping does not fall at byte boundary.</para>
            </note>
            </remarks>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor">
            <summary>
            When accessing pixels of indexed bitmaps, or setting pixels of bitmaps without alpha support, gets the color of the background.
            For example, when setting color values with alpha, which are considered opaque, they will be blended with this color before setting the pixel.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> extension method for details and examples.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapData.AlphaThreshold">
            <summary>
            If this <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> represents a bitmap with single bit alpha or with a palette that has a transparent color,
            then gets a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which the color is considered transparent. If 0,
            then the pixels to be set will never be transparent.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace">
            <summary>
            Gets the preferred working color space when dealing with the pixels of this <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance.
            Some operations, such as setting pixels or drawing another bitmap data into this instance consider the value of this property.
            Operations that use an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance may override the value of this property.
            <br/>Default value if not implemented: <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>. (Only in .NET Core 3.0/.NET Standard 2.1 and above. In earlier targeted frameworks this member must be implemented.)
            </summary>
            <remarks>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for details and
            image examples about using the different color spaces in various operations.</note>
            <para>For <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> implementations the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> property primarily determines how to
            blend colors in drawing operations or when this <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> does not support transparency and partially transparent
            colors are set by the <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> or <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRow"/> members.
            Custom <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> implementations may ignore the value of this property. Some other operations such as
            cloning, resizing, etc. may also respect the value of this property.</para>
            <para>When <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> is <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, the working color space is chosen based on the context.
            For example, when setting a pixel using the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, the sRGB blending will be picked (unless <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>
            has the <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.LinearGamma"/> flag enabled) because it is faster, and it is the default behavior for most applications.</para>
            <para>For some operations, such as drawing a bitmap data into another one by the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataExtensions.DrawInto">DrawInto</see>
            methods the working color space is determined by the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> of the target bitmap data.</para>
            <para>When using a quantizer for some operations, it may override the value of this property. As quantizers are limited to the 32 bit ARGB color space,
            the built-in <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> implementations in this library also use sRGB blending by default but you can override it by
            the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.ConfigureColorSpace(KGySoft.Drawing.Imaging.WorkingColorSpace)">PredefinedColorsQuantizer.ConfigureColorSpace</see>
            and <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.ConfigureColorSpace(KGySoft.Drawing.Imaging.WorkingColorSpace)">OptimizedPaletteQuantizer.ConfigureColorSpace</see> methods.</para>
            </remarks>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapData.IsDisposed">
            <summary>
            Gets whether this <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance is disposed.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IBitmapDataInternal.GetRowCached(System.Int32)">
            <summary>
            Should be called from internal row access if the row is not exposed for public usage.
            If called repeatedly by the same thread, the same row instance is returned with adjusted row index.
            Works only if the result row is used in a scope that is never accessible to multiple threads.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IBitmapDataRow">
            <summary>
            Represents a single row of an <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance. Reading or writing actual pixels is available via the derived interfaces of this type.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for details and examples.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRow"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRow"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapDataRow"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapDataRow.Index">
            <summary>
            Gets the index of the current row. Can fall between zero and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height">Height</see> of the owner <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> (exclusive upper bound).
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapDataRow.Width">
            <summary>
            Gets the width of the row in pixels.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IBitmapDataRow.Size">
            <summary>
            Gets the size of the row in bytes, or zero, if this <see cref="T:KGySoft.Drawing.Imaging.IBitmapDataRow"/> instance does not have an actual raw buffer to access.
            <br/>See the <strong>Remarks</strong> section of the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize">IBitmapData.RowSize</see> property for details.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IBitmapDataRowMovable">
            <summary>
            Represents a single row of an <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance that allows setting its position to any row. Reading or writing actual pixels is available via the derived interfaces of this type.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for details and examples.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">
            <summary>
            If not already in the last row (<see cref="P:KGySoft.Drawing.Imaging.IBitmapDataRow.Index"/> is less than <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height">Height</see> of the owner <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/>),
            then advances the position of the current <see cref="T:KGySoft.Drawing.Imaging.IBitmapDataRowMovable"/> instance so it points to the next row.
            <br/>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.
            </summary>
            <returns><see langword="true"/>, if this <see cref="T:KGySoft.Drawing.Imaging.IBitmapDataRow"/> has been advanced to another row;
            <see langword="false"/>, if this <see cref="T:KGySoft.Drawing.Imaging.IBitmapDataRow"/> had already pointed to the last row before this method was called.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveToRow(System.Int32)">
            <summary>
            Moves the current <see cref="T:KGySoft.Drawing.Imaging.IBitmapDataRowMovable"/> to the specified row of the underlying <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/>.
            </summary>
            <param name="y">The row index to set.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="y"/> is negative or greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height">Height</see> of the owner <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/>.</exception>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ICustomBitmapData.CreateCompatibleBitmapDataFactory">
            <summary>
            Gets a factory to create a compatible bitmap data of the specified size that can be used by quantizers or as a clone.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow">
            <summary>
            Represents a low-level custom accessor to a bitmap data row.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ICustomBitmapDataRow.BitmapData">
            <summary>
            Gets the corresponding <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> of this row.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ICustomBitmapDataRow.Index">
            <summary>
            Gets the index of the current row. Can fall between zero and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height">Height</see> of the owner <see cref="P:KGySoft.Drawing.Imaging.ICustomBitmapDataRow.BitmapData"/> (exclusive upper bound).
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ICustomBitmapDataRow.GetRefAs``1(System.Int32)">
            <summary>
            Gets a reference to a value interpreted as <typeparamref name="T"/> within the current row at the specified <paramref name="x"/> index.
            </summary>
            <typeparam name="T">The type of the value to return a reference for. Must be a value type without managed references.</typeparam>
            <param name="x">The x-coordinate of the value within the row to retrieve. The valid range depends on the size of <typeparamref name="T"/>.</param>
            <returns>A reference to a value interpreted as <typeparamref name="T"/> within the current row at the specified <paramref name="x"/> index.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is not valid for <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize"/> and <typeparamref name="T"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ICustomBitmapDataRow.UnsafeGetRefAs``1(System.Int32)">
            <summary>
            Gets a reference to a value interpreted as <typeparamref name="T"/> within the current row at the specified <paramref name="x"/> index.
            This method is similar to <see cref="M:KGySoft.Drawing.Imaging.ICustomBitmapDataRow.GetRefAs``1(System.Int32)"/> but it does not check whether <paramref name="x"/> is valid for <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize"/> and the size of <typeparamref name="T"/>.
            It may provide a better performance but if <paramref name="x"/> is invalid, then memory can be either corrupted or an <see cref="T:System.AccessViolationException"/> can be thrown.
            </summary>
            <typeparam name="T">The type of the value to return a reference for. Must be a value type without managed references.</typeparam>
            <param name="x">The x-coordinate of the value within the row to retrieve. The valid range depends on the size of <typeparamref name="T"/>.</param>
            <returns>A reference to a value interpreted as <typeparamref name="T"/> within the current row at the specified <paramref name="x"/> index.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.ICustomBitmapDataRow`1">
            <summary>
            Represents a low-level custom accessor to a bitmap data row of specific element type.
            </summary>
            <typeparam name="T">The element type of the underlying custom buffer.</typeparam>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ICustomBitmapDataRow`1.Item(System.Int32)">
            <summary>
            Gets a reference to the actual underlying buffer element at the specified index.
            To reinterpret the element type of the underlying buffer use the <see cref="M:KGySoft.Drawing.Imaging.ICustomBitmapDataRow.GetRefAs``1(System.Int32)"/> method instead.
            </summary>
            <param name="index">The element index of the value withing the current row to obtain.</param>
            <returns>A reference to the actual underlying buffer element at the specified index.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IDitherer">
            <summary>
            Represents a ditherer that can be used to dither the result of a quantizing session.
            <br/>For built-in implementations see the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/>, <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/>,
            <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/> and <see cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/> classes.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Dither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IDitherer.InitializeReliesOnContent">
            <summary>
            Gets whether <see cref="M:KGySoft.Drawing.Imaging.IDitherer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.IAsyncContext)">Initialize</see> relies on the actual content of the source to be dithered.
            </summary>
            <remarks>
            <para>This property should return <see langword="true"/>, if <see cref="M:KGySoft.Drawing.Imaging.IDitherer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.IAsyncContext)">Initialize</see> method relies on the exact content to be dithered
            in order to make the <see cref="M:KGySoft.Drawing.Imaging.IDitheringSession.GetDitheredColor(KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32)">GetDitheredColor</see> method work properly.</para>
            <para>If this property returns <see langword="false"/>, then <see cref="M:KGySoft.Drawing.Imaging.IDitherer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.IAsyncContext)">Initialize</see> will be called with an <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>
            instance, whose <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> properties can be used but the actual content might be different
            from the one will be used when calling the <see cref="M:KGySoft.Drawing.Imaging.IDitheringSession.GetDitheredColor(KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32)">GetDitheredColor</see> method.</para>
            <para>The return value of this property may affect the performance of some drawing operations where returning <see langword="true"/> forces the source and
            target images to be blended together before dithering the result, while returning <see langword="false"/> allows the ditherer to be initialized
            with the source image and let the <see cref="M:KGySoft.Drawing.Imaging.IDitheringSession.GetDitheredColor(KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32)">GetDitheredColor</see> method to be called with colors that are blended on-the-fly during the dithering.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IDitherer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.IAsyncContext)">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IDitheringSession"/> instance that can be used to dither the result of the specified <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/>
            applied to the specified <paramref name="source"/>.
            </summary>
            <param name="source">The dithering session to be initialized will be performed on the specified <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance.</param>
            <param name="quantizingSession">The <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> to which the dithering should be applied.</param>
            <param name="asyncContext">Contains information for asynchronous processing about the current operation. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IDitheringSession"/> instance that can be used to dither the result of the specified <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/>
            applied to the specified <paramref name="source"/>.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IDitheringSession">
            <summary>
            Represents a disposable dithering session returned by the <see cref="M:KGySoft.Drawing.Imaging.IDitherer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.IAsyncContext)">IDitherer.Initialize</see> method
            that is used to dither the result of a quantizing session for a specific <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> source.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.IDitherer" />
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IDitheringSession.IsSequential">
            <summary>
            Gets whether this ditherer allows only sequential processing (line by line). Even returning <see langword="true"/> does
            not guarantee that every pixel will be queried. It just enforces that queried rows are processed sequentially.
            </summary>
            <value>
            If <see langword="true"/>, then the <see cref="M:KGySoft.Drawing.Imaging.IDitheringSession.GetDitheredColor(KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32)">GetDitheredColor</see> method will be called sequentially for each queried pixels.
            If <see langword="false"/>, then the <see cref="M:KGySoft.Drawing.Imaging.IDitheringSession.GetDitheredColor(KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32)">GetDitheredColor</see> method can be called concurrently for any pixels.
            </value>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IDitheringSession.GetDitheredColor(KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32)">
            <summary>
            Gets the dithered color of the specified <paramref name="origColor"/> that may depend on the specified coordinates.
            The returned color should be quantized by the <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> passed to the <see cref="M:KGySoft.Drawing.Imaging.IDitherer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.IQuantizingSession,KGySoft.Threading.IAsyncContext)">IDitherer.Initialize</see> method,
            which was used to create this <see cref="T:KGySoft.Drawing.Imaging.IDitheringSession"/> instance.
            </summary>
            <param name="origColor">The original color to be dithered.</param>
            <param name="x">The x-coordinate of the pixel to be dithered represented by the specified <paramref name="origColor"/>.</param>
            <param name="y">The y-coordinate of the pixel to be dithered represented by the specified <paramref name="origColor"/>.</param>
            <returns>The dithered color of the specified <paramref name="origColor"/> that may depend on the specified coordinates.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IPalette">
            <summary>
            Represents the properties of a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance that can be accessed from custom color lookup functions.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IPalette.Count">
            <summary>
            Gets the number of color entries in the current <see cref="T:KGySoft.Drawing.Imaging.IPalette"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IPalette.BackColor">
            <summary>
            Gets the background color. Relevant only if this <see cref="T:KGySoft.Drawing.Imaging.IPalette"/> does not contain partially transparent colors.
            If a lookup operation is performed with a color whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is equal to or greater
            than <see cref="P:KGySoft.Drawing.Imaging.IPalette.AlphaThreshold"/>, then the color will be blended with this color before performing the lookup.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IPalette.AlphaThreshold">
            <summary>
            If this <see cref="T:KGySoft.Drawing.Imaging.IPalette"/> has a transparent entry, then gets a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field,
            under which lookup operations will return the first transparent color in the palette.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IPalette.IsGrayscale">
            <summary>
            Gets whether the palette consists of grayscale entries only.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IPalette.HasAlpha">
            <summary>
            Gets whether the palette contains at least one entry that is not fully opaque.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IPalette.WorkingColorSpace">
            <summary>
            Gets the preferred color space when this <see cref="T:KGySoft.Drawing.Imaging.IPalette"/> instance performs blending and measuring distance when looking for a nearest color.
            </summary>
            <remarks>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for details and
            image examples about using the different color spaces in various operations.</note>
            <para>If the value of this property is <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the sRGB color space is used.</para>
            <para>If this palette uses a custom nearest color lookup, then it depends on the custom function whether it considers the value of this property.</para>
            <note>Please note that palette entries themselves always represent sRGB color values, regardless the value of this property.</note>
            </remarks>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IPalette.Item(System.Int32)">
            <summary>
            Gets the color entry of this <see cref="T:KGySoft.Drawing.Imaging.IPalette"/> at the specified <paramref name="index"/>.
            </summary>
            <param name="index">The index of the color entry to be retrieved.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance representing the color entry of the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> at the specified <paramref name="index"/>.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> must be equal to or greater than zero and less <see cref="P:KGySoft.Drawing.Imaging.IPalette.Count"/>.</exception>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IQuantizer">
            <summary>
            Represents a quantizer that can be used to reduce the number of colors of an image.
            <br/>For built-in implementations see the <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> and <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> classes.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Quantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer)"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IQuantizer.PixelFormatHint">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> that is compatible with this <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/>.
            It is recommended to return the format with the lowest bits-per-pixel value that is still compatible with this instance.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IQuantizer.InitializeReliesOnContent">
            <summary>
            Gets whether <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">Initialize</see> relies on the actual content of the source to be quantized.
            </summary>
            <remarks>
            <para>This property should return <see langword="true"/>, if <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">Initialize</see> method relies on the exact content to be quantized
            in order to generate a palette and make the <see cref="M:KGySoft.Drawing.Imaging.IQuantizingSession.GetQuantizedColor(KGySoft.Drawing.Imaging.Color32)">GetQuantizedColor</see> method work properly.</para>
            <para>If this property returns <see langword="false"/>, then <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">Initialize</see> will be called with an <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>
            instance, whose <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/> and <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> properties can be used but the actual content might be different
            from the one will be used when calling the <see cref="M:KGySoft.Drawing.Imaging.IQuantizingSession.GetQuantizedColor(KGySoft.Drawing.Imaging.Color32)">GetQuantizedColor</see> method.</para>
            <para>The return value of this property may affect the performance of some drawing operations where returning <see langword="true"/> forces the source and
            target images to be blended together before quantizing the result, while returning <see langword="false"/> allows the quantizer to be initialized
            with the source image and let the <see cref="M:KGySoft.Drawing.Imaging.IQuantizingSession.GetQuantizedColor(KGySoft.Drawing.Imaging.Color32)">GetQuantizedColor</see> method to be called with colors that are blended on-the-fly during the quantization.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> instance that can be used to quantize the colors of the specified <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance.
            </summary>
            <param name="source">The quantizing session to be initialized will be performed on the specified <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance.</param>
            <param name="asyncContext">Contains information for asynchronous processing about the current operation. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> instance that can be used to quantize the colors of the specified <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IQuantizingSession">
            <summary>
            Represents a disposable quantizing session returned by the <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">IQuantizer.Initialize</see> method
            that is used to quantize (reduce the colors) of a specific <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> source.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.IQuantizer" />
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IQuantizingSession.Palette">
            <summary>
            Gets the palette containing the colors of the quantized result. Expected to be called if the target of the quantization
            is indexed. Typical indexed pixel formats contain no more than 256 colors; however, it is allowed to return a bigger <see cref="T:KGySoft.Drawing.Imaging.Palette"/>.
            If the corresponding <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> returns a non-indexed pixel format in its <see cref="P:KGySoft.Drawing.Imaging.IQuantizer.PixelFormatHint"/> property, then this property can return <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IQuantizingSession.BackColor">
            <summary>
            Gets the background color for this <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/>.
            When the <see cref="M:KGySoft.Drawing.Imaging.IQuantizingSession.GetQuantizedColor(KGySoft.Drawing.Imaging.Color32)">GetQuantizedColor</see> is called with a color with alpha,
            which is considered opaque, then it will be blended with this color before quantizing.
            <br/>See also the <strong>Remarks</strong> section of the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.AlphaThreshold"/> property for details.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IQuantizingSession.AlphaThreshold">
            <summary>
            If this <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> can produce transparent pixels, then gets the alpha threshold value
            that can be used to determine whether a color with alpha should be considered transparent or should be blended with <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.BackColor"/>.
            </summary>
            <remarks>
            <para>If this <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> can produce transparent pixels, and <see cref="M:KGySoft.Drawing.Imaging.IQuantizingSession.GetQuantizedColor(KGySoft.Drawing.Imaging.Color32)">GetQuantizedColor</see> is called with a color,
            whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is lower than the threshold, then the returned color will be transparent.</para>
            <para>If this <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> cannot produce transparent pixels, or <see cref="M:KGySoft.Drawing.Imaging.IQuantizingSession.GetQuantizedColor(KGySoft.Drawing.Imaging.Color32)">GetQuantizedColor</see> is called with a color,
            whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field is greater than or equal to the threshold, then the returned color will be will be blended with <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.BackColor"/> before quantizing.</para>
            <para>If <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.AlphaThreshold"/> is 0, then the quantized color will never be transparent.</para>
            <para>If <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.AlphaThreshold"/> is 255, then only fully opaque colors will not be considered transparent.</para>
            </remarks>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IQuantizingSession.IsGrayscale">
            <summary>
            Gets whether this <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> works with grayscale colors.
            Its value may help to optimize the processing in some cases but it is allowed to return always <see langword="false"/>.
            <br/>Default value if not implemented: <see langword="false"/>. (Only in .NET Core 3.0/.NET Standard 2.1 and above. In earlier targeted frameworks this member must be implemented.)
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IQuantizingSession.WorkingColorSpace">
            <summary>
            Gets the preferred working color space of this <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> instance.
            If this quantizing session is used by a ditherer, then <see cref="T:KGySoft.Drawing.Imaging.IDitheringSession"/> implementations may also respect the value of this property.
            <br/>Default value if not implemented: <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>. (Only in .NET Core 3.0/.NET Standard 2.1 and above. In earlier targeted frameworks this member must be implemented.)
            </summary>
            <remarks>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for details and
            image examples about using the different color spaces in various operations.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IQuantizingSession.GetQuantizedColor(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Gets the quantized color of the specified <paramref name="origColor"/>. If <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.Palette"/> property has non-<see langword="null"/> return value,
            then the result color must be a valid <see cref="T:KGySoft.Drawing.Imaging.Palette"/> entry.
            <br/>See also the <strong>Remarks</strong> section of the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.AlphaThreshold"/> property for details.
            </summary>
            <param name="origColor">The original color to be quantized.</param>
            <returns>The quantized color.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IReadableBitmapData">
            <summary>
            Represents a readable <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance.
            To create an instance use the <see cref="T:KGySoft.Drawing.Imaging.BitmapDataFactory"/> class or the <c>GetReadableBitmapData</c> extension methods for various platform dependent bitmap implementations.
            <br/>See the <strong>Remarks</strong> section of the <see cref="N:KGySoft.Drawing"/> namespace for a list about the technologies with dedicated support.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">BitmapExtensions.GetReadWriteBitmapData</a>
            method for details and code samples. That method is for the GDI+ <a href="https://docs.microsoft.com/en-us/dotnet/api/system.drawing.bitmap" target="_blank">Bitmap</a> type but the main principles apply for all sources.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.BitmapDataFactory"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRowMovable"/> instance representing the first row of the current <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.
            Subsequent rows can be accessed by calling the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method on the returned instance
            while it returns <see langword="true"/>. Alternatively, you can use the <see cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)">indexer</see> or the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetMovableRow(System.Int32)">GetMovableRow</see> method to obtain any row.
            <br/>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.
            </summary>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> has already been disposed.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetMovableRow(System.Int32)"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRow"/> representing the row of the specified <paramref name="y"/> coordinate in the current <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.
            When obtaining the same row repeatedly, then a cached instance is returned. To get a movable row use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetMovableRow(System.Int32)">GetMovableRow</see> method instead.
            <br/>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.
            </summary>
            <param name="y">The y-coordinate of the row to obtain.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRow"/> representing the row of the specified <paramref name="y"/> coordinate in the current <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</returns>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetPixel(System.Int32,System.Int32)">
            <summary>
            Gets the color of the pixel at the specified coordinates as a <see cref="T:System.Drawing.Color"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <param name="y">The y-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:System.Drawing.Color"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a non-premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            The result of the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetColor32(System.Int32,System.Int32)">GetColor32</see> method represents the same range of colors as <see cref="T:System.Drawing.Color"/> and has a slightly better performance than this method.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/> property,
            getting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value you can use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.ReadRaw``1(System.Int32,System.Int32)">ReadRaw</see> method.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetColor32(System.Int32,System.Int32)"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetColor32(System.Int32,System.Int32)">
            <summary>
            Gets the color of the pixel at the specified coordinates as a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <param name="y">The y-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a non-premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/> property,
            getting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value you can use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.ReadRaw``1(System.Int32,System.Int32)">ReadRaw</see> method.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor32(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetPColor32(System.Int32,System.Int32)">
            <summary>
            Gets the color of the pixel at the specified coordinates as a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <param name="y">The y-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/> property,
            getting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value you can use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.ReadRaw``1(System.Int32,System.Int32)">ReadRaw</see> method.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetPColor32(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetColor64(System.Int32,System.Int32)">
            <summary>
            Gets the color of the pixel at the specified coordinates as a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <param name="y">The y-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a non-premultiplied color with 16 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/> property,
            getting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value you can use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.ReadRaw``1(System.Int32,System.Int32)">ReadRaw</see> method.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor64(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetPColor64(System.Int32,System.Int32)">
            <summary>
            Gets the color of the pixel at the specified coordinates as a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <param name="y">The y-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a premultiplied color with 16 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/> property,
            getting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value you can use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.ReadRaw``1(System.Int32,System.Int32)">ReadRaw</see> method.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetPColor64(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetColorF(System.Int32,System.Int32)">
            <summary>
            Gets the color of the pixel at the specified coordinates as a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <param name="y">The y-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a non-premultiplied color with 32 bits per channel in the linear color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/> property,
            getting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value you can use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.ReadRaw``1(System.Int32,System.Int32)">ReadRaw</see> method.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColorF(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetPColorF(System.Int32,System.Int32)">
            <summary>
            Gets the color of the pixel at the specified coordinates as a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <param name="y">The y-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a premultiplied color with 32 bits per channel in the linear color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/> property,
            getting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value you can use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.ReadRaw``1(System.Int32,System.Int32)">ReadRaw</see> method.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetPColorF(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetColorIndex(System.Int32,System.Int32)">
            <summary>
            If this <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> is an indexed one, then gets the color index of the pixel in the current row of the specified pixel.
            </summary>
            <param name="x">The x-coordinate of the color index to retrieve.</param>
            <param name="y">The y-coordinate of the color index to retrieve.</param>
            <returns>A palette index that represents the color of the specified pixel.</returns>
            <remarks>
            <para>This method can be used only if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Indexed"/> is set in the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of this <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.
            Otherwise, this method throws an <see cref="T:System.InvalidOperationException"/>.</para>
            <para>To get the actual color of the pixel at the specified coordinates you can use the <c>GetColor...</c>/<c>GetPColor...</c>
            methods, or you can call the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetColor(System.Int32)">Palette.GetColor</see> method with the return value of this method
            on the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance returned by the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> property of this <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <exception cref="T:System.InvalidOperationException">This <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> does not have an indexed pixel format.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColorIndex(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapData.ReadRaw``1(System.Int32,System.Int32)">
             <summary>
             Gets the underlying raw value within the current <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> at the specified coordinates.
             </summary>
             <typeparam name="T">The type of the value to return. Must be a value type without managed references.</typeparam>
             <param name="x">The x-coordinate of the value to retrieve. The valid range depends on the size of <typeparamref name="T"/>.</param>
             <param name="y">The y-coordinate of the value to retrieve.</param>
             <returns>The raw value within the current <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> at the specified coordinates.</returns>
             <remarks>
             <para>This method returns the actual raw underlying data as arbitrary unmanaged value type (a value type is unmanaged if contains no managed references).
             <typeparamref name="T"/> can have any size so this method can access multiple pixels or individual color channels.</para>
             <para>To determine the row width in bytes use the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize"/> property of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance.</para>
             <para>To determine the actual pixel size use the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> property of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance.</para>
             </remarks>
             <example>
             The following example demonstrates how to access the premultiplied color values of a bitmap data with premultiplied pixel format:
             <code lang="C#"><![CDATA[
             using IReadWriteBitmapData bitmapData = BitmapDataFactory.CreateBitmapData(1, 1, KnownPixelFormat.Format32bppPArgb);
             
             // setting a white pixel with 50% alpha:
             bitmapData.SetPixel(0, 0, Color.FromArgb(128, 255, 255, 255));
            
             // reading the raw premultiplied color value:
             Console.WriteLine(bitmapData.ReadRaw<Color32>(0, 0)); // 80808080 [A=128; R=128; G=128; B=128]
            
             // but reading it by the GetColor32 method transforms the color back:
             Console.WriteLine(bitmapData.GetColor32(0, 0); // 80FFFFFF [A=128; R=255; G=255; B=255]]]></code>
             <note type="tip">See also the example at the <strong>Examples</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.WriteRaw``1(System.Int32,System.Int32,``0)">IWritableBitmapData.WriteRaw</see> method.</note>
             </example>
             <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or the calculated offset of the value (considering the size of <typeparamref name="T"/>)
             at least partially exceeds the bounds of a row.
             <br/>-or-
             <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
             <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/>
             <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.WriteRaw``1(System.Int32,System.Int32,``0)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapData.GetMovableRow(System.Int32)">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRowMovable"/> instance representing the row of the specified <paramref name="y"/> coordinate in the current <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.
            Unlike the <see cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)">indexer</see>, this method always allocates a new instance.
            </summary>
            <param name="y">The y-coordinate of the row to obtain.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRowMovable"/> representing the row of the specified <paramref name="y"/> coordinate in the current <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</returns>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.Item(System.Int32)"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapData.FirstRow"/>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRow">
            <summary>
            Provides fast read-only access to a single row of an <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for details and examples.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRow"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapDataRow"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.Item(System.Int32)">
            <summary>
            Gets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate as a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a non-premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            This member is practically the same as the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor32(System.Int32)">GetColor32</see> method.</para>
            <para>To retrieve the color in other color formats use the <c>GetColor...</c>/<c>GetPColor...</c> methods.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see> method.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.</note>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor32(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColorIndex(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor(System.Int32)">
            <summary>
            Gets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate as a <see cref="T:System.Drawing.Color"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:System.Drawing.Color"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a non-premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            The result of the <see cref="P:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.Item(System.Int32)">indexer</see> and the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor32(System.Int32)">GetColor32</see> method represent the same range of colors as <see cref="T:System.Drawing.Color"/>
            and have a slightly better performance than this method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see> method.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor32(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColorIndex(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor32(System.Int32)">
            <summary>
            Gets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate as a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a non-premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            This method is practically the same as the <see cref="P:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.Item(System.Int32)">indexer</see>.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see> method.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColorIndex(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetPColor32(System.Int32)">
            <summary>
            Gets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate as a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see> method.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor64(System.Int32)">
            <summary>
            Gets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate as a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a non-premultiplied color with 16 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see> method.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetPColor64(System.Int32)">
            <summary>
            Gets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate as a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a premultiplied color with 16 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see> method.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColorF(System.Int32)">
            <summary>
            Gets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate as a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a non-premultiplied color with 32 bits per channel in the linear color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see> method.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetPColorF(System.Int32)">
            <summary>
            Gets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate as a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to retrieve.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance that represents the color of the specified pixel.</returns>
            <remarks>
            <para>The returned value is a premultiplied color with 32 bits per channel in the linear color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see> method.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColorIndex(System.Int32)">
            <summary>
            If the owner <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> is an indexed one, then gets the color index of the pixel in the current row at the specified <paramref name="x"/> coordinate.
            </summary>
            <param name="x">The x-coordinate of the color index to retrieve.</param>
            <returns>A palette index that represents the color of the specified pixel.</returns>
            <remarks>
            <para>This method can be used only if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Indexed"/> is set in the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.
            Otherwise, this method throws an <see cref="T:System.InvalidOperationException"/>.</para>
            <para>To get the actual color of the pixel at the <paramref name="x"/> coordinate you can use the <c>GetColor...</c>/<c>GetPColor...</c>
            methods or the <see cref="P:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.Item(System.Int32)">indexer</see>, or you can call the <see cref="M:KGySoft.Drawing.Imaging.Palette.GetColor(System.Int32)">Palette.GetColor</see> method with the return value of this method
            on the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance returned by the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> property of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</exception>
            <exception cref="T:System.InvalidOperationException">This <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRow"/> does not belong to a row of an indexed <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">
             <summary>
             Gets the underlying raw value within the current <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRow"/> at the specified <paramref name="x"/> coordinate.
             </summary>
             <typeparam name="T">The type of the value to return. Must be a value type without managed references.</typeparam>
             <param name="x">The x-coordinate of the value within the row to retrieve. The valid range depends on the size of <typeparamref name="T"/>.</param>
             <returns>The raw value within the current <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRow"/> at the specified <paramref name="x"/> coordinate.</returns>
             <remarks>
             <para>This method returns the actual raw underlying data as arbitrary unmanaged value type (a value type is unmanaged if contains no managed references).
             <typeparamref name="T"/> can have any size so this method can access multiple pixels or individual color channels.</para>
             <para>To determine the row width in bytes use the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize"/> property of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance.</para>
             <para>To determine the actual pixel size use the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> property of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance.</para>
             </remarks>
             <example>
             The following example demonstrates how to access the premultiplied color values of a bitmap data with premultiplied pixel format:
             <code lang="C#"><![CDATA[
             using IReadWriteBitmapData bitmapData = BitmapDataFactory.CreateBitmapData(1, 1, KnownPixelFormat.Format32bppPArgb);
             
             // setting a white pixel with 50% alpha:
             bitmapData.SetPixel(0, 0, Color.FromArgb(128, 255, 255, 255));
            
             // reading the raw premultiplied color value:
             Console.WriteLine(bitmapData[0].ReadRaw<Color32>(0)); // 80808080 [A=128; R=128; G=128; B=128]
            
             // but reading it by the indexer (or by GetPixel/GetColor) transforms the color back:
             Console.WriteLine(bitmapData[0][0]); // 80FFFFFF [A=128; R=255; G=255; B=255]]]></code>
             <note type="tip">See also the example at the <strong>Examples</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">IWritableBitmapDataRow.WriteRaw</see> method.</note>
             </example>
             <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or the memory location of the value (considering the size of <typeparamref name="T"/>)
             at least partially exceeds the bounds of the current row.</exception>
             <seealso cref="P:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.Item(System.Int32)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor(System.Int32)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColorIndex(System.Int32)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)"/>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRowMovable">
            <summary>
            Represents a single row of an <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> instance that allows setting its position to any row.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for details and examples.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData">
            <summary>
            Represents an <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance with read/write access.
            To create an instance use the <see cref="T:KGySoft.Drawing.Imaging.BitmapDataFactory"/> class or the <c>GetReadWriteBitmapData</c> extension methods for various platform dependent bitmap implementations.
            <br/>See the <strong>Remarks</strong> section of the <see cref="N:KGySoft.Drawing"/> namespace for a list about the technologies with dedicated support.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">BitmapExtensions.GetReadWriteBitmapData</a>
            method for details and code samples. That method is for the GDI+ <a href="https://docs.microsoft.com/en-us/dotnet/api/system.drawing.bitmap" target="_blank">Bitmap</a> type but the main principles apply for all sources.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.BitmapDataFactory"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IReadWriteBitmapData.FirstRow">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapDataRow"/> instance representing the first row of the current <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            Subsequent rows can be accessed by calling the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method on the returned instance
            while it returns <see langword="true"/>. Alternatively, you can use the <see cref="P:KGySoft.Drawing.Imaging.IReadWriteBitmapData.Item(System.Int32)">indexer</see> to obtain any row.
            <br/>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.
            </summary>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> has already been disposed.</exception>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IReadWriteBitmapData.Item(System.Int32)">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapDataRow"/> representing the row of the specified <paramref name="y"/> coordinate in the current <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            When obtaining the same row repeatedly, then a cached instance is returned. To get a movable row use the <see cref="M:KGySoft.Drawing.Imaging.IReadWriteBitmapData.GetMovableRow(System.Int32)">GetMovableRow</see> method instead.
            <br/>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.
            </summary>
            <param name="y">The y-coordinate of the row to obtain.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapDataRow"/> representing the row of the specified <paramref name="y"/> coordinate in the current <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</returns>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IReadWriteBitmapData.GetMovableRow(System.Int32)">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapDataRowMovable"/> instance representing the row of the specified <paramref name="y"/> coordinate in the current <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            Unlike the <see cref="P:KGySoft.Drawing.Imaging.IReadWriteBitmapData.Item(System.Int32)">indexer</see>, this method always allocates a new instance.
            </summary>
            <param name="y">The y-coordinate of the row to obtain.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapDataRowMovable"/> representing the row of the specified <paramref name="y"/> coordinate in the current <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</returns>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadWriteBitmapData.Item(System.Int32)"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IReadWriteBitmapData.FirstRow"/>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IReadWriteBitmapDataRow">
            <summary>
            Provides a fast read-write access to a single row of an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for details and examples.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRow"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRow"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IReadWriteBitmapDataRow.Item(System.Int32)">
            <summary>
            Gets or sets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <value>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that represents the color of the specified pixel.</value>
            <remarks>
            <para>To return a <see cref="T:System.Drawing.Color"/> structure you can use also the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor(System.Int32)">GetColor</see> method but this member has a slightly better performance.</para>
            <para>To set the color from a <see cref="T:System.Drawing.Color"/> structure you can use also the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor(System.Int32,System.Drawing.Color)">SetColor</see> method but this member has a slightly better performance.</para>
            <para>The color value represents a straight (non-premultiplied) color with gamma correction γ = 2.2,
            regardless of the underlying <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>. To access the actual <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>-dependent raw data
            use the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">ReadRaw</see> and <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> methods.</para>
            <para>If the color to be set is not supported by owner <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, then it will be quantized to a supported color value.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.</note>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColor(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor(System.Int32,System.Drawing.Color)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.GetColorIndex(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColorIndex(System.Int32,System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)"/>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IReadWriteBitmapDataRowMovable">
            <summary>
            Represents a single row of an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance that allows setting its position to any row.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for details and examples.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IWritableBitmapData">
            <summary>
            Represents a writable <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> instance.
            To create an instance use the <see cref="T:KGySoft.Drawing.Imaging.BitmapDataFactory"/> class or the <c>GetWritableBitmapData</c> extension methods for various platform dependent bitmap implementations.
            <br/>See the <strong>Remarks</strong> section of the <see cref="N:KGySoft.Drawing"/> namespace for a list about the technologies with dedicated support.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">BitmapExtensions.GetReadWriteBitmapData</a>
            method for details and code samples. That method is for the GDI+ <a href="https://docs.microsoft.com/en-us/dotnet/api/system.drawing.bitmap" target="_blank">Bitmap</a> type but the main principles apply for all sources.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.BitmapDataFactory"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRowMovable"/> instance representing the first row of the current <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.
            Subsequent rows can be accessed by calling the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method on the returned instance
            while it returns <see langword="true"/>. Alternatively, you can use the <see cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)">indexer</see> or the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.GetMovableRow(System.Int32)">GetMovableRow</see> method to obtain any row.
            <br/>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.
            </summary>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> has already been disposed.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.GetMovableRow(System.Int32)"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRow"/> representing the row of the specified <paramref name="y"/> coordinate in the current <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.
            When obtaining the same row repeatedly, then a cached instance is returned. To get a movable row use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.GetMovableRow(System.Int32)">GetMovableRow</see> method instead.
            <br/>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for examples.
            </summary>
            <param name="y">The y-coordinate of the row to obtain.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRow"/> representing the row of the specified <paramref name="y"/> coordinate in the current <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.</returns>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetPixel(System.Int32,System.Int32,System.Drawing.Color)">
            <summary>
            Sets the color of the pixel at the specified coordinates from a <see cref="T:System.Drawing.Color"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="y">The y-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:System.Drawing.Color"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a non-premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            The <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetColor32(System.Int32,System.Int32,KGySoft.Drawing.Imaging.Color32)">SetColor32</see> method works with the same range of colors as this one and has a slightly better performance.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/> property,
            setting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value
            obtain a row and use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetColor32(System.Int32,System.Int32,KGySoft.Drawing.Imaging.Color32)"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor(System.Int32,System.Drawing.Color)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetColor32(System.Int32,System.Int32,KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Sets the color of the pixel at the specified coordinates from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="y">The y-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a non-premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/> property,
            setting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value
            obtain a row and use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, then it will be quantized to a supported color value.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor32(System.Int32,KGySoft.Drawing.Imaging.Color32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetPColor32(System.Int32,System.Int32,KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Sets the color of the pixel at the specified coordinates from a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="y">The y-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/> property,
            setting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value
            obtain a row and use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetPColor32(System.Int32,KGySoft.Drawing.Imaging.PColor32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetColor64(System.Int32,System.Int32,KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Sets the color of the pixel at the specified coordinates from a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="y">The y-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a non-premultiplied color with 16 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/> property,
            setting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value
            obtain a row and use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor64(System.Int32,KGySoft.Drawing.Imaging.Color64)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetPColor64(System.Int32,System.Int32,KGySoft.Drawing.Imaging.PColor64)">
            <summary>
            Sets the color of the pixel at the specified coordinates from a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="y">The y-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a premultiplied color with 16 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/> property,
            setting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value
            obtain a row and use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetPColor64(System.Int32,KGySoft.Drawing.Imaging.PColor64)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetColorF(System.Int32,System.Int32,KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Sets the color of the pixel at the specified coordinates from a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="y">The y-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a non-premultiplied color with 32 bits per channel in the linear color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/> property,
            setting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value
            obtain a row and use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColorF(System.Int32,KGySoft.Drawing.Imaging.ColorF)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetPColorF(System.Int32,System.Int32,KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Sets the color of the pixel at the specified coordinates from a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="y">The y-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a premultiplied color with 32 bits per channel in the linear color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>Line by line processing is also possible by obtaining the first row by the <see cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/> property,
            setting the pixels by the <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRowMovable"/> members and then moving to the next line by the <see cref="M:KGySoft.Drawing.Imaging.IBitmapDataRowMovable.MoveNextRow">MoveNextRow</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value
            obtain a row and use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetPColorF(System.Int32,KGySoft.Drawing.Imaging.PColorF)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetColorIndex(System.Int32,System.Int32,System.Int32)">
            <summary>
            If this <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> has an indexed pixel format, then sets the color index of the pixel in the current row at the specified pixel.
            </summary>
            <param name="x">The x-coordinate of the color index to set.</param>
            <param name="y">The y-coordinate of the color index to set.</param>
            <param name="colorIndex">A palette index that represents the color to be set.</param>
            <remarks>
            <para>This method can be used only if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Indexed"/> is set in the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of this <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.
            Otherwise, this method throws an <see cref="T:System.InvalidOperationException"/>.</para>
            <para>To set the actual color of the pixel at the specified coordinates you can use the <c>SetColor...</c>/<c>SetPColor...</c> methods.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/>.
            <br/>-or-
            <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <exception cref="T:System.InvalidOperationException">This <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> does not have an indexed pixel format.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColorIndex(System.Int32,System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapData.WriteRaw``1(System.Int32,System.Int32,``0)">
             <summary>
             Sets the underlying raw value within the current <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> at the specified coordinates.
             </summary>
             <typeparam name="T">The type of the value to write. Must be a value type without managed references.</typeparam>
             <param name="x">The x-coordinate of the value to write. The valid range depends on the size of <typeparamref name="T"/>.</param>
             <param name="y">The y-coordinate of the value to write.</param>
             <param name="data">The raw value to write.</param>
             <remarks>
             <para>This method writes the actual raw underlying data. <typeparamref name="T"/> can have any size so you by using this method you can write multiple pixels as well as individual color channels.</para>
             <para>To determine the row width in bytes use the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize"/> property of this <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instance.</para>
             <para>To determine the actual pixel size use the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> property of this <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instance.</para>
             </remarks>
             <example>
             The following example demonstrates how to write multiple pixels by a single <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.WriteRaw``1(System.Int32,System.Int32,``0)">WriteRaw</see> call:
             <code lang="C#"><![CDATA[
             using IReadWriteBitmapData bmp4bppIndexed = BitmapDataFactory.CreateBitmapData(4, 4, KnownPixelFormat.Format4bppIndexed);
             using IReadWriteBitmapData bitmapData = bmp4bppIndexed.GetReadWriteBitmapData();
             
             // Writing as uint writes 8 pixels at once in case of a 4 BPP indexed bitmap:
             bitmapData.WriteRaw<uint>(0, 0, 0x12345678);
            
             // because of little endianness and 4 BPP pixel order the color indices will be printed
             // in the following order: 7, 8, 5, 6, 3, 4, 1, 2
             for (int x = 0; x < bitmapData.Width; x++)
                 Console.WriteLine(bitmapData.GetColorIndex(x, 0));]]></code>
             <note type="tip">See also the example at the <strong>Examples</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.ReadRaw``1(System.Int32,System.Int32)">IReadableBitmapData.ReadRaw</see> method.</note>
             </example>
             <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or the calculated offset of the value (considering the size of <typeparamref name="T"/>)
             at least partially exceeds the bounds of a row.
             <br/>-or-
             <br/><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
             <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/>
             <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetColorIndex(System.Int32,System.Int32,System.Int32)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapData.ReadRaw``1(System.Int32,System.Int32)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapData.GetMovableRow(System.Int32)">
            <summary>
            Gets an <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRowMovable"/> instance representing the row of the specified <paramref name="y"/> coordinate in the current <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.
            Unlike the <see cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)">indexer</see>, this method always allocates a new instance.
            </summary>
            <param name="y">The y-coordinate of the row to obtain.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRowMovable"/> representing the row of the specified <paramref name="y"/> coordinate in the current <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.</returns>
            <exception cref="T:System.ObjectDisposedException">This <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> has already been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="y"/> is less than zero or is greater than or equal to <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Height"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.Item(System.Int32)"/>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapData.FirstRow"/>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRow">
            <summary>
            Provides fast write-only access to a single row of an <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a>method for details and examples.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadableBitmapDataRow"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapDataRow"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.Item(System.Int32)">
            <summary>
            Sets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <value>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that represents the color of the specified pixel.</value>
            <remarks>
            <para>The <paramref name="value"/> represents a non-premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            This member is practically the same as the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor32(System.Int32,KGySoft.Drawing.Imaging.Color32)">SetColor32</see> method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            <note>See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for an example.</note>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor32(System.Int32,KGySoft.Drawing.Imaging.Color32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColorIndex(System.Int32,System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor(System.Int32,System.Drawing.Color)">
            <summary>
            Sets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate from a <see cref="T:System.Drawing.Color"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:System.Drawing.Color"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a non-premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            The <see cref="P:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.Item(System.Int32)">indexer</see> and the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor32(System.Int32,KGySoft.Drawing.Imaging.Color32)">SetColor32</see> method work with the same range of colors and have a slightly better performance than this method.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor32(System.Int32,KGySoft.Drawing.Imaging.Color32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColorIndex(System.Int32,System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor32(System.Int32,KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Sets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a non-premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.
            This method is practically the same as the <see cref="P:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.Item(System.Int32)">indexer</see>.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColorIndex(System.Int32,System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetPColor32(System.Int32,KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Sets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate from a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a premultiplied color with 8 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor64(System.Int32,KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Sets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate from a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a non-premultiplied color with 16 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetPColor64(System.Int32,KGySoft.Drawing.Imaging.PColor64)">
            <summary>
            Sets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate from a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a premultiplied color with 16 bits per channel in the sRGB color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColorF(System.Int32,KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Sets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate from a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a non-premultiplied color with 32 bits per channel in the linear color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetPColorF(System.Int32,KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Sets the color of the pixel in the current row at the specified <paramref name="x"/> coordinate from a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value.
            </summary>
            <param name="x">The x-coordinate of the pixel to set.</param>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> value that represents the color to assign to the specified pixel.</param>
            <remarks>
            <para>The <paramref name="color"/> parameter represents a premultiplied color with 32 bits per channel in the linear color space, regardless of the underlying <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>.</para>
            <para>To access the actual <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/>-dependent raw value use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> method.</para>
            <para>If the color to be set cannot be represented precisely by the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>, then it will be quantized to a supported color value.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.</exception>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColorIndex(System.Int32,System.Int32)">
            <summary>
            If the owner <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> has an indexed pixel format, then sets the color index of the pixel in the current row at the specified <paramref name="x"/> coordinate.
            </summary>
            <param name="x">The x-coordinate of the color index to set.</param>
            <param name="colorIndex">A palette index that represents the color to be set.</param>
            <remarks>
            <para>This method can be used only if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Indexed"/> is set in the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.
            Otherwise, this method throws an <see cref="T:System.InvalidOperationException"/>.</para>
            <para>To set the actual color of the pixel at the <paramref name="x"/> coordinate you can use the <c>SetColor...</c>/<c>SetPColor...</c>
            methods or the <see cref="P:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.Item(System.Int32)">indexer</see>.</para>
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or is greater than or equal to the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Width"/> of the parent <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.</exception>
            <exception cref="T:System.InvalidOperationException">This <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRow"/> does not belong to a row of an indexed <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/>.</exception>
            <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.Item(System.Int32)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor(System.Int32,System.Drawing.Color)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">
             <summary>
             Sets the underlying raw value within the current <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRow"/> at the specified <paramref name="x"/> coordinate.
             </summary>
             <typeparam name="T">The type of the value to write. Must be a value type without managed references.</typeparam>
             <param name="x">The x-coordinate of the value within the row to write. The valid range depends on the size of <typeparamref name="T"/>.</param>
             <param name="data">The raw value to write.</param>
             <remarks>
             <para>This method writes the actual raw underlying data. <typeparamref name="T"/> can have any size so you by using this method you can write multiple pixels as well as individual color channels.</para>
             <para>To determine the row width in bytes use the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.RowSize"/> property of the parent <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instance.</para>
             <para>To determine the actual pixel size use the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> property of the parent <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instance.</para>
             </remarks>
             <example>
             The following example demonstrates how to write multiple pixels by a single <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.WriteRaw``1(System.Int32,``0)">WriteRaw</see> call:
             <code lang="C#"><![CDATA[
             using IReadWriteBitmapData bmp4bppIndexed = BitmapDataFactory.CreateBitmapData(1, 1, KnownPixelFormat.Format4bppIndexed);
             using IReadWriteBitmapData bitmapData = bmp4bppIndexed.GetReadWriteBitmapData();
             IReadWriteBitmapDataRow row = bitmapData[0];
            
             // Writing as uint writes 8 pixels at once in case of a 4 BPP indexed bitmap:
             row.WriteRaw<uint>(0, 0x12345678);
            
             // because of little endianness and 4 BPP pixel order the color indices will be printed
             // in the following order: 7, 8, 5, 6, 3, 4, 1, 2
             for (int x = 0; x < bitmapData.Width; x++)
                 Console.WriteLine(row.GetColorIndex(x));]]></code>
             <note type="tip">See also the example at the <strong>Examples</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)">IReadableBitmapDataRow.ReadRaw</see> method.</note>
             </example>
             <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="x"/> is less than zero or the memory location of the value (considering the size of <typeparamref name="T"/>)
             at least partially exceeds the bounds of the current row.</exception>
             <seealso cref="P:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.Item(System.Int32)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColor(System.Int32,System.Drawing.Color)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.IWritableBitmapDataRow.SetColorIndex(System.Int32,System.Int32)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.IReadableBitmapDataRow.ReadRaw``1(System.Int32)"/>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.IWritableBitmapDataRowMovable">
            <summary>
            Represents a single row of an <see cref="T:KGySoft.Drawing.Imaging.IWritableBitmapData"/> instance that allows setting its position to any row.
            <br/>See the <strong>Remarks</strong> section of the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_BitmapExtensions_GetReadWriteBitmapData.htm">GetReadWriteBitmapData</a> method for details and examples.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer">
            <summary>
            Represents a quantizer that can generate an optimized set of colors best matching to the original image.
            Use the static methods to retrieve an instance. For using predefined colors see the <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> class.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Imaging_OptimizedPaletteQuantizer.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para>The <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> class can be used to reduce colors of an <see cref="T:KGySoft.Drawing.Imaging.IReadableBitmapData"/> using a
            palette of up to 65536 colors where the palette entries are optimized for the quantized image.
            <note>Though more than 256 colors are supported, the typical goal of palette optimization is to adjust the colors for an indexed pixel format.
            Natively supported indexed formats cannot have more than 256 colors, though you are allowed to create images with a custom pixel format
            by using the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData">BitmapDataFactory.CreateBitmapData</see> methods that
            have <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> or <see cref="T:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig"/> parameters. Please note though that a large palette may have impact
            on both memory usage and performance.</note></para>
            <para>This class supports palette optimization by three different algorithms (see the
            <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Octree</see>, <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">MedianCut</see> and <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see> methods)</para>
            </remarks>
            <example>
            <para>The following table compares the algorithms supported by the <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> class:
            <list type="table">
            <listheader><term></term><term><see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Octree</see></term><term><see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">MedianCut</see></term><term><see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see></term></listheader>
            <item>
            <term><strong>Speed</strong></term>
            <term>With default settings usually slower than the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see>'s algorithm and has a similar speed as <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">MedianCut</see>.
            When using high <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.ConfigureBitLevel(System.Nullable{System.Int32})">bit levels</see> and the source is a true color image, then it is generally faster for high requested colors,
            and can be faster even than <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see>'s algorithm using the same bit level.</term>
            <term>When using a low bit level or just a few colors, this one is the slowest one of the three algorithms, especially for larger images.
            When producing 256 or more colors its speed is similar to the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Octree</see> algorithm.</term>
            <term>With default settings this is almost always the fastest one of the three algorithms
            (still much slower though than the quantizers of the <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> class).
            When using high <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.ConfigureBitLevel(System.Nullable{System.Int32})">bit levels</see> it can be the slowest one for small images and gets to be the fastest one for larger image sizes.</term>
            </item>
            <item>
            <term><strong>Memory consumption<sup>*</sup></strong></term>
            <term>Generating the palette may consume quite a large amount of memory, but it also depends on the number of different colors
            of the source image and the requested color count. The memory is continuously allocated on demand and in extreme cases it may consume a huge amount of memory.
            The memory usage can be limited by the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.ConfigureBitLevel(System.Nullable{System.Int32})">ConfigureBitLevel</see> method.</term>
            <term>The memory usage mainly depends on the image size and somewhat on the requested color count. Quantizing a large image may consume a large amount of memory
            even if the image itself consist of just a few colors. It uses array pooling on platforms that support it.</term>
            <term>This quantizer consumes a fairly large fix amount of memory, even if the source has few colors and the requested color count is small.
            Most of the memory is allocated at once, regardless of the image size or its actual colors, and a smaller portion is allocated dynamically, which depends on the number of requested colors.
            On platforms where available, array pooling is used, which releases the used memory only after a while if the buffers are not re-used within a time interval.
            The memory usage can be adjusted by the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.ConfigureBitLevel(System.Nullable{System.Int32})">ConfigureBitLevel</see> method.</term>
            </item>
            <item>
            <term><strong>Quality</strong></term>
            <term><list type="bullet">
            <item>Usually poorer quality for smaller palettes (below 16 colors).</item>
            <item>Banding may appear in images with large low-frequency areas (e.g. sky or water in photos).</item>
            <item>Balanced quality for larger palettes and photo-like images.</item>
            </list></term>
            <term><list type="bullet">
            <item>Usually better quality for smaller palettes.</item>t
            <item>Excellent, nearly banding-free results with images with large low-frequency areas (e.g. sky or water in photos).</item>
            <item>May provide poorer quality for small areas with unique colors (e.g. a smaller human face in a large photo).</item>
            </list></term>
            <term><list type="bullet">
            <item>Usually very good quality even for smaller palettes.</item>
            <item>Banding may appear in images with large low-frequency areas (e.g. sky or water in photos).
            By default, banding may appear for monochromatic images even if the requested number of colors would allow a banding-free result
            but this can be configured by the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.ConfigureBitLevel(System.Nullable{System.Int32})">ConfigureBitLevel</see> method.</item>
            <item>Very good quality for photo-like images, especially if the image has no homogeneous low-frequency areas.</item>
            </list></term>
            </item>
            </list>
            <note>
            <para><sup>*</sup>Memory consumption mentioned in the table affects palette generation only.
            That occurs when the <see cref="M:KGySoft.Drawing.Imaging.IQuantizer.Initialize(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Threading.IAsyncContext)">IQuantizer.Initialize</see> method of an <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instance
            is called. As soon as this method returns with an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> instance, the memory mentioned in the table can be reclaimed
            (which does not necessarily happen immediately on platforms that support array pooling, which is utilized by the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">MedianCut</see> and <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see> algorithms).</para>
            <para>On the other hand, the <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> can also consume a large amount of memory during the quantization
            because its <see cref="T:KGySoft.Drawing.Imaging.Palette"/> caches the quantization results of the source image pixels, though this caching does not
            depend on the chosen algorithm and the used memory can also be reclaimed when the <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> is disposed.</para>
            <para>Keeping a reference to an <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> consumes almost no memory when there is no active quantization session in progress.</para>
            </note>
            </para>
            <para>The following table compares the results of the <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instances returned by the
            <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Octree</see>, <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">MedianCut</see> and <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see> methods.
            <note>For better comparison none of the images are dithered in the examples, though the visual quality can be improved by using dithering.
            See the <see cref="T:KGySoft.Drawing.Imaging.OrderedDitherer"/>, <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/>, <see cref="T:KGySoft.Drawing.Imaging.RandomNoiseDitherer"/> and <see cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/>
            classes for some built-in <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> implementations.</note>
            <table class="table is-hoverable">
            <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
            <tbody>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
            <br/>Color hues with alpha gradient</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/AlphaGradientOctree256Silver.gif" alt="Color hues quantized by Octree algorithm using 256 colors, silver background, zero alpha threshold"/>
            <br/><see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Octree</see> algorithm, 256 colors, silver background, zero alpha threshold</para>
            <para><img src="../Help/Images/AlphaGradientMedianCut256Silver.gif" alt="Color hues quantized by Median Cut algorithm using 256 colors, silver background, zero alpha threshold"/>
            <br/><see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">MedianCut</see> algorithm, 256 colors, silver background, zero alpha threshold</para>
            <para><img src="../Help/Images/AlphaGradientWu256Silver.gif" alt="Color hues quantized by Wu's algorithm using 256 colors, silver background, zero alpha threshold"/>
            <br/><see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see>'s algorithm, 256 colors, silver background, zero alpha threshold</para></div></td>
            </tr>
            <tr><td><div style="text-align:center;">
            <para><img src="../Help/Images/Information256.png" alt="Information icon with transparent background"/>
            <br/>Information icon with transparency</para></div></td>
            <td><div style="text-align:center;">
            <para><img src="../Help/Images/InformationOctree4Silver.gif" alt="Information icon quantized by Octree algorithm using 4 colors, silver background, zero alpha threshold"/>
            <br/><see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Octree</see> algorithm, 4 colors, silver background, zero alpha threshold</para>
            <para><img src="../Help/Images/InformationMedianCut4Silver.gif" alt="Information icon quantized by Median Cut algorithm using 4 colors, silver background, zero alpha threshold"/>
            <br/><see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">MedianCut</see> algorithm, 4 colors, silver background, zero alpha threshold</para>
            <para><img src="../Help/Images/InformationWu4Silver.gif" alt="Information icon quantized by Wu's algorithm using 4 colors, silver background, zero alpha threshold"/>
            <br/><see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see>'s algorithm, 4 colors, silver background, zero alpha threshold</para>
            <para><img src="../Help/Images/InformationOctree256Black.gif" alt="Information icon quantized by Octree algorithm using 256 colors, black background, alpha threshold = 128"/>
            <br/><see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Octree</see> algorithm, 256 colors, black background, alpha threshold = 128. Banding appeared in the result.</para>
            <para><img src="../Help/Images/InformationMedianCut256Black.gif" alt="Information icon quantized by Median Cut algorithm using 256 colors, black background, alpha threshold = 128"/>
            <br/><see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">MedianCut</see> algorithm, 256 colors, black background, alpha threshold = 128. Practically there is no banding in the result.</para>
            <para><img src="../Help/Images/InformationWu256Black.gif" alt="Information icon quantized by Wu's algorithm using 256 colors, black background, alpha threshold = 128"/>
            <br/><see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see>'s algorithm, 256 colors, black background, alpha threshold = 128. A slight banding can be observed,
            as if the source image had been prequantized by the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Argb1555(KGySoft.Drawing.Imaging.Color32,System.Byte)">PredefinedColorsQuantizer.Argb1555</see> quantizer first.
            You get this result if you use the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.ConfigureBitLevel(System.Nullable{System.Int32})">ConfigureBitLevel</see> method with 5 bits (which is the default for Wu with 256 colors).
            The banding can be reduced by using higher bit levels, which increases also memory usage and processing time.</para></div></td>
            </tr>
            </tbody></table>
            </para>
            </example>
            <seealso cref="T:KGySoft.Drawing.Imaging.IQuantizer"/>
            <seealso cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Quantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Dither(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.PixelFormatHint">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>, which is compatible with this <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instance.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.BackColor">
            <summary>
            Gets the back color used by this <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/>. This value will be returned also by
            the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.BackColor"/> property once an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> is created from this instance.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A"/> field of the returned color is always 255.
            <br/>See the <strong>Remarks</strong> section of the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.AlphaThreshold">IQuantizingSession.AlphaThreshold</see> property for details.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.AlphaThreshold">
            <summary>
            Gets the alpha threshold value used by this <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/>. This value will be returned also by
            the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.AlphaThreshold"/> property once an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> is created from this instance.
            <br/>See the <strong>Remarks</strong> section of the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.AlphaThreshold">IQuantizingSession.AlphaThreshold</see> property for details.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MaxColors">
            <summary>
            Gets the maximum number of colors this <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> is allowed to use.
            Once an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> is created from this instance the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.Palette"/> property
            will contain no more colors than the value of this property.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WorkingColorSpace">
            <summary>
            Gets the color space of this <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instance for quantizing. This value will be returned also by
            the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.WorkingColorSpace"/> property once an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> is created from this instance.
            You can use the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.ConfigureColorSpace(KGySoft.Drawing.Imaging.WorkingColorSpace)">ConfigureColorSpace</see> method to create a clone of this <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/>
            using a different working color space.
            </summary>
            <remarks>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for details and
            image examples about using the different color spaces in various operations.</note>
            <para>If the value of this property is <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the sRGB color space is used
            because the <see cref="M:KGySoft.Drawing.Imaging.IQuantizingSession.GetQuantizedColor(KGySoft.Drawing.Imaging.Color32)">IQuantizingSession.GetQuantizedColor</see> method works with sRGB colors anyway.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,System.Drawing.Color,System.Byte)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instance that can quantize colors of an image using the Octree quantizing algorithm.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_OptimizedPaletteQuantizer_Octree.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="maxColors">The upper limit of generated colors. Must be between 2 and 65536, inclusive bounds. This parameter is optional.
             <br/>Default value: <c>256</c>.</param>
             <param name="backColor">Colors with alpha above the <paramref name="alphaThreshold"/> will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="P:System.Drawing.Color.A">Color.A</see> property, under which a quantized color is considered transparent.
             If 0, then the quantized colors will never be transparent. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instance that can quantize colors of an image using the Octree quantizing algorithm.</returns>
             <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="maxColors"/> must be between 2 and 65536, inclusive bounds.</exception>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <note>This example requires to reference the <a href="https://www.nuget.org/packages/KGySoft.Drawing/" target="_blank">KGySoft.Drawing</a> package. When targeting .NET 7 or later, it can be executed on Windows only.</note>
             <code lang="C#"><![CDATA[
             Bitmap bmpOriginal = Icons.Shield.ExtractBitmap(new Size(256, 256));
             bmpOriginal.SaveAsPng(@"c:\temp\original.png");
            
             IQuantizer quantizer = OptimizedPaletteQuantizer.Octree(256);
             Bitmap bmpConverted = bmpOriginal.ConvertPixelFormat(PixelFormat.Format8bppIndexed, quantizer);
             bmpConverted.SaveAsGif(@"c:\temp\converted.gif");]]></code>
             <para>The example above produces the following result:
             <list type="table">
             <item><term><c>original.png</c></term><term><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/></term></item>
             <item><term><c>converted.gif</c></term><term><img src="../Help/Images/ShieldOctree256Black.gif" alt="Shield icon quantized to 256 colors using the Octree algorithm"/></term></item>
             </list></para>
             <note type="tip">For more image examples and side-by-side comparison with the other algorithms see the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> class.</note>
             </example>
             <seealso cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,System.Drawing.Color,System.Byte)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instance that can quantize colors of an image using the Median Cut quantizing algorithm.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_OptimizedPaletteQuantizer_MedianCut.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="maxColors">The upper limit of generated colors. Must be between 2 and 65536, inclusive bounds. This parameter is optional.
             <br/>Default value: <c>256</c>.</param>
             <param name="backColor">Colors with alpha above the <paramref name="alphaThreshold"/> will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="P:System.Drawing.Color.A">Color.A</see> property, under which a quantized color is considered transparent.
             If 0, then the quantized colors will never be transparent. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instance that can quantize colors of an image using the Median Cut quantizing algorithm.</returns>
             <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="maxColors"/> must be between 2 and 65536, inclusive bounds.</exception>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <note>This example requires to reference the <a href="https://www.nuget.org/packages/KGySoft.Drawing/" target="_blank">KGySoft.Drawing</a> package. When targeting .NET 7 or later, it can be executed on Windows only.</note>
             <code lang="C#"><![CDATA[
             Bitmap bmpOriginal = Icons.Shield.ExtractBitmap(new Size(256, 256));
             bmpOriginal.SaveAsPng(@"c:\temp\original.png");
            
             IQuantizer quantizer = OptimizedPaletteQuantizer.MedianCut(256);
             Bitmap bmpConverted = bmpOriginal.ConvertPixelFormat(PixelFormat.Format8bppIndexed, quantizer);
             bmpConverted.SaveAsGif(@"c:\temp\converted.gif");]]></code>
             <para>The example above produces the following result:
             <list type="table">
             <item><term><c>original.png</c></term><term><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/></term></item>
             <item><term><c>converted.gif</c></term><term><img src="../Help/Images/ShieldMedianCut256Black.gif" alt="Shield icon quantized to 256 colors using the Median Cut algorithm"/></term></item>
             </list></para>
             <note type="tip">For more image examples and side-by-side comparison with the other algorithms see the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> class.</note>
             </example>
             <seealso cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,System.Drawing.Color,System.Byte)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">
             <summary>
             Gets an <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instance that can quantize colors of an image using Xiaolin Wu's quantizing algorithm.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_OptimizedPaletteQuantizer_Wu.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="maxColors">The upper limit of generated colors. Must be between 2 and 65536, inclusive bounds. This parameter is optional.
             <br/>Default value: <c>256</c>.</param>
             <param name="backColor">Colors with alpha above the <paramref name="alphaThreshold"/> will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="P:System.Drawing.Color.A">Color.A</see> property, under which a quantized color is considered transparent.
             If 0, then the quantized colors will never be transparent. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instance that can quantize colors of an image by Xiaolin Wu's quantizing algorithm.</returns>
             <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="maxColors"/> must be between 2 and 65536, inclusive bounds.</exception>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <note>This example requires to reference the <a href="https://www.nuget.org/packages/KGySoft.Drawing/" target="_blank">KGySoft.Drawing</a> package. When targeting .NET 7 or later, it can be executed on Windows only.</note>
             <code lang="C#"><![CDATA[
             Bitmap bmpOriginal = Icons.Shield.ExtractBitmap(new Size(256, 256));
             bmpOriginal.SaveAsPng(@"c:\temp\original.png");
            
             IQuantizer quantizer = OptimizedPaletteQuantizer.Wu(256);
             Bitmap bmpConverted = bmpOriginal.ConvertPixelFormat(PixelFormat.Format8bppIndexed, quantizer);
             bmpConverted.SaveAsGif(@"c:\temp\converted.gif");]]></code>
             <para>The example above produces the following result:
             <list type="table">
             <item><term><c>original.png</c></term><term><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/></term></item>
             <item><term><c>converted.gif</c></term><term><img src="../Help/Images/ShieldWu256Black.gif" alt="Shield icon quantized to 256 colors by Wu's algorithm"/></term></item>
             </list></para>
             <note type="tip">For more image examples and side-by-side comparison with the other algorithms see the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> class.</note>
             </example>
             <seealso cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
             <seealso cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.ConfigureBitLevel(System.Nullable{System.Int32})">
            <summary>
            Configures the bit level per color channel to be used while optimizing the palette.
            If the input image is a monochromatic one, then may determine the bit depth of the result, depending on the used algorithm.
            Affects the quality, speed and memory usage.
            </summary>
            <param name="bitLevel">Specifies the desired bit level. If <see langword="null"/>, then the value is automatically set by the chosen algorithm.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instance that has the specified bit level.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="bitLevel"/> must be either <see langword="null"/>, or between 1 and 8.</exception>
            <remarks>
            <para>As a primary effect, <paramref name="bitLevel"/> determines the upper limit of the possible colors in the generated palette.
            For example, if <paramref name="bitLevel"/> is 1, then the result palette will not have more than 8 colors, or when it is 2, more than 64 colors.
            If you want to quantize an image using the allowed maximum of 65536 colors, then <paramref name="bitLevel"/> should be at least 6 because 5 allows up to 32768 colors.</para>
            <para>When using the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.MedianCut(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">MedianCut</see> algorithm, configuring the bit level has no other effects.
            When using the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Octree</see> or <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see>'s algorithms, <paramref name="bitLevel"/> determines also the amount of
            minimum distinguishable monochromatic shades. For example, when <paramref name="bitLevel"/> is 5, then up to 32 monochromatic shades can be differentiated
            so close shades might be merged even if the requested number of colors would allow returning all the shades.</para>
            <para>For the <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Octree(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Octree</see> algorithm the default value is the ceiling of the base 2 logarithm of the requested number of colors
            (e.g. 1 for 2 colors, 8 for 129 or more colors). This is alright for most cases. You can increase the default value if the image has only a few but very close colors
            or decrease it if the image has so many colors that the quantization would use too much memory.</para>
            <para>For <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.Wu(System.Int32,KGySoft.Drawing.Imaging.Color32,System.Byte)">Wu</see>'s algorithm the default value is 5 for no more than 256 colors (requires about 1.5 MB fix memory) and 6 for more colors (requires about 10 MB).
            This provides good enough quality in most cases but may cause visible banding if the input image is monochrome. To avoid that you can increase the bit level,
            which dramatically increases also the memory requirement: 7 bits requires about 80 MB memory, whereas 8 bits demands about 650 MB, regardless of
            the actual number of colors in the source image.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.ConfigureColorSpace(KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Configures the working color space of the generated <see cref="T:KGySoft.Drawing.Imaging.Palette"/> to be used for blending and performing nearest color search.
            The configuration may also affect the behavior of ditherers that use this quantizer.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for details and
            image examples about using the different color spaces in various operations.
            </summary>
            <param name="workingColorSpace">Specifies the working color space for the generated <see cref="T:KGySoft.Drawing.Imaging.Palette"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instance that uses the specified color space.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer">
            <summary>
            Credit to Xiaolin Wu's Color Quantizer published at https://www.ece.mcmaster.ca/~xwu/cq.c
            This quantizer is mainly based on his code.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.CubicBuffer`1">
            <summary>
            Similar to <see cref="T:KGySoft.Collections.Array3D`1"/> (it allows both 3D and 1D access) but allows negative indices, which returns default value.
            The original algorithm uses 33x33x33 arrays, where 0 indices are never set in any dimensions so they were always 0.
            This was acceptable for the original algorithm but with 8 bit resolution (257x257x257 * sizeof(T)) the waste is much more significant,
            especially with array pooling, which allocates almost twice as much memory as needed when dimensions are 2^n + 1.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box.Volume(KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.CubicBuffer{System.Int64}@)">
            <summary>
            Computes the sum over a box of any given statistic.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box.Volume(KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.CubicBuffer{System.Single}@)">
            <summary>
            Computes the sum over a box of any given statistic (floating point version).
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box.Bottom(KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Direction,KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.CubicBuffer{System.Int64}@)">
            <summary>
            Computes part of <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box.Volume(KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.CubicBuffer{System.Int64}@)"/> that doesn't depend on <see cref="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box.RMax"/>, <see cref="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box.GMax"/>
            or <see cref="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box.BMax"/>, depending on <paramref name="dir"/>.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box.Top(KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Direction,System.Int32,KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.CubicBuffer{System.Int64}@)">
            <summary>
            Computes remainder of <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box.Volume(KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.CubicBuffer{System.Int64}@)"/>, substituting <paramref name="pos"/>
            for <see cref="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box.RMax"/>, <see cref="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box.GMax"/> or <see cref="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box.BMax"/>, depending on <paramref name="dir"/>.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.sqrTable">
            <summary>
            Just a lookup table for squared values between 0..255
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.m2">
            <summary>
            The squared moment values of color RGB values.
            After building the histogram by <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.AddColor(KGySoft.Drawing.Imaging.Color32)"/> an element of this array can be interpreted as
            m2[r, g, b] = sum over voxel of c^2*P(c)
            and after <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.HistogramToMoments(KGySoft.Threading.IAsyncContext)"/> it contains cumulative moments.
            The strictly taken Bernoulli probability is actually multiplied by image size.
            In Wu's original algorithm effective histogram elements were in 1..<see cref="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.histSize"/> along each axis,
            element 0 was just for base or marginal value. Here values are zero-based, but reading -1 index is allowed, which returns zero.
            Values are floats just because of the possible big ranges due to squared values.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.wt">
            <summary>
            The counts of voxels of the 3D color cubes in each position.
            The same applies as for <see cref="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.m2"/> except that after <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.AddColor(KGySoft.Drawing.Imaging.Color32)"/> values are interpreted as
            wt[r, g, b] = sum over voxel of P(c)
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.mr">
            <summary>
            The moment values of red color components.
            The same applies as for <see cref="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.m2"/> except that after <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.AddColor(KGySoft.Drawing.Imaging.Color32)"/> values are interpreted as
            wt[r, g, b] = sum over voxel of r*P(c)
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.mg">
            <summary>
            The moment values of green color components.
            The same applies as for <see cref="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.m2"/> except that after <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.AddColor(KGySoft.Drawing.Imaging.Color32)"/> values are interpreted as
            wt[r, g, b] = sum over voxel of g*P(c)
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.mb">
            <summary>
            The moment values of green color components.
            The same applies as for <see cref="F:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.m2"/> except that after <see cref="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.AddColor(KGySoft.Drawing.Imaging.Color32)"/> values are interpreted as
            wt[r, g, b] = sum over voxel of b*P(c)
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.HistogramToMoments(KGySoft.Threading.IAsyncContext)">
            <summary>
            Computing cumulative moments from the histogram.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Var(KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer.WuQuantizer.Box)">
            <summary>
            Compute the weighted variance of a box.
            Note: as with the raw statistics, this is actually the variance multiplied by image size
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer">
            <summary>
            Represents a quantizer with predefined set of colors. Use the static members to retrieve an instance.
            For using optimized colors for a specific source image see the <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> class.
            <br/>See the <strong>Remarks</strong> section of the static methods of this class for details and image examples.
            </summary>
            <seealso cref="T:KGySoft.Drawing.Imaging.IQuantizer" />
            <seealso cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)"/>
            <seealso cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Quantize(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IQuantizer)"/>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.PixelFormatHint">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> that is compatible with this <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance.
            If this <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> was not initialized with custom color mapping logic,
            then this is the possible lowest bits-per-pixel value format.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BackColor">
            <summary>
            Gets the back color used by this <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/>. This value will be returned also by
            the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.BackColor"/> property once an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> is created from this instance.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A"/> field of the returned color is always 255.
            <br/>See the <strong>Remarks</strong> section of the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.AlphaThreshold">IQuantizingSession.AlphaThreshold</see> property for details.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.AlphaThreshold">
            <summary>
            Gets the alpha threshold value used by this <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/>. This value will be returned also by
            the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.AlphaThreshold"/> property once an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> is created from this instance.
            <br/>See the <strong>Remarks</strong> section of the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.AlphaThreshold">IQuantizingSession.AlphaThreshold</see> property for details.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Palette">
            <summary>
            If this <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> is associated with a specific palette, then returns the same <see cref="T:KGySoft.Drawing.Imaging.Palette"/> that will be returned also by
            the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.Palette"/> property once an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> is created from this instance;
            otherwise, returns <see langword="null"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.WorkingColorSpace">
            <summary>
            Gets the preferred color space of this <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance for quantizing. This value will be returned also by
            the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.WorkingColorSpace"/> property once an <see cref="T:KGySoft.Drawing.Imaging.IQuantizingSession"/> is created from this instance.
            You can use the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.ConfigureColorSpace(KGySoft.Drawing.Imaging.WorkingColorSpace)">ConfigureColorSpace</see> method to create a clone of this <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/>
            using a different working color space.
            </summary>
            <remarks>
            <note type="tip">See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for details and
            image examples about using the different color spaces in various operations.</note>
            <para>If the value of this property is <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, then the sRGB color space is used
            because the <see cref="M:KGySoft.Drawing.Imaging.IQuantizingSession.GetQuantizedColor(KGySoft.Drawing.Imaging.Color32)">IQuantizingSession.GetQuantizedColor</see> method works with sRGB colors anyway.</para>
            <para>If this <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance uses a custom quantizing functions, then it depends on the function whether it
            considers the value of this property. When using a high color quantizer, then the value of this property may only affect possible alpha blending
            with the <see cref="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BackColor"/> property.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Argb8888(System.Drawing.Color,System.Byte)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Argb8888(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Argb8888(KGySoft.Drawing.Imaging.Color32,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to the 32-bit ARGB color space.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_Argb8888.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="backColor">Determines the <see cref="P:KGySoft.Drawing.Imaging.IQuantizingSession.BackColor"/> property of the returned quantizer.
             Considering that this quantizer can return alpha colors it has effect only when the returned quantizer is used with
             a ditherer that does not support partial transparency.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value:The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
             is considered completely transparent. If 0, then the quantized colors will preserve their original alpha value. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to the 32-bit ARGB color space.</returns>
             <remarks>
             <para>If <paramref name="alphaThreshold"/> is zero, then the returned <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance is practically just a pass-through filter in the 32-bit color space,
             and it is effective only for some bitmap data operations (eg. <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.Clone(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.IQuantizer,KGySoft.Drawing.Imaging.IDitherer)">Clone</see>),
             which could possibly preserve wide color information (<see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/>s with more than 32 bpp) without specifying a quantizer.</para>
             <para>If <paramref name="alphaThreshold"/> is not zero, then every partially transparent pixel with lower <see cref="P:System.Drawing.Color.A">Color.A</see> value than the threshold will turn completely transparent.</para>
             <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/> pixel format.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToArgb8888(IReadWriteBitmapData source, Color32 backColor = default,
                 byte alphaThreshold = 128, IDitherer ditherer = null)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.Argb8888(backColor, alphaThreshold);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format32bppArgb, quantizer, ditherer);
            
                 // b.) when converting to Format32bppArgb format without dithering, this produces the same result:
                 if (ditherer == null && alphaThreshold == 0)
                     return source.Clone(KnownPixelFormat.Format32bppArgb);
            
                 // c.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 if (ditherer == null)
                     source.Quantize(quantizer);
                 else
                     source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientArgb8888BlackA128.png" alt="Color hues with ARGB8888 pixel format, black background and default alpha threshold"/>
             <br/>Default optional parameter values (black background, alpha threshold = 128). The top-half of the image preserved the original transparency,
             while bottom half turned completely transparent. Without dithering the back color is irrelevant.</para>
             <para><img src="../Help/Images/AlphaGradientArgb8888SilverA1.png" alt="Color hues with ARGB8888 pixel format, silver background and alpha threshold = 1"/>
             <br/>Silver background, alpha threshold = 1. Only the bottom line is completely transparent, otherwise the image preserved its original transparency,
             so the result is practically the same as the original image. Without dithering the back color is irrelevant.</para>
             <para><img src="../Help/Images/AlphaGradientArgb8888SilverDitheredA1.png" alt="Color hues with ARGB8888 pixel format, silver background, alpha threshold = 1, using Bayer 8x8 ordered dithering"/>
             <br/>Silver background, alpha threshold = 1, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering.
             As dithering does not support partial transparency only the bottom line is transparent, otherwise the image was blended with back color.
             No dithering pattern appeared in the result due to the auto <see cref="M:KGySoft.Drawing.Imaging.OrderedDitherer.ConfigureStrength(System.Single)">strength</see> calibration.
             This also demonstrates why dithering is practically useless for true color results.</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldArgb8888lackA128.png" alt="Shield icon with ARGB8888 pixel format, black background and default alpha threshold"/>
             <br/>Default optional parameter values (black background, alpha threshold = 128). Without dithering the back color is irrelevant but pixels with alpha &lt; 128 turned completely transparent.</para>
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with ARGB8888 pixel format, silver background and alpha threshold = 1"/>
             <br/>Silver background, alpha threshold = 1. Practically the same as the original image. Without dithering the back color is irrelevant.</para>
             <para><img src="../Help/Images/ShieldArgb8888SilverA1Dithered.png" alt="Shield icon with ARGB8888 pixel format, silver background, alpha threshold = 1, using Floyd-Steinberg dithering"/>
             <br/>Silver background, alpha threshold = 1, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering.
             As dithering does not support partial transparency alpha pixels were blended with back color. No dithering pattern appeared in the result as there was no quantizing error during the process.
             This also demonstrates why dithering is practically useless for true color results.</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb888(System.Drawing.Color)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb888(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb888(KGySoft.Drawing.Imaging.Color32,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 24-bit ones where each color component is encoded in 8 bits.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_Rgb888.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="backColor">Colors with alpha (transparency) will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
             is considered completely transparent. Though the quantizer returned from this method never returns alpha colors, it can be relevant in some cases, for example when drawing a partially
             transparent bitmap onto a solid background. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
             whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 24-bit ones where each color component is encoded in 8 bits.</returns>
             <remarks>
             <para>The returned <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance can return up to 256<sup>3</sup> (16,777,216) colors.
             It practically just removes transparency and does not change colors without alpha.</para>
             <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format24bppRgb"/> pixel format.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToRgb888(IReadWriteBitmapData source, Color32 backColor = default)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.Rgb888(backColor);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format24bppRgb, quantizer);
            
                 // b.) when converting to Format24bppRgb format, this produces the same result:
                 return source.Clone(KnownPixelFormat.Format24bppRgb, backColor);
            
                 // c.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 source.Quantize(quantizer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientRgb888Black.png" alt="Color hues with black background"/>
             <br/>Default (black) background</para>
             <para><img src="../Help/Images/AlphaGradientRgb888Silver.png" alt="Color hues with silver background"/>
             <br/>Silver background</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldRgb888Black.png" alt="Shield icon with black background"/>
             <br/>Default (black) background</para>
             <para><img src="../Help/Images/ShieldRgb888Silver.png" alt="Shield icon with silver background"/>
             <br/>Silver background</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb565(System.Drawing.Color)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb565(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb565(KGySoft.Drawing.Imaging.Color32,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 16-bit ones where red,
             green and blue components are encoded in 5, 6 and 5 bits, respectively.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_Rgb565.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="backColor">Colors with alpha (transparency) will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
             is considered completely transparent. Though the quantizer returned from this method never returns alpha colors, it can be relevant in some cases, for example when drawing a partially
             transparent bitmap onto a solid background. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
             whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 16-bit ones where red,
             green and blue components are encoded in 5, 6 and 5 bits, respectively.</returns>
             <remarks>
             <para>The returned <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance can return up to 65,536 colors.</para>
             <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppRgb565"/> pixel format.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToRgb565(IReadWriteBitmapData source, Color backColor = default, IDitherer ditherer = null)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.Rgb565(backColor);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format16bppRgb565, quantizer, ditherer);
            
                 // b.) when converting to Format16bppRgb565 format without dithering, this produces the same result:
                 if (ditherer == null)
                     return source.Clone(KnownPixelFormat.Format16bppRgb565, backColor);
            
                 // c.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 if (ditherer == null)
                     source.Quantize(quantizer);
                 else
                     source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientRgb565Black.png" alt="Color hues with RGB565 pixel format and black background"/>
             <br/>Default optional parameter values (black background)</para>
             <para><img src="../Help/Images/AlphaGradientRgb565Silver.png" alt="Color hues with RGB565 pixel format and silver background"/>
             <br/>Silver background</para>
             <para><img src="../Help/Images/AlphaGradientRgb565SilverDithered.png" alt="Color hues with RGB565 pixel format, silver background and Bayer 8x8 ordered dithering"/>
             <br/>Silver background, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldRgb565Black.png" alt="Shield icon with RGB565 pixel format and black background"/>
             <br/>Default optional parameter values (black background)</para>
             <para><img src="../Help/Images/ShieldRgb565Silver.png" alt="Shield icon with RGB565 pixel format and silver background"/>
             <br/>Silver background</para>
             <para><img src="../Help/Images/ShieldRgb565SilverDithered.png" alt="Shield icon with RGB565 pixel format, silver background and Floyd-Steinberg dithering"/>
             <br/>Silver background, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb555(System.Drawing.Color)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb555(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb555(KGySoft.Drawing.Imaging.Color32,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 16-bit ones where each color component is encoded in 5 bits.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_Rgb555.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="backColor">Colors with alpha (transparency) will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
             is considered completely transparent. Though the quantizer returned from this method never returns alpha colors, it can be relevant in some cases, for example when drawing a partially
             transparent bitmap onto a solid background. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
             whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 16-bit ones where each color component is encoded in 5 bits.</returns>
             <remarks>
             <para>The returned <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance can return up to 32,768 colors.</para>
             <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppRgb555"/> pixel format.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToRgb555(IReadWriteBitmapData source, Color32 backColor = default, IDitherer ditherer = null)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.Rgb555(backColor);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format16bppRgb555, quantizer, ditherer);
            
                 // b.) when converting to Format16bppRgb555 format without dithering, this produces the same result:
                 if (ditherer == null)
                     return source.Clone(KnownPixelFormat.Format16bppRgb555, backColor);
            
                 // c.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 if (ditherer == null)
                     source.Quantize(quantizer);
                 else
                     source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientRgb555Black.png" alt="Color hues with RGB555 pixel format and black background"/>
             <br/>Default optional parameter values (black background)</para>
             <para><img src="../Help/Images/AlphaGradientRgb555Silver.png" alt="Color hues with RGB555 pixel format and silver background"/>
             <br/>Silver background</para>
             <para><img src="../Help/Images/AlphaGradientRgb555SilverDithered.png" alt="Color hues with RGB555 pixel format, silver background and Bayer 8x8 ordered dithering"/>
             <br/>Silver background, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldRgb555Black.png" alt="Shield icon with RGB555 pixel format and black background"/>
             <br/>Default optional parameter values (black background)</para>
             <para><img src="../Help/Images/ShieldRgb555Silver.png" alt="Shield icon with RGB555 pixel format and silver background"/>
             <br/>Silver background</para>
             <para><img src="../Help/Images/ShieldRgb555SilverDithered.png" alt="Shield icon with RGB555 pixel format, silver background and Floyd-Steinberg dithering"/>
             <br/>Silver background, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Argb1555(System.Drawing.Color,System.Byte)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Argb1555(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Argb1555(KGySoft.Drawing.Imaging.Color32,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 16-bit ones where alpha, red,
             green and blue components are encoded in 1, 5, 5 and 5 bits, respectively.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_Argb1555.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="backColor">Colors with alpha (transparency), whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field
             is equal to or greater than <paramref name="alphaThreshold"/> will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color is considered transparent.
             If 0, then the quantized colors will never be transparent. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 16-bit ones where each color component is encoded in 5 bits.</returns>
             <remarks>
             <para>The returned <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance can return up to 32,768 colors, and a transparent color.</para>
             <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppArgb1555"/> pixel format.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToArgb1555(IReadWriteBitmapData source, Color32 backColor = default,
                 byte alphaThreshold = 128, IDitherer ditherer = null)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.Argb1555(backColor, alphaThreshold);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format16bppArgb1555, quantizer, ditherer);
            
                 // b.) when converting to Format16bppArgb1555 format without dithering, this produces the same result:
                 if (ditherer == null)
                     return source.Clone(KnownPixelFormat.Format16bppArgb1555, backColor, alphaThreshold);
            
                 // c.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 if (ditherer == null)
                     source.Quantize(quantizer);
                 else
                     source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientArgb1555BlackA128.png" alt="Color hues with ARGB1555 pixel format, black background and default alpha threshold"/>
             <br/>Default optional parameter values (black background, alpha threshold = 128). The bottom half of the image is transparent.</para>
             <para><img src="../Help/Images/AlphaGradientArgb1555SilverA1.png" alt="Color hues with ARGB1555 pixel format, silver background and alpha threshold = 1"/>
             <br/>Silver background, alpha threshold = 1. Only the bottom line is transparent.</para>
             <para><img src="../Help/Images/AlphaGradientArgb1555SilverDithered.png" alt="Color hues with ARGB1555 pixel format, silver background, default alpha threshold and Bayer 8x8 ordered dithering"/>
             <br/>Silver background, default alpha threshold, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering. The bottom half of the image is transparent.</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldArgb1555BlackA128.png" alt="Shield icon with ARGB1555 pixel format, black background and default alpha threshold"/>
             <br/>Default optional parameter values (black background, alpha threshold = 128)</para>
             <para><img src="../Help/Images/ShieldArgb1555SilverA1.png" alt="Shield icon with ARGB1555 pixel format, silver background and alpha threshold = 1"/>
             <br/>Silver background, alpha threshold = 1</para>
             <para><img src="../Help/Images/ShieldArgb1555SilverA128Dithered.png" alt="Shield icon with ARGB1555 pixel format, silver background, default alpha threshold and Floyd-Steinberg dithering"/>
             <br/>Silver background, default alpha threshold, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb332(System.Drawing.Color,System.Boolean)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb332(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb332(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 8-bit ones where red,
             green and blue components are encoded in 3, 3 and 2 bits, respectively.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_Rgb332.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="backColor">Colors with alpha (transparency) will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="directMapping"><see langword="true"/> to map any color directly to an index instead of searching for a nearest color,
             which is very fast but without dithering may end up in a noticeably poorer result and higher contrast;
             <see langword="false"/> to perform a lookup to determine nearest colors, which may be slower but more accurate. This parameter is optional.
             <br/>Default value: <see langword="false"/>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
             is considered completely transparent. Though the quantizer returned from this method never returns alpha colors, it can be relevant in some cases, for example when drawing a partially
             transparent bitmap onto a solid background. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
             whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 8-bit ones where red,
             green and blue components are encoded in 3, 3 and 2 bits, respectively.</returns>
             <remarks>
             <para>If <paramref name="directMapping"/> is <see langword="true"/>, then the result of the quantizing may have a higher contrast than without direct color mapping,
             though this can be compensated if the returned quantizer is combined with an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/>. Other ditherers preserve the effect of the <paramref name="directMapping"/> parameter.</para>
             <para>The returned <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance can return up to 256 colors.</para>
             <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format8bppIndexed"/> pixel format.</para>
             <para>The palette of this quantizer does not contain the transparent color.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToRgb332(IReadWriteBitmapData source, Color32 backColor = default, bool directMapping = false, IDitherer ditherer = null)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.Rgb332(backColor, directMapping);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format8bppIndexed, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 if (ditherer == null)
                     source.Quantize(quantizer);
                 else
                     source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientRgb332Black.gif" alt="Color hues with RGB332 palette and black background using nearest color lookup"/>
             <br/>Default optional parameter values (black background, nearest color lookup)</para>
             <para><img src="../Help/Images/AlphaGradientRgb332Silver.gif" alt="Color hues with RGB332 palette and silver background using nearest color lookup"/>
             <br/>Silver background, nearest color lookup</para>
             <para><img src="../Help/Images/AlphaGradientRgb332SilverDM.gif" alt="Color hues with RGB332 palette and silver background using direct color mapping"/>
             <br/>Silver background, direct color mapping</para>
             <para><img src="../Help/Images/AlphaGradientRgb332SilverDMDitheredB8.gif" alt="Color hues with RGB332 palette, silver background, using direct color mapping and Bayer 8x8 ordered dithering"/>
             <br/>Silver background, direct color mapping, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesRgb332.gif" alt="Grayscale color shades with RGB332 palette using nearest color lookup"/>
             <br/>Nearest color lookup</para>
             <para><img src="../Help/Images/GrayShadesRgb332Direct.gif" alt="Grayscale color shades with RGB332 palette using direct color mapping"/>
             <br/>Direct color mapping</para>
             <para><img src="../Help/Images/GrayShadesRgb332DitheredB8.gif" alt="Grayscale color shades with RGB332 palette, using nearest color lookup and Bayer 8x8 ordered dithering"/>
             <br/>Nearest color lookup, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para>
             <para><img src="../Help/Images/GrayShadesRgb332DirectDitheredB8.gif" alt="Grayscale color shades with RGB332 palette, using direct color mapping and Bayer 8x8 ordered dithering"/>
             <br/>Direct color mapping, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldRgb332Black.gif" alt="Shield icon with RGB332 palette and black background using nearest color lookup"/>
             <br/>Default optional parameter values (nearest color lookup)</para>
             <para><img src="../Help/Images/ShieldRgb332Silver.gif" alt="Shield icon with RGB332 palette and silver background using nearest color lookup"/>
             <br/>Silver background, nearest color lookup</para>
             <para><img src="../Help/Images/ShieldRgb332SilverDM.gif" alt="Shield icon with RGB332 palette and silver background using direct color mapping"/>
             <br/>Silver background, direct color mapping</para>
             <para><img src="../Help/Images/ShieldRgb332SilverDMDithered.gif" alt="Shield icon with RGB332 palette, silver background, using direct color mapping and Floyd-Steinberg dithering"/>
             <br/>Silver background, direct color mapping, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Lena.png" alt="Test image &quot;Lena&quot;"/>
             <br/>Original test image "Lena"</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/LenaRgb332.gif" alt="Test image &quot;Lena&quot; with RGB332 palette using nearest color lookup"/>
             <br/>Nearest color lookup</para>
             <para><img src="../Help/Images/LenaRgb332DM.gif" alt="Test image &quot;Lena&quot; with RGB332 palette using direct color mapping"/>
             <br/>Direct color mapping</para>
             <para><img src="../Help/Images/LenaRgb332DMFloydSteinberg.gif" alt="Test image &quot;Lena&quot; with RGB332 palette using direct color mapping and Floyd-Steinberg dithering"/>
             <br/>Direct color mapping, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
             <seealso cref="O:KGySoft.Drawing.Imaging.Palette.Rgb332">Palette.Rgb332 Methods</seealso>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(System.Drawing.Color)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 8-bit grayscale ones of 256 shades.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_Grayscale.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="backColor">Colors with alpha (transparency) will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
             is considered completely transparent. Though the quantizer returned from this method never returns alpha colors, it can be relevant in some cases, for example when drawing a partially
             transparent bitmap onto a solid background. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
             whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 8-bit grayscale ones.</returns>
             <remarks>
             <para>The returned quantizer uses direct mapping to grayscale colors based on human perception, which makes quantizing very fast while it is very accurate at the same time.</para>
             <para>The returned <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance can return up to 256 possible shades of gray.</para>
             <para>The palette of this quantizer does not contain the transparent color. To make a bitmap data grayscale with transparency you can use the
             <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.ToGrayscale(KGySoft.Drawing.Imaging.IReadableBitmapData)">ToGrayscale</see> and <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.MakeGrayscale(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.IDitherer)">MakeGrayscale</see> extension methods.</para>
             <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format8bppIndexed"/> and <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format8bppGrayScale"/> pixel formats.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToGrayscale(IReadWriteBitmapData source, Color32 backColor = default)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.Grayscale(backColor);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format8bppIndexed, quantizer);
                 
                 // b.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 source.Quantize(quantizer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientGray8bppBlack.gif" alt="Grayscale color hues with 8 BPP grayscale palette and black background"/>
             <br/>Default (black) background</para>
             <para><img src="../Help/Images/AlphaGradientGray8bppSilver.gif" alt="Graayscale color hues with 8 BPP grayscale palette and silver background"/>
             <br/>Silver background</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldGray8bppBlack.gif" alt="Shield icon with 8 BPP grayscale palette and black background"/>
             <br/>Default (black) background</para>
             <para><img src="../Help/Images/ShieldGray8bppSilver.gif" alt="Shield icon with 8 BPP grayscale palette and silver background"/>
             <br/>Silver background</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
             <seealso cref="O:KGySoft.Drawing.Imaging.Palette.Grayscale256">Palette.Grayscale256 Methods</seealso>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale16(System.Drawing.Color,System.Boolean)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale16(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale16(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 4-bit grayscale ones of 16 shades.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_Grayscale16.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="backColor">Colors with alpha (transparency) will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="directMapping"><see langword="true"/> to map any color directly to an index instead of searching for a nearest color,
             which is very fast but may end up in a result of a bit higher contrast than the original image;
             <see langword="false"/> to perform a lookup to determine nearest colors, which may be slower but more accurate. This parameter is optional.
             <br/>Default value: <see langword="false"/>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
             is considered completely transparent. Though the quantizer returned from this method never returns alpha colors, it can be relevant in some cases, for example when drawing a partially
             transparent bitmap onto a solid background. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
             whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 4-bit grayscale ones.</returns>
             <remarks>
             <para>If <paramref name="directMapping"/> is <see langword="true"/>, then the result of the quantizing may have a higher contrast than without direct color mapping,
             though this can be compensated if the returned quantizer is combined with an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/>. Other ditherers preserve the effect of the <paramref name="directMapping"/> parameter.</para>
             <para>The returned <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance can return up to 16 possible shades of gray.</para>
             <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format4bppIndexed"/> pixel format.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToGrayscale16(IReadWriteBitmapData source, Color32 backColor = default, bool directMapping = false, IDitherer ditherer = null)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.Grayscale16(backColor, directMapping);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format4bppIndexed, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 if (ditherer == null)
                     source.Quantize(quantizer);
                 else
                     source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientGray4bppBlack.gif" alt="Color hues with 4 BPP grayscale palette and black background using nearest color lookup"/>
             <br/>Default optional parameter values (black background, nearest color lookup)</para>
             <para><img src="../Help/Images/AlphaGradientGray4bppSilver.gif" alt="Color hues with 4 BPP grayscale palette and silver background using nearest color lookup"/>
             <br/>Silver background, nearest color lookup</para>
             <para><img src="../Help/Images/AlphaGradientGray4bppSilverDirect.gif" alt="Color hues with 4 BPP grayscale palette and silver background using direct color mapping"/>
             <br/>Silver background, direct color mapping</para>
             <para><img src="../Help/Images/AlphaGradientGray4bppSilverDitheredB8.gif" alt="Color hues with 4 BPP grayscale palette, silver background, using nearest color lookup and Bayer 8x8 ordered dithering"/>
             <br/>Silver background, nearest color lookup, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades4bpp.gif" alt="Grayscale color shades with 4 BPP grayscale palette using nearest color lookup"/>
             <br/>Nearest color lookup</para>
             <para><img src="../Help/Images/GrayShades4bppDirect.gif" alt="Grayscale color shades with 2 BPP grayscale palette using direct color mapping"/>
             <br/>Direct color mapping</para>
             <para><img src="../Help/Images/GrayShades4bppDitheredB8.gif" alt="Grayscale color shades with 4 BPP grayscale palette, using nearest color lookup and Bayer 8x8 ordered dithering"/>
             <br/>Nearest color lookup, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldGray4bppBlack.gif" alt="Shield icon with 4 BPP grayscale palette and black background using nearest color lookup"/>
             <br/>Default optional parameter values (nearest color lookup)</para>
             <para><img src="../Help/Images/ShieldGray4bppSilver.gif" alt="Shield icon with 4 BPP grayscale palette and silver background using nearest color lookup"/>
             <br/>Silver background, nearest color lookup</para>
             <para><img src="../Help/Images/ShieldGray4bppSilverDirect.gif" alt="Shield icon with 4 BPP grayscale palette and silver background using direct color mapping"/>
             <br/>Silver background, direct color mapping</para>
             <para><img src="../Help/Images/ShieldGray4bppSilverDirectDitheredFS.gif" alt="Shield icon with 4 BPP grayscale palette, silver background, using direct color mapping and Floyd-Steinberg dithering"/>
             <br/>Silver background, direct color mapping, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
             <seealso cref="O:KGySoft.Drawing.Imaging.Palette.Grayscale16">Palette.Grayscale16 Methods</seealso>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale4(System.Drawing.Color,System.Boolean)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale4(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale4(KGySoft.Drawing.Imaging.Color32,System.Boolean,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 2-bit grayscale ones of 4 shades.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_Grayscale4.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="backColor">Colors with alpha (transparency) will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="directMapping"><see langword="true"/> to map any color directly to an index instead of searching for a nearest color,
             which is very fast but may end up in a result of a bit higher contrast than the original image;
             <see langword="false"/> to perform a lookup to determine nearest colors, which may be slower but more accurate. This parameter is optional.
             <br/>Default value: <see langword="false"/>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
             is considered completely transparent. Though the quantizer returned from this method never returns alpha colors, it can be relevant in some cases, for example when drawing a partially
             transparent bitmap onto a solid background. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
             whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors to 2-bit grayscale ones.</returns>
             <remarks>
             <para>If <paramref name="directMapping"/> is <see langword="true"/>, then the result of the quantizing may have a higher contrast than without direct color mapping,
             though this can be compensated if the returned quantizer is combined with an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/>. Other ditherers preserve the effect of the <paramref name="directMapping"/> parameter.</para>
             <para>The returned <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance can return up to 4 possible shades of gray.</para>
             <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format4bppIndexed"/> pixel format, though only 4 palette entries are used instead of the possible maximum of 16.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToGrayscale4(IReadWriteBitmapData source, Color32 backColor = default, bool directMapping = false, IDitherer ditherer = null)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.Grayscale4(backColor, directMapping);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format4bppIndexed, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 if (ditherer == null)
                     source.Quantize(quantizer);
                 else
                     source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientGray2bppBlack.gif" alt="Color hues with 2 BPP grayscale palette and black background using nearest color lookup"/>
             <br/>Default optional parameter values (black background, nearest color lookup)</para>
             <para><img src="../Help/Images/AlphaGradientGray2bppSilver.gif" alt="Color hues with 2 BPP grayscale palette and silver background using nearest color lookup"/>
             <br/>Silver background, nearest color lookup</para>
             <para><img src="../Help/Images/AlphaGradientGray2bppSilverDirect.gif" alt="Color hues with 2 BPP grayscale palette and silver background using direct color mapping"/>
             <br/>Silver background, direct color mapping</para>
             <para><img src="../Help/Images/AlphaGradientGray2bppSilverDitheredB8.gif" alt="Color hues with 2 BPP grayscale palette, silver background, using nearest color lookup and Bayer 8x8 ordered dithering"/>
             <br/>Silver background, nearest color lookup, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades2bpp.gif" alt="Grayscale color shades with 2 BPP grayscale palette using nearest color lookup"/>
             <br/>Nearest color lookup</para>
             <para><img src="../Help/Images/GrayShades2bppDirect.gif" alt="Grayscale color shades with 2 BPP grayscale palette using direct color mapping"/>
             <br/>Direct color mapping</para>
             <para><img src="../Help/Images/GrayShades2bppDitheredB8.gif" alt="Grayscale color shades with 2 BPP grayscale palette, using nearest color lookup and Bayer 8x8 ordered dithering"/>
             <br/>Nearest color lookup, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldGray2bppBlack.gif" alt="Shield icon with 2 BPP grayscale palette and black background using nearest color lookup"/>
             <br/>Default optional parameter values (nearest color lookup)</para>
             <para><img src="../Help/Images/ShieldGray2bppSilver.gif" alt="Shield icon with 2 BPP grayscale palette and silver background using nearest color lookup"/>
             <br/>Silver background, nearest color lookup</para>
             <para><img src="../Help/Images/ShieldGray2bppSilverDirect.gif" alt="Shield icon with 2 BPP grayscale palette and silver background using direct color mapping"/>
             <br/>Silver background, direct color mapping</para>
             <para><img src="../Help/Images/ShieldGray2bppSilverDirectDitheredFS.gif" alt="Shield icon with 2 BPP grayscale palette, silver background, using direct color mapping and Floyd-Steinberg dithering"/>
             <br/>Silver background, direct color mapping, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Cameraman.png" alt="Test image &quot;Cameraman&quot;"/>
             <br/>Original test image "Cameraman"</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/Cameraman2bpp.gif" alt="Test image &quot;Cameraman&quot; with 2 BPP grayscale palette using nearest color lookup"/>
             <br/>Nearest color lookup</para>
             <para><img src="../Help/Images/Cameraman2bppDirect.gif" alt="Test image &quot;Cameraman&quot; with 2 BPP grayscale palette using direct color mapping"/>
             <br/>Direct color mapping</para>
             <para><img src="../Help/Images/Cameraman2bppDirectDitheredFS.gif" alt="Test image &quot;Cameraman&quot; with 2 BPP grayscale palette using direct color mapping and Floyd-Steinberg dithering"/>
             <br/>Direct color mapping, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
             <seealso cref="O:KGySoft.Drawing.Imaging.Palette.Grayscale4">Palette.Grayscale4 Methods</seealso>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(System.Drawing.Color,System.Byte)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that quantizes every color to black or white.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_BlackAndWhite.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="backColor">Colors with alpha (transparency) will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="whiteThreshold">Specifies a threshold value for the brightness of the colors, under which a quantized color is considered black.
             If 0, then the complete result will be white. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
             is considered completely transparent. Though the quantizer returned from this method never returns alpha colors, it can be relevant in some cases, for example when drawing a partially
             transparent bitmap onto a solid background. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
             whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that quantizes every color to black or white.</returns>
             <remarks>
             <para>If the returned quantizer is combined with an <see cref="T:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer"/>, then the effect of the <paramref name="whiteThreshold"/> parameter is
             mostly compensated. Other ditherers preserve the effect of the <paramref name="whiteThreshold"/> parameter.</para>
             <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format1bppIndexed"/> pixel format.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToBlackAndWhite(IReadWriteBitmapData source, Color32 backColor = default,
                 byte whiteThreshold = 128, IDitherer ditherer = null)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.BlackAndWhite(backColor, whiteThreshold);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format1bppIndexed, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 if (ditherer == null)
                     source.Quantize(quantizer);
                 else
                     source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientBWBlack.gif" alt="Color hues with black and white palette and black background"/>
             <br/>Default optional parameter values (black background)</para>
             <para><img src="../Help/Images/AlphaGradientBWSilver.gif" alt="Color hues with black and white palette and silver background"/>
             <br/>Silver background</para>
             <para><img src="../Help/Images/AlphaGradientBWSilverDitheredB8.gif" alt="Color hues with black and white palette, silver background, using Bayer 8x8 ordered dithering"/>
             <br/>Silver background, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBW.gif" alt="Grayscale color shades with black and white palette"/>
             <br/>Default optional parameter values</para>
             <para><img src="../Help/Images/GrayShadesBWThr32.gif" alt="Grayscale color shades with black and white palette, white threshold = 32"/>
             <br/>White threshold = 32</para>
             <para><img src="../Help/Images/GrayShadesBWThr224.gif" alt="Grayscale color shades with black and white palette, white threshold = 224"/>
             <br/>White threshold = 224</para>
             <para><img src="../Help/Images/GrayShadesBWDitheredB8.gif" alt="Grayscale color shades with black and white palette, using Bayer 8x8 ordered dithering"/>
             <br/>Default white threshold, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldBWBlack.gif" alt="Shield icon with black and white palette and black background"/>
             <br/>Default optional parameter values (black background)</para>
             <para><img src="../Help/Images/ShieldBWSilver.gif" alt="Shield icon with black and white palette and silver background"/>
             <br/>Silver background</para>
             <para><img src="../Help/Images/ShieldBWSilverDitheredFS.gif" alt="Shield icon with black and white palette, silver background, using Floyd-Steinberg dithering"/>
             <br/>Silver background, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Cameraman.png" alt="Test image &quot;Cameraman&quot;"/>
             <br/>Original test image "Cameraman"</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/CameramanBW.gif" alt="Test image &quot;Cameraman&quot; with black and white palette"/>
             <br/>Default optional parameter values</para>
             <para><img src="../Help/Images/CameramanBWThr96.gif" alt="Test image &quot;Cameraman&quot; with black and white palette, white threshold = 96"/>
             <br/>White threshold = 96</para>
             <para><img src="../Help/Images/CameramanBWThr96DitheredB8.gif" alt="Test image &quot;Cameraman&quot; with black and white palette, using Bayer 8x8 dithering and white threshold = 96"/>
             <br/>White threshold = 96, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering. The ordered dithering preserves the white threshold value.</para>
             <para><img src="../Help/Images/CameramanBWThr96DitheredFS.gif" alt="Test image &quot;Cameraman&quot; with black and white palette, using Floyd-Steinberg dithering and white threshold = 96"/>
             <br/>White threshold = 96, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering. The error diffusion dithering compensates the white threshold value.</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
             <seealso cref="O:KGySoft.Drawing.Imaging.Palette.BlackAndWhite">Palette.BlackAndWhite Methods</seealso>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(System.Drawing.Color,System.Byte)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the system default 8-bit palette.
             This palette contains the 16 standard <a href="https://www.w3.org/TR/REC-html40/types.html#h-6.5" target="_blank">basic sRGB colors</a>,
             the "web-safe" palette of 216 colors as well as 24 transparent entries.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_SystemDefault8BppPalette.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="backColor">Colors with alpha (transparency), whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field
             is equal to or greater than <paramref name="alphaThreshold"/> will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color is considered transparent.
             If 0, then the quantized colors will never be transparent. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the system default 8-bit palette.</returns>
             <remarks>
             <para>The returned <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance can return up to 256 colors.
             Actually this amount is somewhat smaller because of some redundant entries in the palette.</para>
             <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format8bppIndexed"/> pixel format.</para>
             <para>The palette of this quantizer contains transparent entries.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDefault8Bpp(IReadWriteBitmapData source, Color32 backColor = default,
                 byte alphaThreshold = 128, IDitherer ditherer = null)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.SystemDefault8BppPalette(backColor, alphaThreshold);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format8bppIndexed, quantizer, ditherer);
            
                 // b.) when converting to Format8bppIndexed format without dithering, this produces the same result:
                 if (ditherer == null)
                     return source.Clone(KnownPixelFormat.Format8bppIndexed, backColor, alphaThreshold);
            
                 // c.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 if (ditherer == null)
                     source.Quantize(quantizer);
                 else
                     source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault8bppBlackA128.gif" alt="Color hues with system default 8 BPP palette, black background and default alpha threshold"/>
             <br/>Default optional parameter values (black background, alpha threshold = 128). The bottom half of the image is transparent.</para>
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverA1.gif" alt="Color hues with system default 8 BPP palette, silver background and alpha threshold = 1"/>
             <br/>Silver background, alpha threshold = 1. Only the bottom line is transparent.</para>
             <para><img src="../Help/Images/AlphaGradientDefault8bppSilverA128DitheredB8.gif" alt="Color hues with system default 8 BPP palette, silver background, default alpha threshold and Bayer 8x8 ordered dithering"/>
             <br/>Silver background, default alpha threshold, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering. The bottom half of the image is transparent.</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesDefault8bpp.gif" alt="Grayscale color shades with system default 8 BPP palette"/>
             <br/>Default optional parameter values</para>
             <para><img src="../Help/Images/GrayShadesDefault8bppDitheredB8.gif" alt="Grayscale color shades with system default 8 BPP palette using Bayer 8x8 ordered dithering"/>
             <br/><see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldDefault8bppBlack.gif" alt="Shield icon with system default 8 BPP palette"/>
             <br/>Default optional parameter values (black background, alpha threshold = 128)</para>
             <para><img src="../Help/Images/ShieldDefault8bppBlackDitheredB8.gif" alt="Shield icon with system default 8 BPP palette using Bayer 8x8 ordered dithering"/>
             <br/>Default background and alpha threshold, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para>
             <para><img src="../Help/Images/ShieldDefault8bppSilverA1DitheredFS.gif" alt="Shield icon with system default 8 BPP palette using silver background, alpha threshold = 1 and Floyd-Steinberg dithering"/>
             <br/>Silver background, alpha threshold = 1, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GirlWithAPearlEarring.png" alt="Test image &quot;Girl with a Pearl Earring&quot;"/>
             <br/>Original test image "Girl with a Pearl Earring"</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GirlWithAPearlEarringDefault8bppSrgb.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with system default 8 BPP palette, quantized in the sRGB color space"/>
             <br/>Default optional parameter values</para>
             <para><img src="../Help/Images/GirlWithAPearlEarringDefault8bppDitheredB8Srgb.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with system default 8 BPP palette, quantized in the sRGB color space using Bayer 8x8 ordered dithering"/>
             <br/><see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para>
             <para><img src="../Help/Images/GirlWithAPearlEarringDefault8bppDitheredFSSrgb.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with system default 8 BPP palette, quantized in the sRGB color space using Floyd-Steinberg dithering"/>
             <br/><see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
             <seealso cref="O:KGySoft.Drawing.Imaging.Palette.SystemDefault8BppPalette">Palette.SystemDefault8BppPalette Methods</seealso>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(System.Drawing.Color)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the system default 4-bit palette.
             This palette consists of the 16 standard <a href="https://www.w3.org/TR/REC-html40/types.html#h-6.5" target="_blank">basic sRGB colors</a>.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_SystemDefault4BppPalette.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="backColor">Colors with alpha (transparency) will be blended with this color before quantizing.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
             <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
             is considered completely transparent. Though the quantizer returned from this method never returns alpha colors, it can be relevant in some cases, for example when drawing a partially
             transparent bitmap onto a solid background. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
             whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
             <br/>Default value: <c>128</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the system default 4-bit palette.</returns>
             <remarks>
             <para>The returned <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance can return up to 16 colors.</para>
             <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format4bppIndexed"/> pixel format.</para>
             <para>The palette of this quantizer does not contain transparent entries.
             The palette consists of the 16 standard <a href="https://www.w3.org/TR/REC-html40/types.html#h-6.5" target="_blank">basic sRGB colors</a></para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToDefault4Bpp(IReadWriteBitmapData source, Color32 backColor = default, IDitherer ditherer = null)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.SystemDefault4BppPalette(backColor);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format8bppIndexed, quantizer, ditherer);
            
                 // b.) when converting to Format4bppIndexed format without dithering, this produces the same result:
                 if (ditherer == null)
                     return source.Clone(KnownPixelFormat.Format4bppIndexed, backColor);
            
                 // c.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 if (ditherer == null)
                     source.Quantize(quantizer);
                 else
                     source.Dither(quantizer, ditherer);
                 return source;
             } ]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientDefault4bppBlack.gif" alt="Color hues with system default 4 BPP palette and black background"/>
             <br/>Default optional parameter values (black background)</para>
             <para><img src="../Help/Images/AlphaGradientDefault4bppSilver.gif" alt="Color hues with system default 4 BPP palette and silver background"/>
             <br/>Silver background</para>
             <para><img src="../Help/Images/AlphaGradientDefault4bppSilverDitheredB8.gif" alt="Color hues with system default 4 BPP palette, using silver background and a stronger Bayer 8x8 ordered dithering"/>
             <br/>Silver background, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering with strength = 0.5</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesDefault4bpp.gif" alt="Grayscale color shades with system default 4 BPP palette"/>
             <br/>Default optional parameter values. The asymmetry is due to the uneven distribution of gray shades of this palette.</para>
             <para><img src="../Help/Images/GrayShadesDefault4bppDitheredB8.gif" alt="Grayscale color shades with system default 4 BPP palette using Bayer 8x8 ordered dithering"/>
             <br/><see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering using auto strength. Darker shades have banding.</para>
             <para><img src="../Help/Images/GrayShadesDefault4bppDitheredB8Str-5.gif" alt="Grayscale color shades with system default 4 BPP palette using a stronger Bayer 8x8 ordered dithering"/>
             <br/><see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering using strength = 0.5. Now there is no banding but white suffers from overdithering.</para>
             <para><img src="../Help/Images/GrayShadesDefault4bppDitheredB8Interpolated.gif" alt="Grayscale color shades with system default 4 BPP palette using 8x8 ordered dithering with interpolated ato strength"/>
             <br/><see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering using <see cref="F:KGySoft.Drawing.Imaging.AutoStrengthMode.Interpolated"/> auto strength strategy. Now there is neither banding nor overdithering for black or white colors.</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldDefault4bppBlack.gif" alt="Shield icon with system default 4 BPP palette and black background"/>
             <br/>Default optional parameter values (black background)</para>
             <para><img src="../Help/Images/ShieldDefault4bppSilver.gif" alt="Shield icon with system default 4 BPP palette and silver background"/>
             <br/>Silver background</para>
             <para><img src="../Help/Images/ShieldDefault4bppSilverDitheredFS.gif" alt="Shield icon with system default 4 BPP palette using silver background and Floyd-Steinberg dithering"/>
             <br/>Silver background, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
             <seealso cref="O:KGySoft.Drawing.Imaging.Palette.SystemDefault4BppPalette">Palette.SystemDefault4BppPalette Methods</seealso>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault1BppPalette(System.Drawing.Color)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the system default 1-bit palette.
            This palette consists of the black and white colors.
            </summary>
            <param name="backColor">Colors with alpha (transparency) will be blended with this color before quantizing.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color
            is considered completely transparent. Though the quantizer returned from this method never returns alpha colors, it can be relevant in some cases, for example when drawing a partially
            transparent bitmap onto a solid background. The source pixels, whose alpha value is below the <paramref name="alphaThreshold"/> will be skipped,
            whereas alpha pixels with higher opacity will be blended with the specified <paramref name="backColor"/>. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the system default 1-bit palette.</returns>
            <remarks>
            <para>The returned <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance can return up to 2 colors.
            This palette consists of the black and white colors.
            <note type="tip">To make sure that you use a black and white palette use the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">BlackAndWhite</see> method instead, which provides white threshold adjustment as well.
            <br/>For more details and examples see the <strong>Examples</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BlackAndWhite(KGySoft.Drawing.Imaging.Color32,System.Byte,System.Byte)">BlackAndWhite</see> method.</note></para>
            <para>This quantizer fits well for the <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format1bppIndexed"/> pixel format.</para>
            </remarks>
            <seealso cref="O:KGySoft.Drawing.Imaging.Palette.SystemDefault1BppPalette">Palette.SystemDefault1BppPalette Methods</seealso>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(System.Drawing.Color[],System.Drawing.Color,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the colors in the specified <paramref name="palette"/>.
            </summary>
            <param name="palette">The array of colors to be used by the returned instance.</param>
            <param name="backColor">Colors with alpha (transparency), which are considered opaque will be blended with this color before quantizing.
            The <see cref="P:System.Drawing.Color.A">Color.A</see> property of the background color is ignored. This parameter is optional.
            <br/>Default value: <see cref="F:System.Drawing.Color.Empty"/>, which has the same RGB values as <see cref="P:System.Drawing.Color.Black"/>.</param>
            <param name="alphaThreshold">If the specified <paramref name="palette"/> contains a transparent color,
            then specifies a threshold value for the <see cref="P:System.Drawing.Color.A">Color.A</see> property, under which a quantized color is considered transparent.
            If 0, then the quantized colors will never be transparent. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <note>For examples see the <strong>Examples</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)"/> overload.</note>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the colors in the specified <paramref name="palette"/>.</returns>
            <remarks>
            <para>The <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance returned by this method will use a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> internally, created from
            the colors specified in the <paramref name="palette"/> parameter. When quantizing, best matching colors might be looked up sequentially and results
            might be cached.</para>
            <para>If a color to be quantized can be mapped to a color index directly, then create a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance explicitly,
            specifying the custom mapping logic and use the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)"/> overload instead.</para>
            <para>If a color to be quantized can be transformed to a result color directly, and the quantized result is not needed to be an indexed image,
            then use the <see cref="O:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction">FromCustomFunction</see> overloads instead.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(System.Collections.Generic.IEnumerable{KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the colors in the specified <paramref name="palette"/>.
            </summary>
            <param name="palette">The array of colors to be used by the returned instance.</param>
            <param name="backColor">Colors with alpha (transparency), which are considered opaque will be blended with this color before quantizing.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="alphaThreshold">If the specified <paramref name="palette"/> contains a transparent color,
            then specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color is considered transparent.
            If 0, then the quantized colors will never be transparent. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the colors in the specified <paramref name="palette"/>.</returns>
            <remarks>
            <para>The <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance returned by this method will use a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> internally, created from
            the colors specified in the <paramref name="palette"/> parameter. When quantizing, best matching colors might be looked up sequentially and results
            might be cached.</para>
            <para>If a color to be quantized can be mapped to a color index directly, then create a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance explicitly,
            specifying the custom mapping logic and use the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)"/> overload instead.</para>
            <para>If a color to be quantized can be transformed to a result color directly, and the quantized result is not needed to be an indexed image,
            then use the <see cref="O:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction">FromCustomFunction</see> overloads instead.</para>
            <note>For examples see the <strong>Examples</strong> section of the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)"/> overload.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the specified <paramref name="palette"/>.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_FromCustomPalette.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="palette">The <see cref="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Palette"/> to be used by the returned instance.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the specified <paramref name="palette"/>.</returns>
             <remarks>
             <para>If a color to be quantized can be transformed to a result color directly, and the quantized result is not needed to be an indexed image,
             then use the <see cref="O:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction">FromCustomFunction</see> overloads instead.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToRgb111(IReadWriteBitmapData source,
                 Color backColor = default, IDitherer ditherer = null, WorkingColorSpace colorSpace = default)
             {
                 Color[] colors =
                 {
                     Color.Black, Color.Red, Color.Lime, Color.Blue,
                     Color.Magenta, Color.Yellow, Color.Cyan, Color.White
                 };
            
                 IQuantizer quantizer = PredefinedColorsQuantizer.FromCustomPalette(new Palette(colors, colorSpace, backColor));
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format4bppIndexed, quantizer, ditherer);
            
                 // b.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 if (ditherer == null)
                     source.Quantize(quantizer);
                 else
                     source.Dither(quantizer, ditherer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientRgb111Black.gif" alt="Color hues with RGB111 palette and black background"/>
             <br/>Default optional parameter values (black background). The bottom half of the result is black.</para>
             <para><img src="../Help/Images/AlphaGradientRgb111Silver.gif" alt="Color hues with RGB111 palette and silver background"/>
             <br/>Silver background. The bottom part of the result is white.</para>
             <para><img src="../Help/Images/AlphaGradientRgb111SilverDitheredB8.gif" alt="Color hues with RGB111 palette and silver background, using Bayer 8x8 ordered dithering"/>
             <br/>Silver background, <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShades.gif" alt="Grayscale color shades with different bit depths"/>
             <br/>Grayscale color shades</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GrayShadesBW.gif" alt="Grayscale color shades with RGB111 palette"/>
             <br/>Default optional parameter values</para>
             <para><img src="../Help/Images/GrayShadesBWDitheredB8.gif" alt="Grayscale color shades with RGB111 palette, using Bayer 8x8 ordered dithering"/>
             <br/><see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.Bayer8x8">Bayer 8x8</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldRgb111Black.gif" alt="Shield icon with RGB111 palette and black background"/>
             <br/>Default optional parameter values (black background)</para>
             <para><img src="../Help/Images/ShieldRgb111Silver.gif" alt="Shield icon with RGB111 palette and silver background"/>
             <br/>Silver background</para>
             <para><img src="../Help/Images/ShieldRgb111SilverDitheredFS.gif" alt="Shield icon with RGB111 palette, silver background, using Floyd-Steinberg dithering"/>
             <br/>Silver background, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/GirlWithAPearlEarring.png" alt="Test image &quot;Girl with a Pearl Earring&quot;"/>
             <br/>Original test image "Girl with a Pearl Earring"</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/GirlWithAPearlEarringRgb111Srgb.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with RGB111 palette, quantized in the sRGB color space"/>
             <br/>Default optional parameter values</para>
             <para><img src="../Help/Images/GirlWithAPearlEarringRgb111DitheredFSSrgb.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with RGB111 palette, quantized in the sRGB color space using Floyd-Steinberg dithering"/>
             <br/><see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para>
             <para><img src="../Help/Images/GirlWithAPearlEarringRgb111Linear.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with RGB111 palette, quantized in the linear color space"/>
             <br/><see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/> color space</para>
             <para><img src="../Help/Images/GirlWithAPearlEarringRgb111DitheredFSLinear.gif" alt="Test image &quot;Girl with a Pearl Earring&quot; with RGB111 palette, quantized in the linear color space using Floyd-Steinberg dithering"/>
             <br/><see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/> color space, <see cref="P:KGySoft.Drawing.Imaging.ErrorDiffusionDitherer.FloydSteinberg">Floyd-Steinberg</see> dithering</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},System.Drawing.Color,KGySoft.Drawing.Imaging.KnownPixelFormat,System.Byte)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.KnownPixelFormat,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.KnownPixelFormat,System.Byte)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the custom quantizer function specified in the <paramref name="quantizingFunction"/> parameter.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_FromCustomFunction.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="quantizingFunction">A delegate that specifies the custom quantizing logic. It must be thread-safe for parallel invoking, and it is expected to be fast.
             The results returned by the delegate are not cached.</param>
             <param name="backColor">Colors with alpha (transparency), which are considered opaque will be blended with this color before invoking the <paramref name="quantizingFunction"/> delegate.
             The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored.</param>
             <param name="pixelFormatHint">The <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> value that the <see cref="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.PixelFormatHint"/> property of the returned instance will return. This parameter is optional.
             <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format24bppRgb"/>, which is valid only if <paramref name="alphaThreshold"/> has the default zero value.</param>
             <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color is considered transparent.
             If 0, then even the completely transparent colors will be blended with <paramref name="backColor"/> before invoking the <paramref name="quantizingFunction"/> delegate. This parameter is optional.
             <br/>Default value: <c>0</c>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the custom quantizer function specified in the <paramref name="quantizingFunction"/> parameter.</returns>
             <remarks>
             <para>The quantizer returned by this method does not have a palette. If you need to create an indexed result using a custom mapping function that
             uses up to 256 different colors, then create a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance specifying a custom function and call the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)"/> method instead.</para>
             <para>This overload never calls the <paramref name="quantizingFunction"/> delegate with a color with alpha. Depending on <paramref name="alphaThreshold"/> either a completely
             transparent color will be returned or the color will be blended with <paramref name="backColor"/> before invoking the delegate.
             In order to allow invoking <paramref name="quantizingFunction"/> with alpha colors use the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.KnownPixelFormat)"/>
             or <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,System.Byte,System.Boolean,KGySoft.Drawing.Imaging.KnownPixelFormat)"/> overloads instead.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToGrayscaleOpaque(IReadWriteBitmapData source, Color32 backColor = default)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.FromCustomFunction(c => c.ToGray(), backColor);
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format24bppRgb, quantizer);
            
                 // b.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 source.Quantize(quantizer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientGray8bppBlack.gif" alt="Grayscale color hues with black background"/>
             <br/>Default (black) background</para>
             <para><img src="../Help/Images/AlphaGradientGray8bppSilver.gif" alt="Graayscale color hues with silver background"/>
             <br/>Silver background</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldGray8bppBlack.gif" alt="Grayscale shield icon with black background"/>
             <br/>Default (black) background</para>
             <para><img src="../Help/Images/ShieldGray8bppSilver.gif" alt="Grayscale shield icon with silver background"/>
             <br/>Silver background</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.KnownPixelFormat)">
             <summary>
             Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the custom quantizer function specified in the <paramref name="quantizingFunction"/> parameter.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Imaging_PredefinedColorsQuantizer_FromCustomFunction_2.htm">online help</a> for an example with images.</div>
             </summary>
             <param name="quantizingFunction">A delegate that specifies the custom quantizing logic. It must be thread-safe for parallel invoking, and it is expected to be fast.
             The results returned by the delegate are not cached.</param>
             <param name="pixelFormatHint">The <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> value that the <see cref="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.PixelFormatHint"/> property of the returned instance will return. This parameter is optional.
             <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/>.</param>
             <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the custom quantizer function specified in the <paramref name="quantizingFunction"/> parameter.</returns>
             <remarks>
             <para>The quantizer returned by this method does not have a palette. If you need to create an indexed result using a custom mapping function that
             uses up to 256 different colors, then create a <see cref="T:KGySoft.Drawing.Imaging.Palette"/> instance specifying a custom function and call the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)"/> method instead.</para>
             <para>This overload always calls the <paramref name="quantizingFunction"/> delegate without preprocessing the input colors.
             In order to pass only opaque colors to the <paramref name="quantizingFunction"/> delegate use the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.KnownPixelFormat,System.Byte)"/> overload instead.</para>
             <para>This overload always creates a quantizer with black <see cref="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BackColor"/> and zero <see cref="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.AlphaThreshold"/>. If <paramref name="quantizingFunction"/> can return colors with alpha,
             then the background color and alpha threshold are relevant only when this quantizer is used together with an <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/>, which does not support partial transparency.
             Use the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,System.Byte,System.Boolean,KGySoft.Drawing.Imaging.KnownPixelFormat)"/> overload to specify the <see cref="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BackColor"/> and <see cref="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.AlphaThreshold"/> properties.</para>
             </remarks>
             <example>
             The following example demonstrates how to use the quantizer returned by this method:
             <code lang="C#"><![CDATA[
             public static IReadWriteBitmapData ToGrayscalePreserveAlpha(IReadWriteBitmapData source)
             {
                 IQuantizer quantizer = PredefinedColorsQuantizer.FromCustomFunction(c => c.ToGray());
            
                 // a.) this solution returns a new bitmap data and does not change the original one:
                 return source.Clone(KnownPixelFormat.Format32bppArgb, quantizer);
            
                 // b.) alternatively, you can perform the quantizing directly on the source bitmap data:
                 source.Quantize(quantizer);
                 return source;
             }]]></code>
             <para>The example above may produce the following results:
             <table class="table is-hoverable">
             <thead><tr><th width="50%"><div style="text-align:center;">Original image</div></th><th width="50%"><div style="text-align:center;">Quantized image</div></th></tr></thead>
             <tbody>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradient.png" alt="Color hues with alpha gradient"/>
             <br/>Color hues with alpha gradient</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/AlphaGradientGrayscale.png" alt="Grayscale color hues with alpha preserved"/>
             <br/>Alpha has been preserved</para></div></td>
             </tr>
             <tr><td><div style="text-align:center;">
             <para><img src="../Help/Images/Shield256.png" alt="Shield icon with transparent background"/>
             <br/>Shield icon with transparency</para></div></td>
             <td><div style="text-align:center;">
             <para><img src="../Help/Images/ShieldGrayscale.png" alt="Grayscale shield icon with alpha preserved"/>
             <br/>Alpha has been preserved</para></div></td>
             </tr>
             </tbody></table></para>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},System.Drawing.Color,System.Byte,System.Boolean,KGySoft.Drawing.Imaging.KnownPixelFormat)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,System.Byte,System.Boolean,KGySoft.Drawing.Imaging.KnownPixelFormat)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomFunction(System.Func{KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32},KGySoft.Drawing.Imaging.Color32,System.Byte,System.Boolean,KGySoft.Drawing.Imaging.KnownPixelFormat)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the custom quantizer function specified in the <paramref name="quantizingFunction"/> parameter.
            </summary>
            <param name="quantizingFunction">A delegate that specifies the custom quantizing logic. It must be thread-safe for parallel invoking, and it is expected to be fast.
            The results returned by the delegate are not cached.</param>
            <param name="backColor">Determines the <see cref="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BackColor"/> property of the result. The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored.
            <br/>If <paramref name="autoBlend"/> is <see langword="true"/>, then colors with alpha (transparency), whose <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field
            is equal to or greater than <paramref name="alphaThreshold"/> will be blended with this color before invoking the <paramref name="quantizingFunction"/> delegate.
            <br/>If <paramref name="autoBlend"/> is <see langword="false"/>, then this parameter matters only if a consumer considers the <see cref="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.BackColor"/> property, such as an <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance that does not support partial transparency.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field, under which a quantized color is considered transparent without invoking <paramref name="quantizingFunction"/>.
            <br/>If <paramref name="autoBlend"/> is <see langword="true"/>, then <paramref name="quantizingFunction"/> will never be invoked with colors with alpha. Instead, colors whose alpha
            equal to or greater than this parameter will be blended with <paramref name="backColor"/> before invoking <paramref name="quantizingFunction"/>.
            <br/>If <paramref name="autoBlend"/> is <see langword="false"/>, then colors with alpha equal to or greater than this parameter
            are allowed to be passed to <paramref name="quantizingFunction"/> without blending with <paramref name="backColor"/>.</param>
            <param name="autoBlend"><see langword="true"/> to always apply <paramref name="backColor"/> and <paramref name="alphaThreshold"/> to the input color before invoking <paramref name="quantizingFunction"/>.
            <br/><see langword="false"/> to apply only <paramref name="alphaThreshold"/> to the input colors and allowing <paramref name="quantizingFunction"/> to be invoked with partially transparent colors.</param>
            <param name="pixelFormatHint">The <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> value that the <see cref="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.PixelFormatHint"/> property of the returned instance will return. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppArgb"/>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that can quantize colors using the custom quantizer function specified in the <paramref name="quantizingFunction"/> parameter.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromBitmapData(KGySoft.Drawing.Imaging.IBitmapData)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that is compatible with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of the specified <paramref name="bitmapData"/>
            and uses its <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> if <paramref name="bitmapData"/> represents an indexed bitmap.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IBitmapData"/> to get a compatible quantizer for.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that is compatible with the specified <paramref name="bitmapData"/>.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format24bppRgb"/>, <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppRgb"/>, <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format48bppRgb"/> or <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format96bppRgb"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb888(KGySoft.Drawing.Imaging.Color32,System.Byte)">Rgb888</see> method.</para>
            <para>If the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppArgb1555"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Argb1555(KGySoft.Drawing.Imaging.Color32,System.Byte)">Argb1555</see> method.</para>
            <para>If the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppRgb565"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb565(KGySoft.Drawing.Imaging.Color32,System.Byte)">Rgb565</see> method.</para>
            <para>If the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppRgb555"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb555(KGySoft.Drawing.Imaging.Color32,System.Byte)">Rgb555</see> method.</para>
            <para>If the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format8bppGrayScale"/>, <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppGrayScale"/> or <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppGrayScale"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">Grayscale</see> method.</para>
            <para>If the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/> is an indexed format,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromCustomPalette(KGySoft.Drawing.Imaging.Palette)"/> method using the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.Palette"/> of the specified <paramref name="bitmapData"/>.</para>
            <para>If none of above and the <paramref name="bitmapData"/> has been created by one of the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData">BitmapDataFactory.CreateBitmapData</see> methods
            that have a <see cref="T:KGySoft.Drawing.Imaging.CustomBitmapDataConfig"/> or <see cref="T:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig"/> parameter where the <see cref="P:KGySoft.Drawing.Imaging.CustomBitmapDataConfigBase.BackBufferIndependentPixelAccess"/> property is <see langword="true"/>,
            then a special quantizer is returned that produces exactly the same colors as the specified <paramref name="bitmapData"/>.</para>
            <para>Otherwise, this method returns either the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Argb8888(KGySoft.Drawing.Imaging.Color32,System.Byte)">Argb8888</see> method (if the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.PixelFormat"/> of <paramref name="bitmapData"/> supports alpha),
            a grayscale quantizer for grayscale formats (with or without alpha support), or the same quantizer as returned by the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb888(KGySoft.Drawing.Imaging.Color32,System.Byte)">Rgb888</see> method.</para>
            <note>For examples see the <strong>Examples</strong> section of the mentioned methods above.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromPixelFormat(KGySoft.Drawing.Imaging.KnownPixelFormat,System.Drawing.Color,System.Byte)">
            <inheritdoc cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromPixelFormat(KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)"/>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.FromPixelFormat(KGySoft.Drawing.Imaging.KnownPixelFormat,KGySoft.Drawing.Imaging.Color32,System.Byte)">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that is compatible with the specified <paramref name="pixelFormat"/>.
            <br/>See the <strong>Remarks</strong> section for details.
            </summary>
            <param name="pixelFormat">The <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> to get a compatible quantizer for.</param>
            <param name="backColor">Colors with alpha (transparency), which are considered opaque will be blended with this color before quantizing.
            The <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field of the background color is ignored. This parameter is optional.
            <br/>Default value: The default value of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type, which has the same RGB values as <see cref="P:System.Drawing.Color.Black">Color.Black</see>.</param>
            <param name="alphaThreshold">Specifies a threshold value for the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">Color32.A</see> field,
            under which a quantized color is considered completely transparent. This parameter is optional.
            <br/>Default value: <c>128</c>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/> instance that is compatible with the specified <paramref name="pixelFormat"/>.</returns>
            <remarks>
            <para>If <paramref name="pixelFormat"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format24bppRgb"/>, <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppRgb"/>, <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format48bppRgb"/> or <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format96bppRgb"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb888(KGySoft.Drawing.Imaging.Color32,System.Byte)">Rgb888</see> method.</para>
            <para>If <paramref name="pixelFormat"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppArgb1555"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Argb1555(KGySoft.Drawing.Imaging.Color32,System.Byte)">Argb1555</see> method.</para>
            <para>If <paramref name="pixelFormat"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppRgb565"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb565(KGySoft.Drawing.Imaging.Color32,System.Byte)">Rgb565</see> method.</para>
            <para>If <paramref name="pixelFormat"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppRgb555"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Rgb555(KGySoft.Drawing.Imaging.Color32,System.Byte)">Rgb555</see> method.</para>
            <para>If <paramref name="pixelFormat"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format8bppGrayScale"/>, <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format16bppGrayScale"/> or <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format32bppGrayScale"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Grayscale(KGySoft.Drawing.Imaging.Color32,System.Byte)">Grayscale</see> method.</para>
            <para>If <paramref name="pixelFormat"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format8bppIndexed"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault8BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">SystemDefault8BppPalette</see> method.</para>
            <para>If <paramref name="pixelFormat"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format4bppIndexed"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault4BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">SystemDefault4BppPalette</see> method.</para>
            <para>If <paramref name="pixelFormat"/> is <see cref="F:KGySoft.Drawing.Imaging.KnownPixelFormat.Format1bppIndexed"/>,
            then this method returns the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.SystemDefault1BppPalette(KGySoft.Drawing.Imaging.Color32,System.Byte)">SystemDefault1BppPalette</see> method.</para>
            <para>In any other case than the ones above this method the same quantizer as the <see cref="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Argb8888(KGySoft.Drawing.Imaging.Color32,System.Byte)">Argb8888</see> method.</para>
            <note>For examples see the <strong>Examples</strong> section of the mentioned methods above.</note>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.ConfigureColorSpace(KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Configures the preferred working color space for this <see cref="T:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer"/>.
            The configuration might be ignored if this instance was created from a custom function.
            The configuration may affect alpha blending, nearest color lookup if this quantizer has a <see cref="T:KGySoft.Drawing.Imaging.Palette"/>, and also the behavior of ditherers that use this quantizer.
            <br/>See the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Imaging.WorkingColorSpace"/> enumeration for details and
            image examples about using the different color spaces in various operations.
            </summary>
            <param name="workingColorSpace">Specifies the working color space for the generated <see cref="P:KGySoft.Drawing.Imaging.PredefinedColorsQuantizer.Palette"/>.</param>
            <returns>An <see cref="T:KGySoft.Drawing.Imaging.OptimizedPaletteQuantizer"/> instance that uses the specified color space.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="workingColorSpace"/> is not one of the defined values.</exception>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.Color32">
            <summary>
            Represents a 32-bit sRGB color where every color channel is represented by a 8-bit integer.
            It represents the same color space as the <see cref="T:System.Drawing.Color"/> structure does but in a more optimized way
            for better performance and smaller memory consumption.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.Color32.A">
            <summary>
            Gets the alpha component value of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.Color32.R">
            <summary>
            Gets the red component value of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.Color32.G">
            <summary>
            Gets the green component value of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.Color32.B">
            <summary>
            Gets the blue component value of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.op_Equality(KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structures are equal.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that is to the left of the equality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that is to the right of the equality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structures are equal; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.op_Inequality(KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structures are different.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that is to the left of the inequality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that is to the right of the inequality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structures are different; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.op_Implicit(System.Drawing.Color)~KGySoft.Drawing.Imaging.Color32">
            <summary>
            Performs an implicit conversion from <see cref="T:System.Drawing.Color"/> to <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.
            </summary>
            <param name="color">A <see cref="T:System.Drawing.Color"/> instance to convert to <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance representing the specified <paramref name="color"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.op_Implicit(KGySoft.Drawing.Imaging.Color32)~System.Drawing.Color">
            <summary>
            Performs an implicit conversion from <see cref="T:KGySoft.Drawing.Imaging.Color32"/> to <see cref="T:System.Drawing.Color"/>.
            </summary>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance to convert to <see cref="T:System.Drawing.Color"/>.</param>
            <returns>A <see cref="T:System.Drawing.Color"/> instance representing the specified <paramref name="color"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.#ctor(System.Byte,System.Byte,System.Byte,System.Byte)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> struct from ARGB (alpha, red, green, and blue) values.
            </summary>
            <param name="a">The alpha component.</param>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.#ctor(System.Byte,System.Byte,System.Byte)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> struct from RGB (red, green, and blue) values.
            </summary>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.#ctor(System.Drawing.Color)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> struct from a <see cref="T:System.Drawing.Color"/> instance.
            </summary>
            <param name="c">A <see cref="T:System.Drawing.Color"/> structure to initialize a new instance of <see cref="T:KGySoft.Drawing.Imaging.Color32"/> from.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.FromArgb(System.Int32)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure from a 32-bit ARGB value.
            </summary>
            <param name="argb">A value specifying the 32-bit ARGB value. As a hex value it can be specified as <c>0xAA_RR_GG_BB</c> where <c>AA</c>
            is the most significant byte (MSB) and <c>BB</c> is the least significant byte (LSB).</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure from the specified 32-bit ARGB value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.FromArgb(System.UInt32)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure from a 32-bit ARGB value.
            </summary>
            <param name="argb">A value specifying the 32-bit ARGB value. As a hex value it can be specified as <c>0xAA_RR_GG_BB</c> where <c>AA</c>
            is the most significant byte (MSB) and <c>BB</c> is the least significant byte (LSB).</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure from the specified 32-bit ARGB value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.FromArgb(System.Byte,KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance from the specified <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure, but with the new specified alpha value.
            </summary>
            <param name="a">The alpha value for the new <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</param>
            <param name="baseColor">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance from which to create the new one.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance from the specified <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure and alpha value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.FromRgb(System.Int32)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure from a 24-bit RGB value. The highest byte of the specified integer is ignored
            and the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">A</see> property of the result will be 255.
            </summary>
            <param name="rgb">A value specifying the 24-bit RGB value. As a hex value it can be specified as <c>0xRR_GG_BB</c>.
            The possibly nonzero alpha component will be ignored.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure from a 24-bit RGB value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.FromRgb(System.UInt32)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure from a 24-bit RGB value. The highest byte of the specified integer is ignored
            and the <see cref="F:KGySoft.Drawing.Imaging.Color32.A">A</see> property of the result will be 255.
            </summary>
            <param name="rgb">A value specifying the 24-bit RGB value. As a hex value it can be specified as <c>0xRR_GG_BB</c>.
            The possibly nonzero alpha component will be ignored.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure from a 24-bit RGB value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.FromGray(System.Byte)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure representing a grayscale color of the specified <paramref name="brightness"/>.
            </summary>
            <param name="brightness">The brightness of the gray color to be created where 0 represents the black color and 255 represents the white color.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure representing a grayscale color of the specified <paramref name="brightness"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.ToColor">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance to a <see cref="T:System.Drawing.Color"/> structure.
            </summary>
            <returns>A <see cref="T:System.Drawing.Color"/> structure converted from this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.ToArgb">
            <summary>
            Gets the 32-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <returns>The 32-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.ToArgbUInt32">
            <summary>
            Gets the 32-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <returns>The 32-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.ToRgb">
            <summary>
            Gets the 24-bit RGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance. The most significant byte of the returned integer is zero.
            </summary>
            <returns>The 24-bit RGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance. The most significant byte of the returned integer is zero.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.ToRgbUInt32">
            <summary>
            Gets the 24-bit RGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance. The most significant byte of the returned integer is zero.
            </summary>
            <returns>The 24-bit RGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance. The most significant byte of the returned integer is zero.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.ToGray">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that represents the matching gray shade of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance based on human perception.
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that represents the matching gray shade of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance based on human perception.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.ToOpaque">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that represents this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> without alpha (transparency).
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance that represents this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> without alpha.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.Equals(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Determines whether the current <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance is equal to another one.
            </summary>
            <param name="other">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure to compare with this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance is equal to the <paramref name="other" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object"/> is equal to this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <param name="obj">The <see cref="T:System.Object" /> to compare with this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance is equal to the <paramref name="obj" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.GetHashCode">
            <summary>
            Returns a hash code for this instance.
            </summary>
            <returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color32.ToString">
            <summary>
            Gets the string representation of this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <returns>A <see cref="T:System.String"/> that represents this <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.Color48">
            <summary>
            Represents a 48-bit RGB color.
            Implements <see cref="T:System.IEquatable`1"/> because used in a <see cref="T:System.Collections.Generic.HashSet`1"/> in <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorCount``1(KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.IReadableBitmapData)"/>
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.Color64">
            <summary>
            Represents a 64-bit sRGB color where every color channel is represented by a 16-bit integer.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.Color64.A">
            <summary>
            Gets the alpha component value of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.Color64.R">
            <summary>
            Gets the red component value of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.Color64.G">
            <summary>
            Gets the green component value of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.Color64.B">
            <summary>
            Gets the blue component value of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.op_Equality(KGySoft.Drawing.Imaging.Color64,KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structures are equal.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance that is to the left of the equality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance that is to the right of the equality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structures are equal; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.op_Inequality(KGySoft.Drawing.Imaging.Color64,KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structures are different.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance that is to the left of the inequality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance that is to the right of the inequality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structures are different; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.#ctor(System.UInt16,System.UInt16,System.UInt16,System.UInt16)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Color64"/> struct from ARGB (alpha, red, green, and blue) values.
            </summary>
            <param name="a">The alpha component.</param>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.#ctor(System.UInt16,System.UInt16,System.UInt16)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Color64"/> struct from RGB (red, green, and blue) values.
            </summary>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.#ctor(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.Color64"/> struct from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <param name="c">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure to initialize a new instance of <see cref="T:KGySoft.Drawing.Imaging.Color64"/> from.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.FromArgb(System.Int64)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure from a 64-bit ARGB value.
            </summary>
            <param name="argb">A value specifying the 64-bit ARGB value. As a hex value it can be specified as <c>0xAAAA_RRRR_GGGG_BBBB</c>.
            where <c>AAAA</c> is the highest word and <c>BBBB</c> is the lowest word.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure from the specified 64-bit ARGB value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.FromArgb(System.UInt64)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure from a 64-bit ARGB value.
            </summary>
            <param name="argb">A value specifying the 64-bit ARGB value. As a hex value it can be specified as <c>0xAAAA_RRRR_GGGG_BBBB</c>
            where <c>AAAA</c> is the highest word and <c>BBBB</c> is the lowest word.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure from the specified 64-bit ARGB value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.FromArgb(System.UInt16,KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance from the specified <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure, but with the new specified alpha value.
            </summary>
            <param name="a">The alpha value for the new <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.</param>
            <param name="baseColor">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance from which to create the new one.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance from the specified <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure and alpha value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.FromRgb(System.Int64)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure from a 48-bit RGB value. The highest two bytes of the specified integer are ignored
            and the <see cref="F:KGySoft.Drawing.Imaging.Color64.A">A</see> property of the result will be 65535.
            </summary>
            <param name="rgb">A value specifying the 48-bit RGB value. As a hex value it can be specified as <c>0xRRRR_GGGG_BBBB</c>.
            The possibly nonzero alpha component will be ignored.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure from a 48-bit RGB value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.FromRgb(System.UInt64)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure from a 48-bit RGB value. The highest two bytes of the specified integer are ignored
            and the <see cref="F:KGySoft.Drawing.Imaging.Color64.A">A</see> property of the result will be 65535.
            </summary>
            <param name="rgb">A value specifying the 48-bit RGB value. As a hex value it can be specified as <c>0xRRRR_GGGG_BBBB</c>.
            The possibly nonzero alpha component will be ignored.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure from a 48-bit RGB value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.FromGray(System.UInt16)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure representing a grayscale color of the specified <paramref name="brightness"/>.
            </summary>
            <param name="brightness">The brightness of the gray color to be created where 0 represents the black color and 65535 represents the white color.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure representing a grayscale color of the specified <paramref name="brightness"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.ToColor32">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance to a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure.
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure converted from this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.ToArgb">
            <summary>
            Gets the 64-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <returns>The 64-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.ToArgbUInt64">
            <summary>
            Gets the 64-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <returns>The 64-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.ToRgb">
            <summary>
            Gets the 48-bit RGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance. The highest two of bytes of the returned integer are zero.
            </summary>
            <returns>The 48-bit RGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance. The highest two of bytes of the returned integer are zero.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.ToRgbUInt64">
            <summary>
            Gets the 48-bit RGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance. The highest two of bytes of the returned integer are zero.
            </summary>
            <returns>The 48-bit RGB value of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance. The highest two of bytes of the returned integer are zero.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.ToGray">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance that represents the matching gray shade of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance based on human perception.
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance that represents the matching gray shade of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance based on human perception.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.ToOpaque">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance that represents this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> without alpha (transparency).
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance that represents this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> without alpha.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.Equals(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Determines whether the current <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance is equal to another one.
            </summary>
            <param name="other">A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure to compare with this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance is equal to the <paramref name="other" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object"/> is equal to this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <param name="obj">The <see cref="T:System.Object" /> to compare with this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance is equal to the <paramref name="obj" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.GetHashCode">
            <summary>
            Returns a hash code for this instance.
            </summary>
            <returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.Color64.ToString">
            <summary>
            Gets the string representation of this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <returns>A <see cref="T:System.String"/> that represents this <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.ColorF">
            <summary>
            Represents a 128-bit linear (not gamma-corrected) color where every color channel is represented by a 32-bit floating point value.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.ColorF.R">
            <summary>
            Gets the red component value of this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.ColorF.G">
            <summary>
            Gets the green component value of this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.ColorF.B">
            <summary>
            Gets the blue component value of this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.ColorF.A">
            <summary>
            Gets the alpha component value of this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.ColorF.IsValid">
            <summary>
            Gets whether this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance represents a valid color.
            That is, when <see cref="F:KGySoft.Drawing.Imaging.ColorF.A"/>, <see cref="F:KGySoft.Drawing.Imaging.ColorF.R"/>, <see cref="F:KGySoft.Drawing.Imaging.ColorF.G"/> and <see cref="F:KGySoft.Drawing.Imaging.ColorF.B"/> fields are all between 0 and 1.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.op_Equality(KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structures are equal.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance that is to the left of the equality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance that is to the right of the equality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structures are equal; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.op_Inequality(KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structures are different.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance that is to the left of the inequality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance that is to the right of the inequality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structures are different; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.op_Multiply(KGySoft.Drawing.Imaging.ColorF,System.Single)">
            <summary>
            Multiplies a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> by the given scalar.
            </summary>
            <param name="left">The source color.</param>
            <param name="right">The scalar value.</param>
            <returns>The scaled color.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.op_Division(KGySoft.Drawing.Imaging.ColorF,System.Single)">
            <summary>
            Divides a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> by the given scalar.
            </summary>
            <param name="left">The source color.</param>
            <param name="right">The scalar value.</param>
            <returns>The result of the division.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.op_Addition(KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Adds two colors together.
            </summary>
            <param name="left">The first source color.</param>
            <param name="right">The second source color.</param>
            <returns>The summed color.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.op_Addition(KGySoft.Drawing.Imaging.ColorF,System.Single)">
            <summary>
            Adds a given scalar to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/>.
            </summary>
            <param name="left">The source color.</param>
            <param name="right">The scalar value.</param>
            <returns>The result color.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.op_Subtraction(KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Subtracts the second color from the first one.
            </summary>
            <param name="left">The first source color.</param>
            <param name="right">The second source color.</param>
            <returns>The color that results from subtracting <paramref name="right"/> from <paramref name="right"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.op_Subtraction(KGySoft.Drawing.Imaging.ColorF,System.Single)">
            <summary>
            Subtracts a given scalar from the first color.
            </summary>
            <param name="left">The source color.</param>
            <param name="right">The scalar value.</param>
            <returns>The result color.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.#ctor(System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> struct from ARGB (alpha, red, green, and blue) values.
            For performance reasons this overload does not validate if the color components are between 0 and 1 but you can use
            the <see cref="M:KGySoft.Drawing.Imaging.ColorF.#ctor(System.Single,System.Single,System.Single,System.Single,System.Boolean)"/> constructor or the <see cref="P:KGySoft.Drawing.Imaging.ColorF.IsValid"/> property for validation,
            or the <see cref="M:KGySoft.Drawing.Imaging.ColorF.Clip">Clip</see> method to return a valid instance.
            </summary>
            <param name="a">The alpha component.</param>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.#ctor(System.Single,System.Single,System.Single)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> struct from RGB (red, green, and blue) values.
            For performance reasons this overload does not validate if the color components are between 0 and 1 but you can use
            the <see cref="M:KGySoft.Drawing.Imaging.ColorF.#ctor(System.Single,System.Single,System.Single,System.Boolean)"/> constructor or the <see cref="P:KGySoft.Drawing.Imaging.ColorF.IsValid"/> property for validation,
            or the <see cref="M:KGySoft.Drawing.Imaging.ColorF.Clip">Clip</see> method to return a valid instance.
            </summary>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.#ctor(System.Single,System.Single,System.Single,System.Single,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> struct from ARGB (alpha, red, green, and blue) values.
            </summary>
            <param name="a">The alpha component.</param>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
            <param name="validate"><see langword="true"/> to validate the parameters; <see langword="false"/> to skip the validation.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="validate"/> is <see langword="true"/> and <paramref name="r"/>, <paramref name="g"/>, <paramref name="b"/> or <paramref name="a"/> is not between 0 and 1.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.#ctor(System.Single,System.Single,System.Single,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> struct from RGB (red, green, and blue) values.
            </summary>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
            <param name="validate"><see langword="true"/> to validate the parameters; <see langword="false"/> to skip the validation.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="validate"/> is <see langword="true"/> and <paramref name="r"/>, <paramref name="g"/> or <paramref name="b"/> is not between 0 and 1.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.#ctor(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> struct from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <param name="c">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure to initialize a new instance of <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> from.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.#ctor(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> struct from a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <param name="c">A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure to initialize a new instance of <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> from.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.FromArgb(System.Single,KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance from the specified <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure, but with the new specified alpha value.
            This method does not validate if the color components are between 0 and 1 but you can use the the <see cref="P:KGySoft.Drawing.Imaging.ColorF.IsValid"/> property
            or the <see cref="M:KGySoft.Drawing.Imaging.ColorF.Clip">Clip</see> method on the result.
            </summary>
            <param name="a">The alpha value for the new <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</param>
            <param name="baseColor">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance from which to create the new one.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance from the specified <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure and alpha value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.FromRgba(System.Numerics.Vector4)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure from a <see cref="T:System.Numerics.Vector4"/> instance mapping <see cref="F:System.Numerics.Vector4.X"/> to <see cref="F:KGySoft.Drawing.Imaging.ColorF.R"/>,
            <see cref="F:System.Numerics.Vector4.Y"/> to <see cref="F:KGySoft.Drawing.Imaging.ColorF.G"/>, <see cref="F:System.Numerics.Vector4.Z"/> to <see cref="F:KGySoft.Drawing.Imaging.ColorF.B"/> and <see cref="F:System.Numerics.Vector4.W"/> to <see cref="F:KGySoft.Drawing.Imaging.ColorF.A"/>.
            </summary>
            <param name="vector">A <see cref="T:System.Numerics.Vector4"/> representing the RGBA color components. The parameter is not validated but
            you can use the <see cref="P:KGySoft.Drawing.Imaging.ColorF.IsValid"/> property or the <see cref="M:KGySoft.Drawing.Imaging.ColorF.Clip">Clip</see> method on the created result.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure converted from the specified <see cref="T:System.Numerics.Vector4"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.FromRgb(System.Numerics.Vector3)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure from a <see cref="T:System.Numerics.Vector3"/> instance mapping <see cref="F:System.Numerics.Vector3.X"/> to <see cref="F:KGySoft.Drawing.Imaging.ColorF.R"/>,
            <see cref="F:System.Numerics.Vector3.Y"/> to <see cref="F:KGySoft.Drawing.Imaging.ColorF.G"/> and <see cref="F:System.Numerics.Vector3.Z"/> to <see cref="F:KGySoft.Drawing.Imaging.ColorF.B"/>. The <see cref="F:KGySoft.Drawing.Imaging.ColorF.A"/> component of the result will be 1.
            </summary>
            <param name="vector">A <see cref="T:System.Numerics.Vector3"/> representing the RGB color components. The parameter is not validated but
            you can use the <see cref="P:KGySoft.Drawing.Imaging.ColorF.IsValid"/> property or the <see cref="M:KGySoft.Drawing.Imaging.ColorF.Clip">Clip</see> method on the created result.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure converted from the specified <see cref="T:System.Numerics.Vector3"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.FromGray(System.Single)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure representing a grayscale color of the specified <paramref name="brightness"/>.
            </summary>
            <param name="brightness">The brightness of the gray color to be created where 0 represents the black color and 1 represents the white color.
            The parameter is not validated but you can use the &lt;see cref="IsValid"/&gt; property or the &lt;see cref="Clip"&gt;Clip&lt;/see&gt; method on the created result.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure representing a grayscale color of the specified <paramref name="brightness"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.Clip">
            <summary>
            Returns a valid <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance by clipping the possibly exceeding ARGB values.
            If <see cref="P:KGySoft.Drawing.Imaging.ColorF.IsValid"/> returns <see langword="true"/>, then the result is the same as the original instance.
            </summary>
            <returns>A valid <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance by clipping the possibly exceeding ARGB values.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.ToRgba">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance to a <see cref="T:System.Numerics.Vector4"/> structure
            mapping <see cref="F:KGySoft.Drawing.Imaging.ColorF.R"/> to <see cref="F:System.Numerics.Vector4.X"/>, <see cref="F:KGySoft.Drawing.Imaging.ColorF.G"/> to <see cref="F:System.Numerics.Vector4.Y"/>,
            <see cref="F:KGySoft.Drawing.Imaging.ColorF.B"/> to <see cref="F:System.Numerics.Vector4.Z"/> and <see cref="F:KGySoft.Drawing.Imaging.ColorF.A"/> to <see cref="F:System.Numerics.Vector4.W"/>.
            </summary>
            <returns>A <see cref="T:System.Numerics.Vector4"/> structure converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.ToRgb">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance to a <see cref="T:System.Numerics.Vector3"/> structure
            mapping <see cref="F:KGySoft.Drawing.Imaging.ColorF.R"/> to <see cref="F:System.Numerics.Vector3.X"/>, <see cref="F:KGySoft.Drawing.Imaging.ColorF.G"/> to <see cref="F:System.Numerics.Vector3.Y"/>
            and <see cref="F:KGySoft.Drawing.Imaging.ColorF.B"/> to <see cref="F:System.Numerics.Vector3.Z"/>.
            </summary>
            <returns>A <see cref="T:System.Numerics.Vector3"/> structure converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.ToColor32">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance to a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure.
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.ToColor64">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance to a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure.
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure converted from this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.ToGray">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance that represents the matching gray shade of this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance based on human perception.
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance that represents the matching gray shade of this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance based on human perception.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.ToOpaque">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance that represents this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> without alpha (transparency).
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance that represents this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> without alpha.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.ToString">
            <summary>
            Gets the string representation of this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <returns>A <see cref="T:System.String"/> that represents this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.Equals(KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Determines whether the current <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance is equal to another one.
            </summary>
            <param name="other">A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure to compare with this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance is equal to the <paramref name="other" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object"/> is equal to this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="obj">The <see cref="T:System.Object" /> to compare with this <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance is equal to the <paramref name="obj" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.ColorF.GetHashCode">
            <summary>
            Returns a hash code for this instance.
            </summary>
            <returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.CopySession.PerformDrawDirect">
            <summary>
            Drawing without a quantizer in 32bpp color space.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.CopySession.TryPerformRawCopy">
            <summary>
            Tries to perform a raw copy. If succeeds converts the horizontal dimensions to bytes from pixels.
            Note: Stride and origin is set from outside so we spare some casts and possible GCHandle uses.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.Gray16">
            <summary>
            Represents a 16-bit grayscale color.
            Implements <see cref="T:System.IEquatable`1"/> because used in a <see cref="T:System.Collections.Generic.HashSet`1"/> in <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorCount``1(KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.IReadableBitmapData)"/>
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.Gray8">
            <summary>
            Represents a 8-bit grayscale color.
            Implements <see cref="T:System.IEquatable`1"/> because used in a <see cref="T:System.Collections.Generic.HashSet`1"/> in <see cref="M:KGySoft.Drawing.Imaging.BitmapDataExtensions.GetColorCount``1(KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.IReadableBitmapData)"/>
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.GrayF">
            <summary>
            Represents a 32-bit grayscale color.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.PColor32">
            <summary>
            Represents a 32-bit premultiplied sRGB color where every color channel is represented by a 8-bit integer.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.PColor32.A">
            <summary>
            Gets the alpha component value of this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.PColor32.R">
            <summary>
            Gets the red component value of this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.PColor32.G">
            <summary>
            Gets the green component value of this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.PColor32.B">
            <summary>
            Gets the blue component value of this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PColor32.IsValid">
            <summary>
            Gets whether this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance represents a valid premultiplied color.
            That is, when <see cref="F:KGySoft.Drawing.Imaging.PColor32.A"/> is greater than or equal to <see cref="F:KGySoft.Drawing.Imaging.PColor32.R"/>, <see cref="F:KGySoft.Drawing.Imaging.PColor32.G"/> and <see cref="F:KGySoft.Drawing.Imaging.PColor32.B"/>.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.op_Equality(KGySoft.Drawing.Imaging.PColor32,KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structures are equal.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance that is to the left of the equality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance that is to the right of the equality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structures are equal; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.op_Inequality(KGySoft.Drawing.Imaging.PColor32,KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structures are different.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance that is to the left of the inequality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance that is to the right of the inequality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structures are different; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.#ctor(System.Byte,System.Byte,System.Byte,System.Byte)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> struct from ARGB (alpha, red, green, and blue) values.
            For performance reasons this overload does not validate the parameters but you can use the <see cref="M:KGySoft.Drawing.Imaging.PColor32.#ctor(System.Byte,System.Byte,System.Byte,System.Byte,System.Boolean)"/> constructor
            or the <see cref="P:KGySoft.Drawing.Imaging.PColor32.IsValid"/> property for validation, or the <see cref="M:KGySoft.Drawing.Imaging.PColor32.Clip">Clip</see> method to return a valid instance.
            </summary>
            <param name="a">The alpha component.</param>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.#ctor(System.Byte,System.Byte,System.Byte,System.Byte,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> struct from ARGB (alpha, red, green, and blue) values.
            </summary>
            <param name="a">The alpha component.</param>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
            <param name="validate"><see langword="true"/> to validate the parameters; <see langword="false"/> to skip the validation.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="validate"/> is <see langword="true"/> and <paramref name="r"/>, <paramref name="g"/> or <paramref name="b"/> is not between 0 and <paramref name="a"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.#ctor(System.Byte,System.Byte,System.Byte)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> struct from RGB (red, green, and blue) values.
            </summary>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.#ctor(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> struct from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <param name="c">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure to initialize a new instance of <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> from.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.FromArgb(System.Int32)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structure from a 32-bit ARGB value.
            </summary>
            <param name="argb">A value specifying the 32-bit ARGB value. As a hex value it can be specified as <c>0xAA_RR_GG_BB</c> where <c>AA</c>
            is the most significant byte (MSB) and <c>BB</c> is the least significant byte (LSB). The parameter is not validated but
            you can use the <see cref="P:KGySoft.Drawing.Imaging.PColor32.IsValid"/> property or the <see cref="M:KGySoft.Drawing.Imaging.PColor32.Clip">Clip</see> method on the created result.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structure from the specified 32-bit ARGB value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.FromArgb(System.UInt32)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structure from a 32-bit ARGB value.
            </summary>
            <param name="argb">A value specifying the 32-bit ARGB value. As a hex value it can be specified as <c>0xAA_RR_GG_BB</c> where <c>AA</c>
            is the most significant byte (MSB) and <c>BB</c> is the least significant byte (LSB). The parameter is not validated but
            you can use the <see cref="P:KGySoft.Drawing.Imaging.PColor32.IsValid"/> property or the <see cref="M:KGySoft.Drawing.Imaging.PColor32.Clip">Clip</see> method on the created result.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structure from the specified 32-bit ARGB value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.FromArgb(System.Byte,KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance from the specified <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure specifying a custom alpha value.
            </summary>
            <param name="a">The alpha value for the result <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.</param>
            <param name="baseColor">The <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance to which apply the new alpha.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance from the specified <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure and alpha value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.Clip">
            <summary>
            Returns a valid <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance by clipping the possibly exceeding original RGB values.
            If <see cref="P:KGySoft.Drawing.Imaging.PColor32.IsValid"/> returns <see langword="true"/>, then the result is the same as the original instance.
            </summary>
            <returns>A valid <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance by clipping the possibly exceeding original RGB values.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.ToColor32">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance to a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure.
            It's practically the same as calling the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.ToStraight(KGySoft.Drawing.Imaging.PColor32)"/> method.
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.ToArgb">
            <summary>
            Gets the 32-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.
            </summary>
            <returns>The 32-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.ToArgbUInt32">
            <summary>
            Gets the 32-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.
            </summary>
            <returns>The 32-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.Equals(KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Determines whether the current <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance is equal to another one.
            </summary>
            <param name="other">A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structure to compare with this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance is equal to the <paramref name="other" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object"/> is equal to this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.
            </summary>
            <param name="obj">The <see cref="T:System.Object" /> to compare with this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance is equal to the <paramref name="obj" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.GetHashCode">
            <summary>
            Returns a hash code for this instance.
            </summary>
            <returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor32.ToString">
            <summary>
            Gets the string representation of this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.
            </summary>
            <returns>A <see cref="T:System.String"/> that represents this <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.PColor64">
            <summary>
            Represents a 64-bit premultiplied sRGB color where every color channel is represented by a 16-bit integer.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.PColor64.A">
            <summary>
            Gets the alpha component value of this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.PColor64.R">
            <summary>
            Gets the red component value of this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.PColor64.G">
            <summary>
            Gets the green component value of this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.PColor64.B">
            <summary>
            Gets the blue component value of this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PColor64.IsValid">
            <summary>
            Gets whether this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance represents a valid premultiplied color.
            That is, when <see cref="F:KGySoft.Drawing.Imaging.PColor64.A"/> is greater than or equal to <see cref="F:KGySoft.Drawing.Imaging.PColor64.R"/>, <see cref="F:KGySoft.Drawing.Imaging.PColor64.G"/> and <see cref="F:KGySoft.Drawing.Imaging.PColor64.B"/>.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.op_Equality(KGySoft.Drawing.Imaging.PColor64,KGySoft.Drawing.Imaging.PColor64)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structures are equal.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance that is to the left of the equality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance that is to the right of the equality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structures are equal; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.op_Inequality(KGySoft.Drawing.Imaging.PColor64,KGySoft.Drawing.Imaging.PColor64)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structures are different.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance that is to the left of the inequality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance that is to the right of the inequality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structures are different; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.#ctor(System.UInt16,System.UInt16,System.UInt16,System.UInt16)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> struct from ARGB (alpha, red, green, and blue) values.
            For performance reasons this overload does not validate the parameters but you can use the <see cref="M:KGySoft.Drawing.Imaging.PColor64.#ctor(System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.Boolean)"/> constructor
            or the <see cref="P:KGySoft.Drawing.Imaging.PColor64.IsValid"/> property for validation, or the <see cref="M:KGySoft.Drawing.Imaging.PColor64.Clip">Clip</see> method to return a valid instance.
            </summary>
            <param name="a">The alpha component.</param>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.#ctor(System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> struct from ARGB (alpha, red, green, and blue) values.
            </summary>
            <param name="a">The alpha component.</param>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
            <param name="validate"><see langword="true"/> to validate the parameters; <see langword="false"/> to skip the validation.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="validate"/> is <see langword="true"/> and <paramref name="r"/>, <paramref name="g"/> or <paramref name="b"/> is not between 0 and <paramref name="a"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.#ctor(System.UInt16,System.UInt16,System.UInt16)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> struct from RGB (red, green, and blue) values.
            </summary>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.#ctor(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> struct from a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <param name="c">A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure to initialize a new instance of <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> from.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.#ctor(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> struct from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <param name="c">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure to initialize a new instance of <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> from.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.#ctor(KGySoft.Drawing.Imaging.PColor32)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> struct from a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> instance.
            </summary>
            <param name="c">A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structure to initialize a new instance of <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> from.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.FromArgb(System.Int64)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structure from a 64-bit ARGB value.
            </summary>
            <param name="argb">A value specifying the 64-bit ARGB value. As a hex value it can be specified as <c>0xAAAA_RRRR_GGGG_BBBB</c>
            where <c>AAAA</c> is the highest word and <c>BBBB</c> is the lowest word.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structure from the specified 64-bit ARGB value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.FromArgb(System.UInt64)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structure from a 64-bit ARGB value.
            </summary>
            <param name="argb">A value specifying the 64-bit ARGB value. As a hex value it can be specified as <c>0xAAAA_RRRR_GGGG_BBBB</c>
            where <c>AAAA</c> is the highest word and <c>BBBB</c> is the lowest word.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structure from the specified 64-bit ARGB value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.FromArgb(System.UInt16,KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance from the specified <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure specifying a custom alpha value.
            </summary>
            <param name="a">The alpha value for the result <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.</param>
            <param name="baseColor">The <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance to which apply the new alpha.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance from the specified <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure and alpha value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.Clip">
            <summary>
            Returns a valid <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance by clipping the possibly exceeding original RGB values.
            If <see cref="P:KGySoft.Drawing.Imaging.PColor64.IsValid"/> returns <see langword="true"/>, then the result is the same as the original instance.
            </summary>
            <returns>A valid <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance by clipping the possibly exceeding original RGB values.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.ToColor64">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance to a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure.
            It's practically the same as calling the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.ToStraight(KGySoft.Drawing.Imaging.PColor64)"/> method.
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.ToColor32">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance to a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure.
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.ToPColor32">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance to a <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structure.
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColor32"/> structure converted from this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.ToArgb">
            <summary>
            Gets the 64-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.
            </summary>
            <returns>The 64-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.ToArgbUInt64">
            <summary>
            Gets the 64-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.
            </summary>
            <returns>The 64-bit ARGB value of this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.Equals(KGySoft.Drawing.Imaging.PColor64)">
            <summary>
            Determines whether the current <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance is equal to another one.
            </summary>
            <param name="other">A <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> structure to compare with this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance is equal to the <paramref name="other" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object"/> is equal to this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.
            </summary>
            <param name="obj">The <see cref="T:System.Object" /> to compare with this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance is equal to the <paramref name="obj" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.GetHashCode">
            <summary>
            Returns a hash code for this instance.
            </summary>
            <returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColor64.ToString">
            <summary>
            Gets the string representation of this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.
            </summary>
            <returns>A <see cref="T:System.String"/> that represents this <see cref="T:KGySoft.Drawing.Imaging.PColor64"/> instance.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.PColorF">
            <summary>
            Represents a 128-bit premultiplied linear (not gamma-corrected) color where every color channel is represented by a 32-bit floating point value.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.PColorF.R">
            <summary>
            Gets the red component value of this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.PColorF.G">
            <summary>
            Gets the green component value of this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.PColorF.B">
            <summary>
            Gets the blue component value of this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Imaging.PColorF.A">
            <summary>
            Gets the alpha component value of this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> structure. This field is read-only.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PColorF.IsValid">
            <summary>
            Gets whether this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance represents a valid color.
            That is, when <see cref="F:KGySoft.Drawing.Imaging.PColorF.A"/>, <see cref="F:KGySoft.Drawing.Imaging.PColorF.R"/>, <see cref="F:KGySoft.Drawing.Imaging.PColorF.G"/> and <see cref="F:KGySoft.Drawing.Imaging.PColorF.B"/> fields are all between 0 and 1,
            and <see cref="F:KGySoft.Drawing.Imaging.PColorF.A"/> is greater than or equal to <see cref="F:KGySoft.Drawing.Imaging.PColorF.R"/>, <see cref="F:KGySoft.Drawing.Imaging.PColorF.G"/> and <see cref="F:KGySoft.Drawing.Imaging.PColorF.B"/>.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.op_Equality(KGySoft.Drawing.Imaging.PColorF,KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> structures are equal.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance that is to the left of the equality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance that is to the right of the equality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> structures are equal; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.op_Inequality(KGySoft.Drawing.Imaging.PColorF,KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> structures are different.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance that is to the left of the inequality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance that is to the right of the inequality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> structures are different; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.op_Multiply(KGySoft.Drawing.Imaging.PColorF,System.Single)">
            <summary>
            Multiplies a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> by the given scalar.
            </summary>
            <param name="left">The source color.</param>
            <param name="right">The scalar value.</param>
            <returns>The scaled color.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.op_Division(KGySoft.Drawing.Imaging.PColorF,System.Single)">
            <summary>
            Divides  a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> by the given scalar.
            </summary>
            <param name="left">The source color.</param>
            <param name="right">The scalar value.</param>
            <returns>The result of the division.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.op_Addition(KGySoft.Drawing.Imaging.PColorF,KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Adds two colors together.
            </summary>
            <param name="left">The first source color.</param>
            <param name="right">The second source color.</param>
            <returns>The summed color.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.op_Addition(KGySoft.Drawing.Imaging.PColorF,System.Single)">
            <summary>
            Adds a given scalar to a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/>.
            </summary>
            <param name="left">The source color.</param>
            <param name="right">The scalar value.</param>
            <returns>The result color.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.op_Subtraction(KGySoft.Drawing.Imaging.PColorF,KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Subtracts the second color from the first one.
            </summary>
            <param name="left">The first source color.</param>
            <param name="right">The second source color.</param>
            <returns>The color that results from subtracting <paramref name="right"/> from <paramref name="right"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.op_Subtraction(KGySoft.Drawing.Imaging.PColorF,System.Single)">
            <summary>
            Subtracts a given scalar from the first color.
            </summary>
            <param name="left">The source color.</param>
            <param name="right">The scalar value.</param>
            <returns>The result color.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.#ctor(System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> struct from ARGB (alpha, red, green, and blue) values.
            For performance reasons this overload does not validate if the color components are between 0 and 1 but you can use
            the <see cref="M:KGySoft.Drawing.Imaging.PColorF.#ctor(System.Single,System.Single,System.Single,System.Single,System.Boolean)"/> constructor or the <see cref="P:KGySoft.Drawing.Imaging.PColorF.IsValid"/> property for validation,
            or the <see cref="M:KGySoft.Drawing.Imaging.PColorF.Clip">Clip</see> method to return a valid instance.
            </summary>
            <param name="a">The alpha component.</param>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.#ctor(System.Single,System.Single,System.Single)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> struct from RGB (red, green, and blue) values.
            For performance reasons this overload does not validate if the color components are between 0 and 1 but you can use
            the <see cref="M:KGySoft.Drawing.Imaging.PColorF.#ctor(System.Single,System.Single,System.Single,System.Boolean)"/> constructor or the <see cref="P:KGySoft.Drawing.Imaging.PColorF.IsValid"/> property for validation,
            or the <see cref="M:KGySoft.Drawing.Imaging.PColorF.Clip">Clip</see> method to return a valid instance.
            </summary>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.#ctor(System.Single,System.Single,System.Single,System.Single,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> struct from ARGB (alpha, red, green, and blue) values.
            </summary>
            <param name="a">The alpha component.</param>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
            <param name="validate"><see langword="true"/> to validate the parameters; <see langword="false"/> to skip the validation.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="validate"/> is <see langword="true"/> and <paramref name="a"/> is not between 0 and 1, or <paramref name="r"/>, <paramref name="g"/> or <paramref name="b"/> is not between 0 and <paramref name="a"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.#ctor(System.Single,System.Single,System.Single,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> struct from RGB (red, green, and blue) values.
            </summary>
            <param name="r">The red component.</param>
            <param name="g">The green component.</param>
            <param name="b">The blue component.</param>
            <param name="validate"><see langword="true"/> to validate the parameters; <see langword="false"/> to skip the validation.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="validate"/> is <see langword="true"/> and <paramref name="r"/>, <paramref name="g"/> or <paramref name="b"/> is not between 0 and 1.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.#ctor(KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> struct from a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance.
            </summary>
            <param name="c">A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure to initialize a new instance of <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> from.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.#ctor(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> struct from a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.
            </summary>
            <param name="c">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> structure to initialize a new instance of <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> from.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.#ctor(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> struct from a <see cref="T:KGySoft.Drawing.Imaging.Color64"/> instance.
            </summary>
            <param name="c">A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> structure to initialize a new instance of <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> from.</param>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.FromArgb(System.Single,KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance from the specified <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure specifying a custom alpha value.
            This method does not validate if the color components are between 0 and 1 but you can use the the <see cref="P:KGySoft.Drawing.Imaging.PColorF.IsValid"/> property
            or the <see cref="M:KGySoft.Drawing.Imaging.PColorF.Clip">Clip</see> method on the result.
            </summary>
            <param name="a">The alpha value for the result <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</param>
            <param name="baseColor">The <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance to which apply the new alpha.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance from the specified <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure and alpha value.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.FromRgba(System.Numerics.Vector4)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> structure from a <see cref="T:System.Numerics.Vector4"/> instance mapping <see cref="F:System.Numerics.Vector4.X"/> to <see cref="F:KGySoft.Drawing.Imaging.PColorF.R"/>,
            <see cref="F:System.Numerics.Vector4.Y"/> to <see cref="F:KGySoft.Drawing.Imaging.PColorF.G"/>, <see cref="F:System.Numerics.Vector4.Z"/> to <see cref="F:KGySoft.Drawing.Imaging.PColorF.B"/> and <see cref="F:System.Numerics.Vector4.W"/> to <see cref="F:KGySoft.Drawing.Imaging.PColorF.A"/>.
            </summary>
            <param name="vector">A <see cref="T:System.Numerics.Vector4"/> representing the RGBA color components. The parameter is not validated but
            you can use the <see cref="P:KGySoft.Drawing.Imaging.PColorF.IsValid"/> property or the <see cref="M:KGySoft.Drawing.Imaging.PColorF.Clip">Clip</see> method on the created result.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> structure converted from the specified <see cref="T:System.Numerics.Vector4"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.Clip">
            <summary>
            Returns a valid <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance by clipping the possibly exceeding ARGB values.
            If <see cref="P:KGySoft.Drawing.Imaging.PColorF.IsValid"/> returns <see langword="true"/>, then the result is the same as the original instance.
            </summary>
            <returns>A valid <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> instance by clipping the possibly exceeding ARGB values.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.ToRgba">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance to a <see cref="T:System.Numerics.Vector4"/> structure
            mapping <see cref="F:KGySoft.Drawing.Imaging.PColorF.R"/> to <see cref="F:System.Numerics.Vector4.X"/>, <see cref="F:KGySoft.Drawing.Imaging.PColorF.G"/> to <see cref="F:System.Numerics.Vector4.Y"/>,
            <see cref="F:KGySoft.Drawing.Imaging.PColorF.B"/> to <see cref="F:System.Numerics.Vector4.Z"/> and <see cref="F:KGySoft.Drawing.Imaging.PColorF.A"/> to <see cref="F:System.Numerics.Vector4.W"/>.
            </summary>
            <returns>A <see cref="T:System.Numerics.Vector4"/> structure converted from this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.ToColorF">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance to a <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure.
            It's practically the same as calling the <see cref="M:KGySoft.Drawing.Imaging.ColorExtensions.ToStraight(KGySoft.Drawing.Imaging.PColorF)"/> method.
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> structure converted from this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.ToString">
            <summary>
            Gets the string representation of this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.
            </summary>
            <returns>A <see cref="T:System.String"/> that represents this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.Equals(KGySoft.Drawing.Imaging.PColorF)">
            <summary>
            Determines whether the current <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance is equal to another one.
            </summary>
            <param name="other">A <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> structure to compare with this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance is equal to the <paramref name="other" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object"/> is equal to this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.
            </summary>
            <param name="obj">The <see cref="T:System.Object" /> to compare with this <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> instance is equal to the <paramref name="obj" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PColorF.GetHashCode">
            <summary>
            Returns a hash code for this instance.
            </summary>
            <returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.PixelFormatInfo">
            <summary>
            Represents a pixel format in a technology-agnostic way. Can be used to specify custom pixel formats
            for the <see cref="O:KGySoft.Drawing.Imaging.BitmapDataFactory.CreateBitmapData">CreateBitmapData</see> method overloads
            with a <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/>, <see cref="T:KGySoft.Drawing.Imaging.CustomBitmapDataConfig"/> or <see cref="T:KGySoft.Drawing.Imaging.CustomIndexedBitmapDataConfig"/> parameter.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel">
            <summary>
            Gets or sets the bits per pixel value of this <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/>.
            Supported range is 1..128 (or 1..16 for <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Indexed"/> formats). Typical values are powers of two but any value is supported.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">When setting this property, <paramref name="value"/> must be between 1 and 128.</exception>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasAlpha">
            <summary>
            Gets or sets whether the represented pixel format has an alpha channel (transparency).
            For <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Indexed"/> formats this property can be <see langword="false"/> because alpha support is determined by the current palette.
            Setting this property to <see langword="false"/> resets also the <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasPremultipliedAlpha"/> and <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasSingleBitAlpha"/> properties.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Indexed">
            <summary>
            Gets or sets whether the represented pixel format is an indexed one.
            An indexed format is not expected to have more than 16 <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.BitsPerPixel"/> (up to 65536 color entries).
            </summary>
            <value>
            If <see langword="true"/>, then pixel data represent <see cref="T:KGySoft.Drawing.Imaging.Palette"/> entries instead of direct colors.
            <br/>If <see langword="false"/>, then pixel data represent specific colors.
            </value>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Grayscale">
            <summary>
            Gets or sets whether the represented pixel format is a grayscale one.
            For <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Indexed"/> formats this property can be <see langword="false"/> because grayscale nature is determined by the current palette.
            Setting this property for non-indexed custom grayscale formats helps to auto select the preferable strategy for some operations such as dithering.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasPremultipliedAlpha">
            <summary>
            Gets or sets whether the represented pixel format uses premultiplied alpha.
            Setting this property to <see langword="true"/> sets also the <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasAlpha"/> property.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasSingleBitAlpha">
            <summary>
            Gets or sets whether the represented pixel format supports single-bit alpha only (a pixel is either completely transparent or completely opaque).
            Setting this property to <see langword="true"/> sets also the <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasAlpha"/> property.
            It is not mandatory to set this property for custom single-bit alpha formats but it helps optimizing some drawing operations.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PixelFormatInfo.LinearGamma">
            <summary>
            Gets or sets whether the represented pixel format has linear gamma.
            For <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Indexed"/> formats this property should be <see langword="false"/> because it can be configured
            at the <see cref="T:KGySoft.Drawing.Imaging.Palette"/> constructors and factory methods whether the palette should work in the linear color space.
            If the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace">IBitmapData.WorkingColorSpace</see> property returns <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>,
            then the value of this property may affect the selected color space of some operations.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Prefers64BitColors">
            <summary>
            Gets or sets whether the represented pixel format prefers 64-bit colors (<see cref="T:KGySoft.Drawing.Imaging.Color64"/>, or <see cref="T:KGySoft.Drawing.Imaging.PColor64"/>
            if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasPremultipliedAlpha"/> is also set) when getting or setting pixels. Some operations may consider the value of this property.
            Setting this property to <see langword="true"/> resets the <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Prefers128BitColors"/> property.
            If <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.LinearGamma"/> is also set, then some writing operations may prefer using <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> or <see cref="T:KGySoft.Drawing.Imaging.PColorF"/> types
            regardless of this property.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Prefers128BitColors">
            <summary>
            Gets or sets whether the represented pixel format prefers 128-bit colors (<see cref="T:KGySoft.Drawing.Imaging.ColorF"/>, or <see cref="T:KGySoft.Drawing.Imaging.PColorF"/>
            if <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.HasPremultipliedAlpha"/> is also set) when getting or setting pixels. Some operations may consider the value of this property.
            Setting this property to <see langword="true"/> resets the <see cref="P:KGySoft.Drawing.Imaging.PixelFormatInfo.Prefers64BitColors"/> property.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Imaging.PixelFormatInfo.IsCustomFormat">
            <summary>
            Gets whether the represented pixel format is a custom one. That is, when this <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/>
            was not instantiated by its <see cref="M:KGySoft.Drawing.Imaging.PixelFormatInfo.#ctor(KGySoft.Drawing.Imaging.KnownPixelFormat)">constructor</see> with a <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> parameter
            or one of its properties have been set since then.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PixelFormatInfo.op_Equality(KGySoft.Drawing.Imaging.PixelFormatInfo,KGySoft.Drawing.Imaging.PixelFormatInfo)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> structures are equal.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that is to the left of the equality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that is to the right of the equality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> structures are equal; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PixelFormatInfo.op_Inequality(KGySoft.Drawing.Imaging.PixelFormatInfo,KGySoft.Drawing.Imaging.PixelFormatInfo)">
            <summary>
            Gets whether two <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> structures are different.
            </summary>
            <param name="left">The <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that is to the left of the inequality operator.</param>
            <param name="right">The <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance that is to the right of the inequality operator.</param>
            <returns><see langword="true"/> if the two <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> structures are different; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PixelFormatInfo.#ctor(System.Byte)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> struct.
            </summary>
            <param name="bitsPerPixel">The bits-per-pixel value of the pixel format to create. Must be between 1 and 128.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="bitsPerPixel"/> must be between 1 and 128.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PixelFormatInfo.#ctor(KGySoft.Drawing.Imaging.KnownPixelFormat)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> struct.
            </summary>
            <param name="pixelFormat">A known pixel format to initialize a <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> from.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="pixelFormat"/> must be a valid format.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PixelFormatInfo.ToKnownPixelFormat">
            <summary>
            Converts this <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> to a <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> representing a compatible pixel format.
            </summary>
            <returns>A <see cref="T:KGySoft.Drawing.Imaging.KnownPixelFormat"/> representing a compatible pixel format.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PixelFormatInfo.Equals(KGySoft.Drawing.Imaging.PixelFormatInfo)">
            <summary>
            Determines whether the current <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance is equal to another one.
            </summary>
            <param name="other">A <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> structure to compare with this <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance is equal to the <paramref name="other" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PixelFormatInfo.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object"/> is equal to this <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance.
            </summary>
            <param name="obj">The <see cref="T:System.Object" /> to compare with this <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance is equal to the <paramref name="obj" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PixelFormatInfo.GetHashCode">
            <summary>
            Returns a hash code for this instance.
            </summary>
            <returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Imaging.PixelFormatInfo.ToString">
            <summary>
            Gets the string representation of this <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance.
            </summary>
            <returns>A <see cref="T:System.String"/> that represents this <see cref="T:KGySoft.Drawing.Imaging.PixelFormatInfo"/> instance.</returns>
        </member>
        <member name="T:KGySoft.Drawing.Imaging.NamespaceDoc">
            <summary>
            The <see cref="N:KGySoft.Drawing.Imaging"/> namespace provides advanced imaging functionality such as low-level bitmap data access for any pixel format,
            interfaces for quantization and dithering along with some built-in implementations, etc.
            <br/>See the <strong>Remarks</strong> section of the <see cref="N:KGySoft.Drawing"/> namespace for details about the available KGy SOFT Drawing packages and their covered namespaces.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.ArcSegment.DrawAsLinesThreshold">
            <summary>
            The maximum diameter for Bresenham ellipse drawing. Above this threshold, it's faster to draw the ellipse as flattened Bézier curves.
            Also, as lines, no overflow will occur for big radii.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.Brush">
            <summary>
            Represents a brush for shape filling operations. Use the static <c>Create...</c> methods to create an instance.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_Brush.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para>Brushes are used for filling shapes. There are several shape-filling methods in the <see cref="T:KGySoft.Drawing.Shapes.BitmapDataExtensions"/> class, whose names start with <c>Fill</c> or <c>BeginFill</c>.
            The ones that have no <see cref="T:KGySoft.Drawing.Shapes.Brush"/> parameter use a solid brush implicitly, created from the specified <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance.</para>
            <para>The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> class is abstract, and you can create instances by using the static <c>Create...</c> methods. The created instances are immutable.</para>
            <note>In fact, even a <see cref="T:KGySoft.Drawing.Shapes.Pen"/> uses a <see cref="T:KGySoft.Drawing.Shapes.Brush"/> internally for drawing the outlines of shapes.
            You can use the appropriate constructor, or the <see cref="P:KGySoft.Drawing.Shapes.Pen.Brush"/> property to set a brush for a <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.</note>
            </remarks>
            <example>
            <para>The following table enlists the available brushes and their factory methods:
            <table class="table is-hoverable"><thead><tr><th width="80%">Description</th><th width="20%">Image Example</th></tr></thead><tbody>
            <tr><td><see cref="O:KGySoft.Drawing.Shapes.Brush.CreateSolid">CreateSolid</see>: Creates a solid brush with a single color. <see cref="T:KGySoft.Drawing.Imaging.Color32"/>, <see cref="T:KGySoft.Drawing.Imaging.Color64"/>
            and <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> overloads are available, and you can also use the named <see cref="T:System.Drawing.Color"/> members to cast them to <see cref="T:KGySoft.Drawing.Imaging.Color32"/> implicitly.
            For example, <c>Brush.CreateSolid(Color32.FromArgb(128, Color.Blue))</c> creates a blue solid brush with 50% transparency that can produce a similar result to the one in the image.</td>
            <td><img src="../Help/Images/DrawingOptionsAlphaBlendingEnabledNoAA.png" alt="Polygon filled with 50% transparency, AntiAliasing = false, AlphaBlending = true."/></td></tr>
            <tr><td><para><see cref="O:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient">CreateLinearGradient</see>: Creates a linear gradient brush. There are two groups of overloads:
            one for specifying a pair of start/end points optionally with some <see cref="T:KGySoft.Drawing.Shapes.GradientWrapMode"/>, and another one with an angle, which automatically stretches the gradient for the paths to fill.</para>
            <para>The top image uses specific start/end points without repeating the gradient, whereas the bottom one just specified a zero angle to create a horizontal gradient.
            Note that in the bottom image the start/end points are automatically adjusted to the bounds of the shape in each fill sessions. Both examples filled a single elliptic path with three different translations.</para>
            <para>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.GradientWrapMode"/> enumeration and the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Single,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> method for more image examples.</para></td>
            <td><img src="../Help/Images/BrushLinearGradientWrapModeStop.png" alt="Linear gradient brush with start/end points"/>
            <br/><img src="../Help/Images/BrushLinearGradientAngle.png" alt="Linear gradient brush with an angle"/></td></tr>
            <tr><td><para><see cref="O:KGySoft.Drawing.Shapes.Brush.CreateTexture">CreateTexture</see>: Creates a texture brush. A <see cref="T:KGySoft.Drawing.Shapes.TextureMapMode"/> can be specified, which allows tiling, stretching, centering and a few other modes.</para>
            <para>The top image uses a texture with a map mode of tiling with mirroring on both axes, whereas the bottom one centers the same texture and uses no alpha blending, so where there is no texture pixel to set,
            the path region cuts a transparent hole in the image. Both examples filled a single elliptic path with three different translations.</para>
            <para>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.TextureMapMode"/> enumeration for more image examples.</para></td>
            <td><img src="../Help/Images/BrushTextureTileFlipXY.png" alt="Texture brush with TileFlipXY map mode"/>
            <br/><img src="../Help/Images/BrushTextureCenter.png" alt="Texture brush with Center map mode"/></td></tr>
            </tbody></table></para>
            </example>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Brush.PathSessionBase.FinalizeSession">
            <summary>
            Completing the session if it wasn't canceled and there were no errors. Unlike Dispose, this executes only on success.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.Brush.SolidRegionScanner.SolidScannerContext">
            <summary>
            Contains thread-specific data for region scanning
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.Brush.AntiAliasingRegionScanner.AntiAliasingScannerContext">
            <summary>
            Contains thread-specific data for region scanning
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.Brush.ActiveEdgeTableNonZero.sortStabilizerDelta">
            <summary>
            A constant, that is smaller than snapping factor for subpixel size, used to prevent sorting from mixing up elements with the same key.
            Its value is smaller than subpixel snapping distance (actually the same as equality tolerance for interpolated resizing).
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.Brush.EdgeInfo">
            <summary>
            Represents an edge during the traversal of the raw vertices. The fields can be mutated during processing.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.Brush.EdgeEntry">
            <summary>
            Represents an entry in the global edge table. Unlike <see cref="T:KGySoft.Drawing.Shapes.Brush.EdgeInfo"/>, this struct is not mutable.
            The basic idea is taken from here: https://www.cs.rit.edu/~icss571/filling/how_to.html
            The slope of the edge can be defined as y = mx + b, where m is the slope and b = y - intercept.
            From this, the reciprocal slope can be defined as x = py + q where p and q are analogue to m and b.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Brush.CreateSolid(KGySoft.Drawing.Imaging.Color32)">
            <summary>
            Creates a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with the specified 32-bit color.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Shapes_Brush_CreateSolid.htm">online help</a> for an image example.</div>
            </summary>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.Color32"/> value that represents the color of the brush.
            This overload can be used also for <see cref="T:System.Drawing.Color"/> instances as there is an implicit cast from <see cref="T:System.Drawing.Color"/> to <see cref="T:KGySoft.Drawing.Imaging.Color32"/>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that uses the specified color.</returns>
            <remarks>
            <para>Though a solid brush generally uses a single color, filling a <see cref="T:KGySoft.Drawing.Shapes.Path"/> or a directly supported simple shape may use more colors
            if <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing">DrawingOptions.AntiAliasing</see> is <see langword="true"/>,
            or when <paramref name="color"/> has alpha (transparency), and <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see> is <see langword="true"/>.</para>
            <para>If the <paramref name="color"/> has alpha and <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see> is <see langword="true"/>,
            the color space used for blending is determined by the specified <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/>, or, when it is <see langword="null"/>, by the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/>
            of the target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>.</para>
            </remarks>
            <example>
            <para>The following image was created with a solid brush created from 50% transparent blue color, and <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see> was <see langword="true"/>,
            whereas the target bitmap data had <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/> working color space:
            <br/><img src="../Help/Images/DrawingOptionsAlphaBlendingEnabledNoAA.png" alt="Polygon filled with 50% transparency, AntiAliasing = false, AlphaBlending = true."/></para>
            </example>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Brush.CreateSolid(KGySoft.Drawing.Imaging.Color64)">
            <summary>
            Creates a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with the specified 64-bit color.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateSolid(KGySoft.Drawing.Imaging.Color32)"/> overload for details.
            </summary>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.Color64"/> value that represents the color of the brush.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that uses the specified color.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Brush.CreateSolid(KGySoft.Drawing.Imaging.ColorF)">
            <summary>
            Creates a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with the specified 128-bit color.
            <br/>See the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateSolid(KGySoft.Drawing.Imaging.Color32)"/> overload for details.
            </summary>
            <param name="color">A <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> value that represents the color of the brush.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that uses the specified color.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Brush.CreateTexture(KGySoft.Drawing.Imaging.IReadableBitmapData,KGySoft.Drawing.Shapes.TextureMapMode,System.Drawing.Point,System.Boolean)">
            <summary>
            Creates a texture <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with the specified <paramref name="texture"/>.
            <br/>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.TextureMapMode"/> enumeration for image examples.
            </summary>
            <param name="texture">The texture to use for the <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.</param>
            <param name="mapMode">Determines how the texture is mapped to the target area. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Tile"/>.</param>
            <param name="offset">Specifies an offset to apply when mapping the texture to the target area. This parameter is optional.
            <br/>Default value: <see cref="F:System.Drawing.Point.Empty">Point.Empty</see>.</param>
            <param name="hasAlphaHint"><see langword="true"/> to indicate that the <paramref name="texture"/> uses the alpha channel (has transparency); otherwise, <see langword="false"/>. This parameter is optional.
            <br/>Default value: <see langword="true"/>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that uses the specified <paramref name="texture"/>.</returns>
            <remarks>
            <para>This overload maps the entire <paramref name="texture"/> to the target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>. To use only a smaller region of it,
            use the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateTexture(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.TextureMapMode,System.Drawing.Point,System.Boolean)"/> overload instead.</para>
            <para>If the pixel format of the <paramref name="texture"/> has alpha channel, but the <paramref name="texture"/> does not use it,
            you can set the <paramref name="hasAlphaHint"/> parameter to <see langword="false"/> to improve performance.
            If the pixel format of the <paramref name="texture"/> does not have an alpha channel, then this parameter is ignored.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Brush.CreateTexture(KGySoft.Drawing.Imaging.IReadableBitmapData,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.TextureMapMode,System.Drawing.Point,System.Boolean)">
            <summary>
            Creates a texture <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, using the specified <paramref name="textureBounds"/> for the <paramref name="texture"/> parameter.
            <br/>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.TextureMapMode"/> enumeration for image examples.
            </summary>
            <param name="texture">The texture to use for the <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.</param>
            <param name="textureBounds">A <see cref="T:System.Drawing.Rectangle"/> that specifies the actual bounds of the specified <paramref name="texture"/>.</param>
            <param name="mapMode">Determines how the texture is mapped to the target area. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Tile"/>.</param>
            <param name="offset">Specifies an offset to apply when mapping the texture to the target area. This parameter is optional.
            <br/>Default value: <see cref="F:System.Drawing.Point.Empty">Point.Empty</see>.</param>
            <param name="hasAlphaHint"><see langword="true"/> to indicate that the <paramref name="texture"/> uses the alpha channel (has transparency); otherwise, <see langword="false"/>. This parameter is optional.
            <br/>Default value: <see langword="true"/>.</param>
            <returns>A <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that uses the specified <paramref name="texture"/>.</returns>
            <remarks>
            <para>This overload allows you to map only a smaller region of the <paramref name="texture"/> bitmap for the brush. It can be useful when a single bitmap contains multiple textures.</para>
            <para>If the pixel format of the <paramref name="texture"/> has alpha channel, but the <paramref name="texture"/> does not use it,
            you can set the <paramref name="hasAlphaHint"/> parameter to <see langword="false"/> to improve performance.
            If the pixel format of the <paramref name="texture"/> does not have an alpha channel, then this parameter is ignored.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.GradientWrapMode,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Creates a linear gradient <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that blends from one color to another along a straight line specified by <paramref name="startPoint"/> and <paramref name="endPoint"/>.
            <br/>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.GradientWrapMode"/> enumeration for image examples.
            </summary>
            <param name="startPoint">The starting point of the gradient.</param>
            <param name="endPoint">The end point of the gradient.</param>
            <param name="startColor">The starting color of the gradient.</param>
            <param name="endColor">The end color of the gradient.</param>
            <param name="wrapMode">Determines how the gradient is treated outside the gradient area. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Shapes.GradientWrapMode.Stop"/>.</param>
            <param name="workingColorSpace">Determines the color space in which the gradient is calculated. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, which means <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> for this overload.</param>
            <returns>A linear gradient <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that uses the specified parameters.</returns>
            <remarks>
            <para>This overload creates a gradient with fix coordinates. To automatically apply the gradient to the bounds of each <see cref="T:KGySoft.Drawing.Shapes.Path"/>, use the overloads with an <c>angle</c> parameter,
            such as the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Single,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> overload.</para>
            <para>The <paramref name="workingColorSpace"/> parameter affects only the color interpolation, not the blending with the background,
            which is determined by the color space of the target bitmap data (or by <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer">DrawingOptions.Quantizer</see>, if specified).</para>
            <para>In this overload the default value of <paramref name="workingColorSpace"/> maps to <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb">WorkingColorSpace.Srgb</see>, because
            the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type represents a color in the sRGB color space. When creating a monochromatic gradient, specifying <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> can be better, because then the perceived
            mid-tone brightness will be at the middle of the gradient. Otherwise, using <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/> may be more appropriate, so the transition between the colors will seem more "natural".</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Imaging.Color64,KGySoft.Drawing.Imaging.Color64,KGySoft.Drawing.Shapes.GradientWrapMode,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Creates a linear gradient <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that blends from one color to another along a straight line specified by <paramref name="startPoint"/> and <paramref name="endPoint"/>.
            <br/>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.GradientWrapMode"/> enumeration for image examples.
            </summary>
            <param name="startPoint">The starting point of the gradient.</param>
            <param name="endPoint">The end point of the gradient.</param>
            <param name="startColor">The starting color of the gradient.</param>
            <param name="endColor">The end color of the gradient.</param>
            <param name="wrapMode">Determines how the gradient is treated outside the gradient area. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Shapes.GradientWrapMode.Stop"/>.</param>
            <param name="workingColorSpace">Determines the color space in which the gradient is calculated. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, which means <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> for this overload.</param>
            <returns>A linear gradient <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that uses the specified parameters.</returns>
            <remarks>
            <para>This overload creates a gradient with fix coordinates. To automatically apply the gradient to the bounds of each <see cref="T:KGySoft.Drawing.Shapes.Path"/>, use the overloads with an <c>angle</c> parameter,
            such as the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Single,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> overload.</para>
            <para>The <paramref name="workingColorSpace"/> parameter affects only the color interpolation, not the blending with the background,
            which is determined by the color space of the target bitmap data (or by <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer">DrawingOptions.Quantizer</see>, if specified).</para>
            <para>In this overload the default value of <paramref name="workingColorSpace"/> maps to <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb">WorkingColorSpace.Srgb</see>, because
            the <see cref="T:KGySoft.Drawing.Imaging.Color64"/> type represents a color in the sRGB color space. When creating a monochromatic gradient, specifying <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> can be better, because then the perceived
            mid-tone brightness will be at the middle of the gradient. Otherwise, using <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/> may be more appropriate, so the transition between the colors will seem more "natural".</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Shapes.GradientWrapMode,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Creates a linear gradient <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that blends from one color to another along a straight line specified by <paramref name="startPoint"/> and <paramref name="endPoint"/>.
            <br/>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.GradientWrapMode"/> enumeration for image examples.
            </summary>
            <param name="startPoint">The starting point of the gradient.</param>
            <param name="endPoint">The end point of the gradient.</param>
            <param name="startColor">The starting color of the gradient.</param>
            <param name="endColor">The end color of the gradient.</param>
            <param name="wrapMode">Determines how the gradient is treated outside the gradient area. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Shapes.GradientWrapMode.Stop"/>.</param>
            <param name="workingColorSpace">Determines the color space in which the gradient is calculated. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, which means <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/> for this overload.</param>
            <returns>A linear gradient <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that uses the specified parameters.</returns>
            <remarks>
            <para>This overload creates a gradient with fix coordinates. To automatically apply the gradient to the bounds of each <see cref="T:KGySoft.Drawing.Shapes.Path"/>, use the overloads with an <c>angle</c> parameter,
            such as the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Single,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> overload.</para>
            <para>The <paramref name="workingColorSpace"/> parameter affects only the color interpolation, not the blending with the background,
            which is determined by the color space of the target bitmap data (or by <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer">DrawingOptions.Quantizer</see>, if specified).</para>
            <para>In this overload the default value of <paramref name="workingColorSpace"/> maps to <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear">WorkingColorSpace.Linear</see>, because
            the <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> type represents a color in the linear color space. When creating a monochromatic gradient, specifying <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> can be better, because then the perceived
            mid-tone brightness will be at the middle of the gradient. Otherwise, using <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/> may be more appropriate, so the transition between the colors will seem more "natural".</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Single,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.WorkingColorSpace)">
             <summary>
             Creates a linear gradient <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that blends from one color to another along a straight line. The line is specified by an <paramref name="angle"/> only,
             whereas the actual start and end points are determined by the bounding rectangle of the current <see cref="T:KGySoft.Drawing.Shapes.Path"/> in each session.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/M_KGySoft_Drawing_Shapes_Brush_CreateLinearGradient_3.htm">online help</a> for an example with image.</div>
             </summary>
             <param name="angle">The angle of the gradient line in degrees. The angle is measured clockwise from the positive x-axis.</param>
             <param name="startColor">The starting color of the gradient.</param>
             <param name="endColor">The end color of the gradient.</param>
             <param name="workingColorSpace">Determines the color space in which the gradient is calculated. This parameter is optional.
             <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, which means <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> for this overload.</param>
             <returns>A linear gradient <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that uses the specified parameters.</returns>
             <remarks>
             <para>This overload creates a gradient with dynamic coordinates, applying the gradient automatically to the bounds of each <see cref="T:KGySoft.Drawing.Shapes.Path"/>. To use fix coordinates instead,
             use the overloads with a <c>startPoint</c> and <c>endPoint</c> parameters, such as the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.GradientWrapMode,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> overload.</para>
             <para>The <paramref name="workingColorSpace"/> parameter affects only the color interpolation, not the blending with the background,
             which is determined by the color space of the target bitmap data (or by <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer">DrawingOptions.Quantizer</see>, if specified).</para>
             <para>In this overload the default value of <paramref name="workingColorSpace"/> maps to <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb">WorkingColorSpace.Srgb</see>, because
             the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type represents a color in the sRGB color space. When creating a monochromatic gradient, specifying <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> can be better, because then the perceived
             mid-tone brightness will be at the middle of the gradient. Otherwise, using <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/> may be more appropriate, so the transition between the colors will seem more "natural".</para>
             </remarks>
             <example>
             <para>The following example demonstrates how to create a horizontal linear gradient brush that blends from white to black, adjusted always to the currently filled shape:
             <code lang="C#"><![CDATA[
             public IReadWriteBitmapData CreateBitmap()
             {
                 var bitmap = BitmapDataFactory.CreateBitmapData(100, 150);
                 bitmap.Clear(Color.Cyan);
            
                 // Zero angle means horizontal gradient
                 var brush = Brush.CreateLinearGradient(angle: 0f, Color.White, Color.Black);
            
                 // Filling the same ellipse three times with different offsets
                 foreach (int offset in new[] { -50, 0, 50 })
                 {
                     var options = new DrawingOptions
                     {
                         AntiAliasing = true,
                         Transformation = TransformationMatrix.CreateTranslation(offset, offset + 50)
                     };
            
                     bitmap.FillEllipse(brush, new Rectangle(0, 0, 100, 50), options);
                 }
            
                 return bitmap;
             }]]></code></para>
             <para>The example above produces the result below. Note that the gradient always starts from the left edge of the ellipse and ends at the right edge, regardless of the ellipse's location.
             As a contrast, see the examples at the <see cref="T:KGySoft.Drawing.Shapes.GradientWrapMode"/> enumeration, where the gradients always use specific start and end points.
             <br/><img src="../Help/Images/BrushLinearGradientAngle.png" alt="Three ellipses filled with horizontal linear gradient from white to black."/></para>
             </example>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Single,KGySoft.Drawing.Imaging.Color64,KGySoft.Drawing.Imaging.Color64,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Creates a linear gradient <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that blends from one color to another along a straight line. The line is specified by an <paramref name="angle"/> only,
            whereas the actual start and end points are determined by the bounding rectangle of the current <see cref="T:KGySoft.Drawing.Shapes.Path"/> in each session.
            <br/>See the <strong>Examples</strong> section of the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Single,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> overload for an example with image.
            </summary>
            <param name="angle">The angle of the gradient line in degrees. The angle is measured clockwise from the positive x-axis.</param>
            <param name="startColor">The starting color of the gradient.</param>
            <param name="endColor">The end color of the gradient.</param>
            <param name="workingColorSpace">Determines the color space in which the gradient is calculated. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, which means <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> for this overload.</param>
            <returns>A linear gradient <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that uses the specified parameters.</returns>
            <remarks>
            <para>This overload creates a gradient with dynamic coordinates, applying the gradient automatically to the bounds of each <see cref="T:KGySoft.Drawing.Shapes.Path"/>. To use fix coordinates instead,
            use the overloads with a <c>startPoint</c> and <c>endPoint</c> parameters, such as the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.GradientWrapMode,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> overload.</para>
            <para>The <paramref name="workingColorSpace"/> parameter affects only the color interpolation, not the blending with the background,
            which is determined by the color space of the target bitmap data (or by <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer">DrawingOptions.Quantizer</see>, if specified).</para>
            <para>In this overload the default value of <paramref name="workingColorSpace"/> maps to <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb">WorkingColorSpace.Srgb</see>, because
            the <see cref="T:KGySoft.Drawing.Imaging.Color32"/> type represents a color in the sRGB color space. When creating a monochromatic gradient, specifying <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> can be better, because then the perceived
            mid-tone brightness will be at the middle of the gradient. Otherwise, using <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/> may be more appropriate, so the transition between the colors will seem more "natural".</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Single,KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.WorkingColorSpace)">
            <summary>
            Creates a linear gradient <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that blends from one color to another along a straight line. The line is specified by an <paramref name="angle"/> only,
            whereas the actual start and end points are determined by the bounding rectangle of the current <see cref="T:KGySoft.Drawing.Shapes.Path"/> in each session.
            <br/>See the <strong>Examples</strong> section of the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Single,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> overload for an example with image.
            </summary>
            <param name="angle">The angle of the gradient line in degrees. The angle is measured clockwise from the positive x-axis.</param>
            <param name="startColor">The starting color of the gradient.</param>
            <param name="endColor">The end color of the gradient.</param>
            <param name="workingColorSpace">Determines the color space in which the gradient is calculated. This parameter is optional.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Default"/>, which means <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> for this overload.</param>
            <returns>A linear gradient <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that uses the specified parameters.</returns>
            <remarks>
            <para>This overload creates a gradient with dynamic coordinates, applying the gradient automatically to the bounds of each <see cref="T:KGySoft.Drawing.Shapes.Path"/>. To use fix coordinates instead,
            use the overloads with a <c>startPoint</c> and <c>endPoint</c> parameters, such as the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.GradientWrapMode,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> overload.</para>
            <para>The <paramref name="workingColorSpace"/> parameter affects only the color interpolation, not the blending with the background,
            which is determined by the color space of the target bitmap data (or by <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer">DrawingOptions.Quantizer</see>, if specified).</para>
            <para>In this overload the default value of <paramref name="workingColorSpace"/> maps to <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear">WorkingColorSpace.Linear</see>, because
            the <see cref="T:KGySoft.Drawing.Imaging.ColorF"/> type represents a color in the linear color space. When creating a monochromatic gradient, specifying <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> can be better, because then the perceived
            mid-tone brightness will be at the middle of the gradient. Otherwise, using <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/> may be more appropriate, so the transition between the colors will seem more "natural".</para>
            </remarks>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.DirectDrawer">
            <summary>
            This class is used to draw thin paths and to fill rectangles with solid colors. These drawing algorithms are actually duplicated in the classes
            derived from DrawThinPathSession in <see cref="T:KGySoft.Drawing.Shapes.Brush"/>. These are used in special cases, and are optimized for performance.
            See also the comments in <see cref="T:KGySoft.Drawing.Shapes.SolidBrush"/> for more info.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.DrawingOptions">
            <summary>
            Provides options for drawing and filling shapes. See the description of the properties for details and examples.
            The default options (which is also used when <see langword="null"/> is passed to the drawing methods) uses alpha blending but no anti-aliasing,
            and uses fast shape-filling and thin path drawing strategies.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation">
             <summary>
             Gets or sets the transformation matrix to apply when drawing shapes.
             <br/>Default value: <see cref="F:KGySoft.Drawing.Shapes.TransformationMatrix.Identity">TransformationMatrix.Identity</see>.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Shapes_DrawingOptions_Transformation.htm">online help</a> for an example with image.</div>
             </summary>
             <remarks>
             <para>This property allows applying transformations (e.g. translation, rotation, zoom, etc.) when drawing shapes.
             It can be particularly useful when drawing shapes directly, without creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.
             For example, the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse">DrawEllipse</see> methods don't offer a parameter for rotation.</para>
             <para>Setting this property to a value other than the identity matrix disables path region caching for <see cref="T:KGySoft.Drawing.Shapes.Path"/> instances,
             even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching">Path.PreferCaching</see> is <see langword="true"/>. To achieve the best performance
             when drawing the same shape with the same transformation multiple times, use a <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance with caching enabled,
             apply the transformation to the <see cref="T:KGySoft.Drawing.Shapes.Path"/>, and use the identity matrix here.</para>
             </remarks>
             <example>
             The following example demonstrates how to draw a rotated ellipse directly, without creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance:
             <code lang="C#"><![CDATA[
             using IReadWriteBitmapData bmp = BitmapDataFactory.CreateBitmapData(100, 100);
             bmp.Clear(Color.Cyan);
            
             // Creating a rotation transformation matrix from the center of the ellipse.
             var tr = TransformationMatrix.CreateRotationDegrees(45f, new PointF(50f, 50f));
             var options = new DrawingOptions { AntiAliasing = true, Transformation = tr };
            
             // Drawing the ellipse with the transformation matrix.
             bmp.DrawEllipse(Color.Blue, 0, 25, 100, 50, options);]]></code>
             <para>The example above produces the following result:
             <br/><img src="../Help/Images/DrawingOptionsTransformation.png" alt="Ellipse drawn with a 45 degree rotation"/></para>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing">
            <summary>
            Gets or sets whether anti-aliasing is enabled when drawing shapes.
            <br/>Default value: <see langword="false"/>.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Shapes_DrawingOptions_AntiAliasing.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para>When anti-aliasing is enabled, the shapes are drawn with smooth edges, which affects both shape filling and path drawing.</para>
            <para>Anti-aliasing uses 16x16 subpixels per pixel to achieve smooth edges. This means that anti-aliased drawing is slower than aliased drawing.</para>
            </remarks>
            <example>
            <para>The following images provide a few examples regarding anti-aliasing:
            <table class="table is-hoverable"><thead><tr><th width="80%">Description</th><th width="20%">Image Example</th></tr></thead><tbody>
            <tr><td>Filling a polygon with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>.</td>
            <td><img src="../Help/Images/DrawingOptionsFillModeAlternate.png" alt="Polygon fill with AntiAliasing = false."/></td></tr>
            <tr><td>Filling a polygon with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="true"/></c>.</td>
            <td><img src="../Help/Images/DrawingOptionsFillModeAlternateAntiAliasing.png" alt="Polygon fill with AntiAliasing = true."/></td></tr>
            <tr><td>Drawing a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> = <see langword="true"/></c>. This is the default configuration of these properties.</td>
            <td><img src="../Help/Images/DrawingOptionsFastThinLinesEnabled.png" alt="Path drawn with AntiAliasing = false, FastThinLines = true."/></td></tr>
            <tr><td>Drawing a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> = <see langword="false"/></c>,
            <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half"/></c>. Note that the lines are more jagged than above.</td>
            <td><img src="../Help/Images/DrawingOptionsFastThinLinesDisabled.png" alt="Path drawn with AntiAliasing = false, FastThinLines = false, DrawPathPixelOffset = PixelOffset.Half."/></td></tr>
            <tr><td>Drawing a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="true"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half"/></c>. The lines are much smoother.</td>
            <td><img src="../Help/Images/DrawingOptionsAntiAliasingEnabled.png" alt="Path drawn with AntiAliasing = true, DrawPathPixelOffset = PixelOffset.Half."/></td></tr>
            <tr><td>Drawing an ellipse with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> = <see langword="true"/></c>. The image is zoomed in for better visibility.</td>
            <td><img src="../Help/Images/DrawingOptionsFastThinLinesEnabledZoomed.png" alt="Zoomed ellipse with AntiAliasing = false, FastThinLines = true."/></td></tr>
            <tr><td>Drawing an ellipse with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> = <see langword="false"/></c>,
            <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half"/></c>. The image is zoomed in for better visibility.</td>
            <td><img src="../Help/Images/DrawingOptionsFastThinLinesDisabledZoomed.png" alt="Zoomed ellipse with AntiAliasing = false, FastThinLines = false, DrawPathPixelOffset = PixelOffset.Half."/></td></tr>
            <tr><td>Drawing an ellipse with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="true"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half"/></c>. The image is zoomed in for better visibility.</td>
            <td><img src="../Help/Images/DrawingOptionsAntiAliasingEnabledZoomed.png" alt="Zoomed ellipse with AntiAliasing = true."/></td></tr>
            </tbody></table></para>
            </example>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines">
            <summary>
            Gets or sets whether drawing <see cref="T:KGySoft.Drawing.Shapes.Path"/>s and primitive shapes with thin lines are drawn with a faster algorithm when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> is <see langword="false"/>.
            <br/>Default value: <see langword="true"/>.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Shapes_DrawingOptions_FastThinLines.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para>When <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is <see langword="true"/>, thin lines (that is, when <see cref="P:KGySoft.Drawing.Shapes.Pen.Width">Pen.Width</see> is less or equal to 1) and arcs
            are drawn with a Bresenham-like algorithm, which is both faster and produces better results than the default algorithm.</para>
            <para>This property has no effect when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> is <see langword="true"/>.</para>
            </remarks>
            <example>
            <para>The following images provide a few examples:
            <table class="table is-hoverable"><thead><tr><th width="80%">Description</th><th width="20%">Image Example</th></tr></thead><tbody>
            <tr><td>Drawing a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> = <see langword="true"/></c>. This is the default configuration of these properties.</td>
            <td><img src="../Help/Images/DrawingOptionsFastThinLinesEnabled.png" alt="Path drawn with AntiAliasing = false, FastThinLines = true."/></td></tr>
            <tr><td>Drawing a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> = <see langword="false"/></c>,
            <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half"/></c>. Note that the lines are more jagged than above.</td>
            <td><img src="../Help/Images/DrawingOptionsFastThinLinesDisabled.png" alt="Path drawn with AntiAliasing = false, FastThinLines = false, DrawPathPixelOffset = PixelOffset.Half."/></td></tr>
            <tr><td>Drawing a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="true"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half"/></c>. The lines are much smoother.</td>
            <td><img src="../Help/Images/DrawingOptionsAntiAliasingEnabled.png" alt="Path drawn with AntiAliasing = true, DrawPathPixelOffset = PixelOffset.Half."/></td></tr>
            <tr><td>Drawing an ellipse with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> = <see langword="true"/></c>. The image is zoomed in for better visibility.</td>
            <td><img src="../Help/Images/DrawingOptionsFastThinLinesEnabledZoomed.png" alt="Zoomed ellipse with AntiAliasing = false, FastThinLines = true."/></td></tr>
            <tr><td>Drawing an ellipse with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> = <see langword="false"/></c>,
            <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half"/></c>. The image is zoomed in for better visibility.</td>
            <td><img src="../Help/Images/DrawingOptionsFastThinLinesDisabledZoomed.png" alt="Zoomed ellipse with AntiAliasing = false, FastThinLines = false, DrawPathPixelOffset = PixelOffset.Half."/></td></tr>
            </tbody></table></para>
            <para>Though enabling <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> usually produces better results, sometimes it still may be beneficial to disable it. For example,
            when filling and drawing the same <see cref="T:KGySoft.Drawing.Shapes.Path"/> without anti-aliasing, in some cases the 1-pixel width outline may not be perfectly aligned with the fill area, unless <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is disabled:
            <table class="table is-hoverable"><thead><tr><th width="80%">Description</th><th width="20%">Image Example</th></tr></thead><tbody>
            <tr><td>Filling and drawing the same polygon with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> = <see langword="true"/></c>. You can observe alignment issues.</td>
            <td><img src="../Help/Images/DrawingOptionsFillWithFastThinLinesEnabled.png" alt="Polygon fill + draw with AntiAliasing = false, FastThinLines = true."/></td></tr>
            <tr><td>Filling and drawing the same polygon with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> = <see langword="false"/></c>. Now there is no alignment issue</td>
            <td><img src="../Help/Images/DrawingOptionsFillWithFastThinLinesDisabled.png" alt="Polygon fill + draw with AntiAliasing = false, FastThinLines = false."/></td></tr>
            </tbody></table></para>
            </example>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">
            <summary>
            Gets or sets whether alpha blending is enabled when drawing shapes.
            <br/>Default value: <see langword="true"/>.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Shapes_DrawingOptions_AlphaBlending.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para>When this property is <see langword="true"/>, the alpha channel of the colors is blended with the target image.
            The used color space for blending is the target's <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/>, or the one that the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> uses (if specified).</para>
            <para>Alpha blending may be required in two cases: when the used <see cref="T:KGySoft.Drawing.Shapes.Brush"/> has transparent colors, or when the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> property is <see langword="true"/>.</para>
            <para>If this property is <see langword="false"/>, the alpha channel is written directly to the target image. This is usually not desired with anti-aliased shapes, except for already transparent background images,
            because it may produce alpha pixels along the edges of the shapes, even when the background is fully opaque.</para>
            <para>When <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending"/> is <see langword="true"/>, drawing or filling a shape with a completely transparent <see cref="T:KGySoft.Drawing.Shapes.Brush"/> will not affect the target image,
            whereas when it is <see langword="false"/>, a transparent <see cref="T:KGySoft.Drawing.Shapes.Brush"/> can be used to draw transparent shapes.</para>
            </remarks>
            <example>
            <para>The following images provide a few examples regarding alpha blending:
            <table class="table is-hoverable"><thead><tr><th width="80%">Description</th><th width="20%">Image Example</th></tr></thead><tbody>
            <tr><td>Filling a polygon with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending"/> = <see langword="false"/></c>,
            using a solid brush with 50% transparency on an alpha gradient background. Note that no blending occurs, so the polygon is just filled with the specified alpha color.</td>
            <td><img src="../Help/Images/DrawingOptionsAlphaBlendingDisabledNoAA.png" alt="Polygon filled with 50% transparency, AntiAliasing = false, AlphaBlending = false."/></td></tr>
            <tr><td>Filling a polygon with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending"/> = <see langword="true"/></c>,
            using a solid brush with 50% transparency on an alpha gradient background. The blending uses the color space of the target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, which is linear in this case.</td>
            <td><img src="../Help/Images/DrawingOptionsAlphaBlendingEnabledNoAA.png" alt="Polygon filled with 50% transparency, AntiAliasing = false, AlphaBlending = true."/></td></tr>
            <tr><td>Filling a polygon with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending"/> = <see langword="false"/></c>, using a completely transparent brush.
            Note that this way we can "cut" transparent "holes" into a bitmap. If the target does not support transparency, the shape will be filled with the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.BackColor"/> color of the target bitmap data.</td>
            <td><img src="../Help/Images/DrawingOptionsAlphaBlendingDisabledTr.png" alt="Polygon filled with transparency, AlphaBlending = false."/></td></tr>
            <tr><td>Filling a polygon with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="true"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending"/> = <see langword="false"/></c>.
            When anti-aliasing is enabled, it's not recommended to turn off alpha blending (unless the background is transparent), because it may produce alpha pixels along the edges of the shapes, even when the background is fully opaque.</td>
            <td><img src="../Help/Images/DrawingOptionsAlphaBlendingDisabledAA.png" alt="filling a polygin with AntiAliasing = true, AlphaBlending = false."/></td></tr>
            <tr><td>Filling a polygon with <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="true"/></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending"/> = <see langword="true"/></c>.</td>
            <td><img src="../Help/Images/DrawingOptionsFillModeAlternateAntiAliasing.png" alt="Filling a polygin with AntiAliasing = true, AlphaBlending = true."/></td></tr>
            </tbody></table></para>
            </example>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.DrawingOptions.FillMode">
            <summary>
            Gets or sets the fill mode to use when filling shapes.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Shapes.ShapeFillMode.Alternate"/>.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Shapes_DrawingOptions_FillMode.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para>If a polygon has no self-crossing lines, then both fill modes produce the same result, in which case the default <see cref="F:KGySoft.Drawing.Shapes.ShapeFillMode.Alternate"/> mode can be a better choice because it is faster.</para>
            </remarks>
            <example>
            <para>The following examples demonstrate the difference between the two fill modes:
            <table class="table is-hoverable"><thead><tr><th width="80%">Description</th><th width="20%">Image Example</th></tr></thead><tbody>
            <tr><td><c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FillMode"/> = <see cref="F:KGySoft.Drawing.Shapes.ShapeFillMode.Alternate">ShapeFillMode.Alternate</see></c> (default): When scanning the region of a polygon to be filled,
            a point is considered to be the part of the polygon if the scanline crosses odd number of lines before reaching the point to be drawn,
            and is considered not to be the part of the polygon if the scanline crosses even number of lines. This strategy is faster than the <see cref="F:KGySoft.Drawing.Shapes.ShapeFillMode.NonZero"/> mode,
            though it may produce "holes" when a polygon has self-crossing lines.</td>
            <td><img src="../Help/Images/DrawingOptionsFillModeAlternateAntiAliasing.png" alt="FillMode = ShapeFillMode.Alternate"/></td></tr>
            <tr><td><c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FillMode"/> = <see cref="F:KGySoft.Drawing.Shapes.ShapeFillMode.NonZero">ShapeFillMode.NonZero</see></c>: It considers the direction of the path segments at each intersection,
            adding/subtracting one at every clockwise/counterclockwise intersection. The point is considered to be the part of the polygon if the sum is not zero.</td>
            <td><img src="../Help/Images/DrawingOptionsFillModeNonZero.png" alt="FillMode = ShapeFillMode.NonZero"/></td></tr>
            </tbody></table></para>
            </example>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.DrawingOptions.ScanPathPixelOffset">
            <summary>
            Gets or sets the pixel offset to use for the scanlines when scanning the region of a <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half"/>.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Shapes_DrawingOptions_ScanPathPixelOffset.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para>When filling a <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance, the region is scanned by horizontal lines (scanlines) to determine which pixels are inside the path.
            When the value of this property is <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.None"/>, the scanning is performed at the top of the pixels, whereas when it is <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half"/>,
            the scanning is performed at the center of the pixels.</para>
            <para>When <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> is <see langword="true"/>, the pixel offset refers to the subpixels, and the difference is much less noticeable.</para>
            </remarks>
            <example>
            <para>The following images provide a few examples:
            <table class="table is-hoverable"><thead><tr><th width="80%">Description</th><th width="20%">Image Example</th></tr></thead><tbody>
            <tr><td><c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.ScanPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.None">PixelOffset.None</see></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c>:
            When filling shapes, the scanning of edges occurs at the top of the pixels. The shape in the example has integer vertex coordinates, the top edge is descending,
            whereas the bottom is ascending 1 pixel from the left to the right. The example is enlarged to show the effect.</td>
            <td><img src="../Help/Images/DrawingOptionsScanPixelOffsetNone.png" alt="Almost rectangular shape with ScanPixelOffset = PixelOffset.None"/></td></tr>
            <tr><td><c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.ScanPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half">PixelOffset.Half</see></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="false"/></c> (default):
            The scanning of edges occurs at the center of the pixels. The shape is the same as above. The example is enlarged to show the effect.</td>
            <td><img src="../Help/Images/DrawingOptionsScanPixelOffsetHalf.png" alt="Almost rectangular shape with ScanPixelOffset = PixelOffset.Half"/></td></tr>
            <tr><td><c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.ScanPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.None">PixelOffset.None</see></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="true"/></c>:
            When filling shapes, the scanning of edges occurs at the top of the subpixels. When anti-aliasing is enabled, <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.ScanPathPixelOffset"/> makes a much less noticeable difference,
            though the gradients of the top and bottom lines are a bit different. The example is enlarged to show the effect.</td>
            <td><img src="../Help/Images/DrawingOptionsScanPixelOffsetNoneAA.png" alt="Almost rectangular shape with ScanPixelOffset = PixelOffset.None, AntiAliasing = true"/></td></tr>
            <tr><td><c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.ScanPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half">PixelOffset.Half</see></c>, <c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> = <see langword="true"/></c>:
            The scanning of edges occurs at the center of the subpixels. The result is almost the same as above, though the gradients of the top and bottom lines are more symmetric. The example is enlarged to show the effect.</td>
            <td><img src="../Help/Images/DrawingOptionsScanPixelOffsetHalfAA.png" alt="Almost rectangular shape with ScanPixelOffset = PixelOffset.Half, AntiAliasing = true"/></td></tr>
            </tbody></table></para>
            </example>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset">
            <summary>
            Gets or sets the pixel offset to use before applying the <see cref="P:KGySoft.Drawing.Shapes.Pen.Width">Pen.Width</see> when drawing a shape.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.None"/>.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Shapes_DrawingOptions_DrawPathPixelOffset.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para>When drawing a shape, the pen width is applied around the path. When the value of this property is <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half"/>,
            the point coordinates of the path are shifted by half a pixel before applying the pen width.</para>
            <para>When <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is <see langword="true"/> and <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> is <see langword="false"/>, and all points are at integer coordinates, the value of this property makes no difference.</para>
            </remarks>
            <example>
            <para>The following images provide a few examples:
            <table class="table is-hoverable"><thead><tr><th width="80%">Description</th><th width="20%">Image Example</th></tr></thead><tbody>
            <tr><td><c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.None">PixelOffset.None</see></c> (default):
            When drawing paths, the point coordinates are not adjusted before applying the pen width.
            When <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> is <see langword="true"/>, for polygons with every point at integer coordinates, this causes blurry horizontal and vertical lines for odd pen widths and sharp ones for even pen widths.
            The left rectangle was drawn with a 1 pixel wide pen, and the right one with a 2 pixel wide pen.</td>
            <td><img src="../Help/Images/DrawingOptionsDrawPathPixelOffsetNone.png" alt="Rectangles with DrawPathPixelOffset = PixelOffset.None"/></td></tr>
            <tr><td><c><see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset"/> = <see cref="F:KGySoft.Drawing.Shapes.PixelOffset.Half">PixelOffset.Half</see></c>:
            The point coordinates are shifted by a half pixel right and down before applying the pen width.
            When <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> is <see langword="true"/>, for polygons with every point at integer coordinates, this causes sharp horizontal and vertical lines for odd pen widths and blurry ones for even pen widths.
            The left rectangle was drawn with a 1 pixel wide pen, and the right one with a 2 pixel wide pen.</td>
            <td><img src="../Help/Images/DrawingOptionsDrawPathPixelOffsetHalf.png" alt="Rectangles with DrawPathPixelOffset = PixelOffset.Half"/></td></tr>
            </tbody></table></para>
            </example>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer">
            <summary>
            Gets or sets an <see cref="T:KGySoft.Drawing.Imaging.IQuantizer"/> instance to use when drawing shapes.
            <br/>Default value: <see langword="null"/>.
            <br/>See the <strong>Examples</strong> section of the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> property for an example.
            </summary>
            <remarks>
            <para>Setting a quantizer allows using fewer colors than the target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> supports.
            Even when this property is <see langword="null"/>, the colors are automatically quantized to the target's supported color range.</para>
            </remarks>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer">
             <summary>
             Gets or sets an <see cref="T:KGySoft.Drawing.Imaging.IDitherer"/> instance to use when drawing shapes.
             <br/>Default value: <see langword="null"/>.
             <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/P_KGySoft_Drawing_Shapes_DrawingOptions_Ditherer.htm">online help</a> for an example with images.</div>
             </summary>
             <remarks>
             <para>If the target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> does not support the color depth of the drawn shape,
             or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> is also set, setting a ditherer can help to preserve the original details.</para>
             <para>If <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> is <see langword="null"/>, and the target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> is not a low-color bitmap, then this property might be ignored.</para>
             </remarks>
             <example>
             <para>The following example demonstrates how to draw a shape with dithering:
             <code lang="C#"><![CDATA[
             public IReadWriteBitmapData CreateBlackAndWhiteDrawing(IDitherer? ditherer)
             {
                 // Creating a 1bpp image, which has a black white palette by default
                 IReadWriteBitmapData bmp = BitmapDataFactory.CreateBitmapData(100, 100, KnownPixelFormat.Format1bppIndexed);
            
                 // Clearing the image with Cyan, using the ditherer
                 bmp.Clear(Color.Cyan, ditherer);
            
                 // Specifying a path with a star shape, translated to the center of the 100 x 100 bitmap
                 var path = new Path(false)
                     .TransformTranslation(1, 5)
                     .AddPolygon(new(50, 0), new(79, 90), new(2, 35), new(97, 35), new(21, 90));
            
                 // Filling the star shape with a blue brush
                 bmp.FillPath(Color.Blue, path, new DrawingOptions { Ditherer = ditherer });
            
                 return bmp;
             }]]></code></para>
             <para>
             The example above may produce the following results:
             <table class="table is-hoverable"><thead><tr><th width="80%">Description</th><th width="20%">Image Example</th></tr></thead><tbody>
             <tr><td>Ditherer is <see langword="null"/>. The colors are automatically quantized to the black and white target. Cyan becomes white, whereas blue becomes black.</td>
             <td><img src="../Help/Images/DrawingOptionsQuantizing.png" alt="Shape drawing with black and white quantizing."/></td></tr>
             <tr><td>Using <see cref="T:KGySoft.Drawing.Imaging.InterleavedGradientNoiseDitherer"/>. The shades of cyan and blue appear in dithering patterns.</td>
             <td><img src="../Help/Images/DrawingOptionsDitheringIGN.png" alt="Shape drawing with black and white quantizing, using interleaved gradient noise dithering."/></td></tr>
             <tr><td>Using <see cref="P:KGySoft.Drawing.Imaging.OrderedDitherer.BlueNoise"/> dithering. The shades of cyan and blue appear in dithering patterns.</td>
             <td><img src="../Help/Images/DrawingOptionsDitheringBN.png" alt="Shape drawing with black and white quantizing, using blue noise dithering."/></td></tr>
             </tbody></table></para>
             </example>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.DrawingOptions.CacheRegionLimit">
            <summary>
            Gets or sets the maximum pixel size for caching the region of a <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.
            If the region has more pixels than this value, it will be re-scanned in each drawing session.
            <br/>Default value: 16777216, which is 16 MB for anti-aliased regions or 2 MB for aliased regions.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.DrawingOptions.IsIdentityTransform">
            <summary>
            To avoid the callers use options.Transformation.IsIdentity, which would copy the matrix.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.DrawingOptions.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> class.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.DrawingOptions.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object"/> is equal to this <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance.
            </summary>
            <param name="obj">The <see cref="T:System.Object" /> to compare with this <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance.</param>
            <returns><see langword="true"/>, if the current <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance is equal to the <paramref name="obj" /> parameter; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.DrawingOptions.GetHashCode">
            <summary>
            Returns a hash code for this instance.
            </summary>
            <returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
            <remarks>
            <para>You should not change the public properties of this class after using it as a key in a hash table.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.LinearGradientBrush.#ctor(System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Shapes.GradientWrapMode,System.Boolean)">
            <summary>
            This constructor creates a gradient texture with specific start/end points that is not bound to any path.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.LinearGradientBrush.#ctor(System.Single,KGySoft.Drawing.Imaging.ColorF,KGySoft.Drawing.Imaging.ColorF,System.Boolean)">
            <summary>
            This constructor is to create a gradient with a specific angle that will be applied to each path.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.Path">
            <summary>
            Represents the path of a custom shape to be drawn or filled. The path can consist of multiple open or closed figures.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_Path.htm">online help</a> for an example with image.</div>
            </summary>
            <remarks>
            <para>Though you can use the dedicated methods of the <see cref="T:KGySoft.Drawing.Shapes.BitmapDataExtensions"/> class to draw or fill simple shapes, the <see cref="T:KGySoft.Drawing.Shapes.Path"/> class
            provides a more effective way to define custom shapes. The <see cref="T:KGySoft.Drawing.Shapes.Path"/> class can be used to define complex shapes consisting of multiple figures, which can be
            then drawn or filled in a single operation.</para>
            <para>But even if you need to draw or fill a simple shape multiple times, using a <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance can be more effective, because the region of the path
            can be cached for faster drawing. The caching can be enabled by setting the <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> property to <see langword="true"/>.</para>
            <note>Please note that in some cases , the <see cref="T:KGySoft.Drawing.Shapes.Path"/> class can be less effective than using the dedicated methods of the <see cref="T:KGySoft.Drawing.Shapes.BitmapDataExtensions"/> class.
            For example, drawing 1 pixel wide lines with no anti-aliasing may use a different algorithm that never uses caching. Also, very large regions may not be cached
            (this can be adjusted by the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.CacheRegionLimit">DrawingOptions.CacheRegionLimit</see> property).</note>
            </remarks>
            <example>
            <para>The following example demonstrates how to create a <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to draw a custom shape:
            <code lang="C#"><![CDATA[
            // It supports flow syntax, so you could even inline it into a Draw/FillPath call:
            var path = new Path()
                .TransformTranslation(1, 1)
                .AddPolygon(new(50, 0), new(79, 90), new(2, 35), new(97, 35), new(21, 90))
                .AddEllipse(0, 0, 100, 100)
                .AddRoundedRectangle(0, 0, 100, 100, cornerRadius: 10);
            
            // Calculating the required size of the bitmap, adding symmetric padding:
            var bounds = path.Bounds;
            var size = bounds.Size + new Size(bounds.Location) * 2;
            
            // Now creating a managed bitmap data but you can also use the GetReadWriteBitmapData
            // extensions of the dedicated packages for a GDI+ Bitmap, WPF WriteableBitmap, SKBitmap, etc.
            using var bitmapData = BitmapDataFactory.CreateBitmapData(size);
            bitmapData.Clear(Color.Cyan);
            
            // Using implicit 1 pixel wide solid pen and default drawing options:
            bitmapData.DrawPath(Color.Blue, path);]]></code></para>
            <para>The example above produces the following result:
            <br/><img src="../Help/Images/DrawingOptionsFastThinLinesEnabled.png" alt="Custom path drawn with a 1 pixel wide pen and default options."/></para>
            </example>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.Path.IsEmpty">
            <summary>
            Gets whether this <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance is empty.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.Path.Bounds">
            <summary>
            Gets the bounds of this <see cref="T:KGySoft.Drawing.Shapes.Path"/> in pixels required for filling it by a <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.
            When drawing, the returned bounds needed to be inflated depending on the corresponding <see cref="P:KGySoft.Drawing.Shapes.Pen.Width">Pen.Width</see>.
            </summary>
            <exception cref="T:System.OverflowException">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> contains points that exceed the bounds of a <see cref="T:System.Drawing.Rectangle"/>.</exception>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.Path.Transformation">
            <summary>
            Gets the currently active transformation matrix that is applied to the items that are added to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.Path.PreferCaching">
            <summary>
            Gets or sets whether the region of the path is allowed to be cached for faster drawing.
            <br/>Default value: <see langword="true"/>, unless it was set to <see langword="false"/> in the constructor.
            <br/>See also the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.CacheRegionLimit">DrawingOptions.CacheRegionLimit</see> property.
            </summary>
            <value><see langword="true"/> to allow caching the region of this <see cref="T:KGySoft.Drawing.Shapes.Path"/>,
            so subsequent fill/draw operation with the same unchanged path will be faster; otherwise, <see langword="false"/>.</value>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.#ctor(System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Shapes.Path"/> class.
            </summary>
            <param name="preferCaching"><see langword="true"/> to allow caching the region of this <see cref="T:KGySoft.Drawing.Shapes.Path"/>; otherwise, <see langword="false"/>.
            See the <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> property for details. This parameter is optional.
            <br/>Default value: <see langword="true"/>.
            </param>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.#ctor(KGySoft.Drawing.Shapes.Path)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Shapes.Path"/> class by copying the content of another instance.
            </summary>
            <param name="other"></param>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.Transform(KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.TransformationMatrix)">
            <summary>
            Returns a new <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance, whose figures are transformed by the specified <paramref name="matrix"/>.
            This method does not change the original <paramref name="path"/> instance. To transform the original instance, use the <see cref="M:KGySoft.Drawing.Shapes.Path.TransformAdded(KGySoft.Drawing.Shapes.TransformationMatrix)">TransformAdded</see> method instead.
            </summary>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to transform.</param>
            <param name="matrix">The <see cref="T:KGySoft.Drawing.Shapes.TransformationMatrix"/> to apply.</param>
            <returns>A new <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance that contains the same figures as the original <paramref name="path"/>, transformed by the specified <paramref name="matrix"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddPoint(System.Single,System.Single)">
            <summary>
            Adds a point to the current figure of this <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.
            </summary>
            <param name="x">The x-coordinate of the point to add.</param>
            <param name="y">The y-coordinate of the point to add.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>If the current figure is empty, the added point will be the starting point of the figure.
            Otherwise, the added point will be connected to the last point of the figure.</para>
            <para>When the <see cref="T:KGySoft.Drawing.Shapes.Path"/> is filled, the figures require at least 3 non-collinear points to be rendered. When the <see cref="T:KGySoft.Drawing.Shapes.Path"/> is drawn, even a single point is rendered.
            If the <see cref="P:KGySoft.Drawing.Shapes.Pen.Width">Pen.Width</see> is 1, it means drawing a single pixel, in which case it's much faster
            to use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetColor32(System.Int32,System.Int32,KGySoft.Drawing.Imaging.Color32)">IWritableBitmapData.SetColor32</see> method instead.</para>
            <para>The parameters are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddPoint(System.Drawing.PointF)">
            <summary>
            Adds a point to the current figure of this <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.
            </summary>
            <param name="point">The point to add.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>If the current figure is empty or closed, the added point will be the starting point of a new figure.
            Otherwise, the added point will be connected to the last point of the figure.</para>
            <para>When the <see cref="T:KGySoft.Drawing.Shapes.Path"/> is filled, the figures require at least 3 non-collinear points to be rendered. When the <see cref="T:KGySoft.Drawing.Shapes.Path"/> is drawn, even a single point is rendered.
            If the <see cref="P:KGySoft.Drawing.Shapes.Pen.Width">Pen.Width</see> is 1, it means drawing a single pixel, in which case it's much faster
            to use the <see cref="M:KGySoft.Drawing.Imaging.IWritableBitmapData.SetColor32(System.Int32,System.Int32,KGySoft.Drawing.Imaging.Color32)">IWritableBitmapData.SetColor32</see> method instead.</para>
            <para>The <paramref name="point"/> parameter is not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddLine(System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Adds a line to the current figure of this <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.
            </summary>
            <param name="x1">The x-coordinate of the starting point of the line to add.</param>
            <param name="y1">The y-coordinate of the starting point of the line to add.</param>
            <param name="x2">The x-coordinate of the end point of the line to add.</param>
            <param name="y2">The y-coordinate of the end point of the line to add.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>If the current figure is not empty or closed, the added line will be connected to the last point of the figure.</para>
            <para>When the <see cref="T:KGySoft.Drawing.Shapes.Path"/> is filled, a single line is not rendered. When the <see cref="T:KGySoft.Drawing.Shapes.Path"/> is drawn, the right/bottom values of the coordinates are inclusive,
            so even a single pixel line is rendered.</para>
            <para>The parameters are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddLine(System.Drawing.PointF,System.Drawing.PointF)">
            <summary>
            Adds a line to the current figure of this <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.
            </summary>
            <param name="p1">The starting point of the line to add.</param>
            <param name="p2">The end point of the line to add.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>If the current figure is not empty or closed, the added line will be connected to the last point of the figure.</para>
            <para>When the <see cref="T:KGySoft.Drawing.Shapes.Path"/> is filled, a single line is not rendered. When the <see cref="T:KGySoft.Drawing.Shapes.Path"/> is drawn, the right/bottom values of the coordinates are inclusive,
            so even a single pixel line is rendered.</para>
            <para>The parameters are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddLines(System.Drawing.PointF[])">
            <summary>
            Adds a series of connected lines to the current figure of this <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.
            </summary>
            <param name="points">The points of the line segments to add to the current figure of this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="points"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>If the current figure is not empty or closed, the added lines will be connected to the last point of the figure.</para>
            <para>The <paramref name="points"/> are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddLines(System.Collections.Generic.IEnumerable{System.Drawing.PointF})">
            <summary>
            Adds a series of connected lines to the current figure of this <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.
            </summary>
            <param name="points">The points of the line segments to add to the current figure of this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="points"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>If the current figure is not empty or closed, the added lines will be connected to the last point of the figure.</para>
            <para>The <paramref name="points"/> are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddPolygon(System.Drawing.PointF[])">
            <summary>
            Adds a polygon to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="points">The points of the polygon to add to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="points"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>The <paramref name="points"/> specify the vertices of the polygon.</para>
            <para>This method always adds a new closed figure to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</para>
            <para>The <paramref name="points"/> are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddPolygon(System.Collections.Generic.IEnumerable{System.Drawing.PointF})">
            <summary>
            Adds a polygon to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="points">The points of the polygon to add to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="points"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>The <paramref name="points"/> specify the vertices of the polygon.</para>
            <para>This method always adds a new closed figure to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</para>
            <para>The <paramref name="points"/> are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddRectangle(System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Adds a rectangle to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="x">The x-coordinate of the upper-left corner.</param>
            <param name="y">The y-coordinate of the upper-left corner.</param>
            <param name="width">The width of the rectangle.</param>
            <param name="height">The height of the rectangle.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>The rectangle is added as a new closed figure.</para>
            <para>When filling a rectangle (with identity transformation), the <paramref name="width"/> and <paramref name="height"/> parameters specify the size of the rectangle in pixels.</para>
            <para>When drawing a rectangle (with identity transformation), the right and bottom values are inclusive. If the width of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> is 1,
            a rectangle with zero width and height will be rendered as a single pixel.</para>
            <para>The parameters are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddRectangle(System.Drawing.RectangleF)">
            <summary>
            Adds a rectangle to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="rectangle">The rectangle to add to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>The rectangle is added as a new closed figure.</para>
            <para>When filling a rectangle (with identity transformation), the <see cref="P:System.Drawing.RectangleF.Width"/> and <see cref="P:System.Drawing.RectangleF.Height"/> properties specify the size of the rectangle in pixels
            (<see cref="P:System.Drawing.RectangleF.Right"/> and <see cref="P:System.Drawing.RectangleF.Bottom"/> are exclusive).</para>
            <para>When drawing a rectangle (with identity transformation), the <see cref="P:System.Drawing.RectangleF.Right"/> and <see cref="P:System.Drawing.RectangleF.Bottom"/> values are inclusive.
            If the width of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> is 1, a rectangle with zero width and height will be rendered as a single pixel.</para>
            <para>The <paramref name="rectangle"/> parameter is not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddBezier(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Adds a Bézier curve to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="x1">The x-coordinate of the starting point of the Bézier curve.</param>
            <param name="y1">The y-coordinate of the starting point of the Bézier curve.</param>
            <param name="x2">The x-coordinate of the first control point of the Bézier curve.</param>
            <param name="y2">The y-coordinate of the first control point of the Bézier curve.</param>
            <param name="x3">The x-coordinate of the second control point of the Bézier curve.</param>
            <param name="y3">The y-coordinate of the second control point of the Bézier curve.</param>
            <param name="x4">The x-coordinate of the end point of the Bézier curve.</param>
            <param name="y4">The y-coordinate of the end point of the Bézier curve.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>If the current figure is not empty or closed, the first point of the added curve will be connected to the last point of the figure.</para>
            <para>The parameters are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddBezier(System.Drawing.PointF,System.Drawing.PointF,System.Drawing.PointF,System.Drawing.PointF)">
            <summary>
            Adds a Bézier curve to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="p1">The starting point of the Bézier curve.</param>
            <param name="p2">The first control point of the Bézier curve.</param>
            <param name="p3">The second control point of the Bézier curve.</param>
            <param name="p4">The end point of the Bézier curve.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>If the current figure is not empty or closed, the first point of the added curve will be connected to the last point of the figure.</para>
            <para>The parameters are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddBeziers(System.Drawing.PointF[])">
            <summary>
            Adds a series of Bézier curves to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="points">The points that define the Bézier curves to add to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>If the current figure is not empty or closed, the first point of the added curve will be connected to the last point of the figure.</para>
            <para>The coordinates of the specified <paramref name="points"/> are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddBeziers(System.Collections.Generic.IEnumerable{System.Drawing.PointF})">
            <summary>
            Adds a series of Bézier curves to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="points">The points that define the Bézier curves to add to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>If the current figure is not empty or closed, the first point of the added curve will be connected to the last point of the figure.</para>
            <para>The coordinates of the specified <paramref name="points"/> are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddArc(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Adds an elliptical arc to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is added to the path.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>If the current figure is not empty or closed, the first point of the added arc will be connected to the last point of the figure.</para>
            <para>The coordinates of the specified bounding rectangle are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddArc(System.Drawing.RectangleF,System.Single,System.Single)">
            <summary>
            Adds an elliptical arc to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is added to the path.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>If the current figure is not empty or closed, the first point of the added arc will be connected to the last point of the figure.</para>
            <para>The coordinates of the specified bounding rectangle are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddPie(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Adds a pie shape to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.
            The pie shape is added as a new closed figure.</para>
            <para>The coordinates of the specified bounding rectangle are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddPie(System.Drawing.RectangleF,System.Single,System.Single)">
            <summary>
            Adds a pie shape to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.
            The pie shape is added as a new closed figure.</para>
            <para>The coordinates of the specified bounding rectangle are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddEllipse(System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Adds an ellipse to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>The ellipse is added as a new closed figure.</para>
            <para>The coordinates of the specified bounding rectangle are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddEllipse(System.Drawing.RectangleF)">
            <summary>
            Adds an ellipse to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>The ellipse is added as a new closed figure.</para>
            <para>The coordinates of the specified bounding rectangle are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddRoundedRectangle(System.Single,System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Adds a rounded rectangle to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>, applying the same corner radius to all corners.
            </summary>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="width">The width of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="height">The height of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>The rounded rectangle is added as a new closed figure.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be added.</para>
            <para>The coordinates of the specified bounding rectangle are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddRoundedRectangle(System.Drawing.RectangleF,System.Single)">
            <summary>
            Adds a rounded rectangle to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>The rounded rectangle is added as a new closed figure.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be added.</para>
            <para>The coordinates of the specified bounding rectangle are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddRoundedRectangle(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Adds a rounded rectangle to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="width">The width of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="height">The height of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>The rounded rectangle is added as a new closed figure.</para>
            <para>If any of the corner radius parameters is negative, the absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>The coordinates of the specified bounding rectangle are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddRoundedRectangle(System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single)">
            <summary>
            Adds a rounded rectangle to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>The rounded rectangle is added as a new closed figure.</para>
            <para>If any of the corner radius parameters is negative, the absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>The coordinates of the specified bounding rectangle are not validated here but in the moment of drawing the coordinates of the possibly transformed path points
            must fall into the bounds of an <see cref="T:System.Int32">int</see> value; otherwise, an <see cref="T:System.OverflowException"/> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AddPath(KGySoft.Drawing.Shapes.Path,System.Boolean)">
            <summary>
            Adds the figures of another <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.
            </summary>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to add to this <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</param>
            <param name="connect"><see langword="true"/> to connect the last figure of this <see cref="T:KGySoft.Drawing.Shapes.Path"/> to the first figure of the added <paramref name="path"/>; otherwise, <see langword="false"/>.
            If the last figure of this <see cref="T:KGySoft.Drawing.Shapes.Path"/> is closed or empty, this parameter is ignored.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="path"/> is <see langword="null"/>.</exception>
            <remarks>
            <para>The original <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance remains intact.</para>
            <para>The current <see cref="P:KGySoft.Drawing.Shapes.Path.Transformation"/> is applied to the added figures.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.GetPoints">
            <summary>
            Gets the points of the figures in this <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.
            </summary>
            <returns>The points of the figures in this <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>The returned list contains the points of the figures in the order they were added to the <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.
            Every figure is represented by an array of flattened points that can be interpreted as a series of connected lines.</para>
            <para>If a figure is closed and has at least 3 points, then it is ensured that the last point of the figure is the same as the first point.</para>
            <para>This method can be used to provide a bridge between the <see cref="T:KGySoft.Drawing.Shapes.Path"/> class and other graphics libraries or APIs.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.CloseFigure">
            <summary>
            Closes the current figure. If the current figure is empty or already closed, this method has no effect.
            </summary>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>Closing a figure means that the last point of the figure will be connected to the first point of the figure. This makes a different
            from <see cref="M:KGySoft.Drawing.Shapes.Path.StartFigure">StartFigure</see> only when the <see cref="T:KGySoft.Drawing.Shapes.Path"/> is drawn, because filling always treats the figures as if they were closed.</para>
            <para>After calling this method the next added element will always start a new figure.</para>
            <para>A single point or a line section is always interpreted as an open figure. If the current figure has only a point or a single line,
            this method has the same effect as <see cref="M:KGySoft.Drawing.Shapes.Path.StartFigure">StartFigure</see>.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.StartFigure">
            <summary>
            Starts a new figure without closing the current figure. If the current figure is empty, this method has no effect.
            <br/>See also the <strong>Remarks</strong> section of the <see cref="M:KGySoft.Drawing.Shapes.Path.CloseFigure">CloseFigure</see> method for details.
            </summary>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AsClosed">
            <summary>
            Gets a <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance from this <see cref="T:KGySoft.Drawing.Shapes.Path"/>, in which every figure is closed.
            </summary>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance, if every figure is already closed; otherwise,
            a new <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance, in which every figure is closed.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.TransformAdded(KGySoft.Drawing.Shapes.TransformationMatrix)">
            <summary>
            Transforms the already added items in this <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance by applying the specified <paramref name="matrix"/>.
            This method does not change the value of the <see cref="P:KGySoft.Drawing.Shapes.Path.Transformation"/> property.
            </summary>
            <param name="matrix">The <see cref="T:KGySoft.Drawing.Shapes.TransformationMatrix"/> to apply.</param>
            <returns>The current <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>To leave the current instance intact and return a new one, use the static <see cref="M:KGySoft.Drawing.Shapes.Path.Transform(KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.TransformationMatrix)">Transform</see> method instead.</para>
            <para>To set the transformation for the items added afterward only, use the <see cref="M:KGySoft.Drawing.Shapes.Path.TransformTranslation(System.Single,System.Single)">TransformTranslation</see>,
            <see cref="M:KGySoft.Drawing.Shapes.Path.TransformRotation(System.Single)">TransformRotation</see>, <see cref="M:KGySoft.Drawing.Shapes.Path.TransformTranslation(System.Single,System.Single)">TransformTranslation</see> or <see cref="M:KGySoft.Drawing.Shapes.Path.TransformScale(System.Single,System.Single)">TransformScale</see> methods.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.SetTransformation(KGySoft.Drawing.Shapes.TransformationMatrix)">
            <summary>
            Overwrites the current <see cref="P:KGySoft.Drawing.Shapes.Path.Transformation"/> with a <see cref="T:KGySoft.Drawing.Shapes.TransformationMatrix"/> to be applied
            to the items that are added to the current <see cref="T:KGySoft.Drawing.Shapes.Path"/> after calling this method.
            </summary>
            <param name="matrix">The new <see cref="T:KGySoft.Drawing.Shapes.TransformationMatrix"/> to use.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>This method affects the items that are added after calling this method only. To transform the already added items use
            the <see cref="M:KGySoft.Drawing.Shapes.Path.TransformAdded(KGySoft.Drawing.Shapes.TransformationMatrix)">TransformAdded</see> method instead.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.ResetTransformation">
            <summary>
            Resets the current <see cref="P:KGySoft.Drawing.Shapes.Path.Transformation"/> to the identity matrix.
            </summary>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>This method affects the items that are added after calling this method only. To transform the already added items use
            the <see cref="M:KGySoft.Drawing.Shapes.Path.TransformAdded(KGySoft.Drawing.Shapes.TransformationMatrix)">TransformAdded</see> method instead.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.TransformTranslation(System.Single,System.Single)">
            <summary>
            Applies a translation (offset) to the origin of the current <see cref="P:KGySoft.Drawing.Shapes.Path.Transformation"/>.
            </summary>
            <param name="offsetX">The x-coordinate of the translation.</param>
            <param name="offsetY">The y-coordinate of the translation.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>This method affects the items that are added after calling this method only. To transform the already added items use
            the <see cref="M:KGySoft.Drawing.Shapes.Path.TransformAdded(KGySoft.Drawing.Shapes.TransformationMatrix)">TransformAdded</see> method instead.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.TransformRotation(System.Single)">
            <summary>
            Applies a rotation to the current <see cref="P:KGySoft.Drawing.Shapes.Path.Transformation"/>.
            </summary>
            <param name="angle">The angle of the rotation in degrees.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>This method affects the items that are added after calling this method only. To transform the already added items use
            the <see cref="M:KGySoft.Drawing.Shapes.Path.TransformAdded(KGySoft.Drawing.Shapes.TransformationMatrix)">TransformAdded</see> method instead.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.TransformScale(System.Single,System.Single)">
            <summary>
            Applies a scaling (zoom) to the current <see cref="P:KGySoft.Drawing.Shapes.Path.Transformation"/>.
            </summary>
            <param name="scaleX">The scaling factor in the x-direction.</param>
            <param name="scaleY">The scaling factor in the y-direction.</param>
            <returns>This <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance.</returns>
            <remarks>
            <para>This method affects the items that are added after calling this method only. To transform the already added items use
            the <see cref="M:KGySoft.Drawing.Shapes.Path.TransformAdded(KGySoft.Drawing.Shapes.TransformationMatrix)">TransformAdded</see> method instead.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Path.AppendPoints(System.Collections.Generic.List{System.Drawing.PointF})">
            <summary>
            This overload does not copy the points in LineSegment.ctor.
            Call from non-collection methods only.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.Pen">
            <summary>
            Represents a pen for drawing operations.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_Pen.htm">online help</a> for image examples.</div>
            </summary>
            <remarks>
            <para><see cref="T:KGySoft.Drawing.Shapes.Pen"/>s are used to draw the outline of shapes, or to draw primitive lines and curves.</para>
            <para>A <see cref="T:KGySoft.Drawing.Shapes.Pen"/> instance is defined by a <see cref="T:KGySoft.Drawing.Shapes.Brush"/> (possibly implicitly by a single color) that determines the color or texture of the pen,
            and a <see cref="P:KGySoft.Drawing.Shapes.Pen.Width"/> that determines the width of the pen. The <see cref="P:KGySoft.Drawing.Shapes.Pen.LineJoin"/>, <see cref="P:KGySoft.Drawing.Shapes.Pen.MiterLimit"/>, <see cref="P:KGySoft.Drawing.Shapes.Pen.StartCap"/>, and <see cref="P:KGySoft.Drawing.Shapes.Pen.EndCap"/>
            properties determine how the ends and joins of lines are drawn.</para>
            </remarks>
            <example>
            <para>The following table illustrates the behavior of some properties of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> class:
            <table class="table is-hoverable"><thead><tr><th width="80%">Description</th><th width="20%">Image Example</th></tr></thead><tbody>
            <tr><td><see cref="P:KGySoft.Drawing.Shapes.Pen.LineJoin"/>: Specifies how to join the consecutive line segments. Can be <see cref="F:KGySoft.Drawing.Shapes.LineJoinStyle.Miter"/>, <see cref="F:KGySoft.Drawing.Shapes.LineJoinStyle.Bevel"/> or <see cref="F:KGySoft.Drawing.Shapes.LineJoinStyle.Round"/>.
            The example images demonstrate these join types from the top to the bottom. All examples use a 10 pixel wide pen.</td>
            <td><img src="../Help/Images/PenLineJoinStyleMiter.png" alt="Polygon drawn with JoinStyle = LineJoinStyle.Miter"/>
            <br/><img src="../Help/Images/PenLineJoinStyleBevel.png" alt="Polygon drawn with JoinStyle = LineJoinStyle.Bevel"/>
            <br/><img src="../Help/Images/PenLineJoinStyleRound.png" alt="Polygon drawn with JoinStyle = LineJoinStyle.Round"/></td></tr>
            <tr><td><see cref="P:KGySoft.Drawing.Shapes.Pen.StartCap"/> and <see cref="P:KGySoft.Drawing.Shapes.Pen.EndCap"/>: Specify the style of the start and end points of an open figure.
            Can be <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Flat"/>, <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Square"/>, <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Round"/> or <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Triangle"/>.
            The example images demonstrate these cap types from the top to the bottom, using the same cap style at both ends.
            Please note that the only difference between <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Flat"/> and <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Square"/> styles is that the <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Flat"/> style
            has the originally specified length, whereas the <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Square"/> style extends the line by half of the pen width. All examples use a 10 pixel wide pen.</td>
            <td><img src="../Help/Images/PenLineCapStyleFlat.png" alt="10 pixel width line drawn with cap style Flat"/>
            <br/><img src="../Help/Images/PenLineCapStyleSquare.png" alt="10 pixel width line drawn with cap style Square"/>
            <br/><img src="../Help/Images/PenLineCapStyleRound.png" alt="10 pixel width line drawn with cap style Round"/>
            <br/><img src="../Help/Images/PenLineCapStyleTriangle.png" alt="10 pixel width line drawn with cap style Triangle"/></td></tr>
            <tr><td><see cref="P:KGySoft.Drawing.Shapes.Pen.Brush"/>: It allows setting a <see cref="T:KGySoft.Drawing.Shapes.Brush"/> explicitly, so the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> can use not only a solid color but also a texture or any other brush.
            The example demonstrates a 10 pixel wide pen with a diagonal linear gradient brush using mirrored wrapping mode.</td>
            <td><img src="../Help/Images/PenWithBrush.png" alt="Pen with a linear gradient brush"/></td></tr>
            </tbody></table></para>
            </example>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.Pen.Brush">
            <summary>
            Gets or sets the <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that determines the color or texture of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            <br/>Default value: The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> instance that was either passed to the corresponding constructor, or was created implicitly from a color by the other constructors.
            <br/>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> class for image examples.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.Pen.Width">
            <summary>
            Gets or sets the width of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            <br/>Default value: the width that was passed to the constructor, or 1, if it was not specified.
            </summary>
            <remarks>
            <para>A with of 1/64 or less is not visible. If <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is <see langword="true"/> and <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> is <see langword="false"/>,
            then a width less than 1/4 is not visible.
            </para>
            </remarks>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.Pen.LineJoin">
            <summary>
            Gets or sets the <see cref="T:KGySoft.Drawing.Shapes.LineJoinStyle"/> that specifies how to join the consecutive line segments.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Shapes.LineJoinStyle.Miter"/>.
            <br/>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> class for image examples.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.Pen.MiterLimit">
            <summary>
            If the <see cref="P:KGySoft.Drawing.Shapes.Pen.LineJoin"/> is <see cref="F:KGySoft.Drawing.Shapes.LineJoinStyle.Miter"/>, then
            gets or sets the limit for the ratio of the miter length to half the <see cref="P:KGySoft.Drawing.Shapes.Pen.Width"/> that determines whether the join is beveled or mitered.
            Makes a difference only if the <see cref="P:KGySoft.Drawing.Shapes.Pen.Width"/> is greater than 1.
            <br/>Default value: 10.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.Pen.StartCap">
            <summary>
            Gets or sets the <see cref="T:KGySoft.Drawing.Shapes.LineCapStyle"/> that specifies the style of the start point of an open figure.
            Makes a difference only if the <see cref="P:KGySoft.Drawing.Shapes.Pen.Width"/> is greater than 1.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Flat"/>.
            <br/>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> class for image examples.
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.Pen.EndCap">
            <summary>
            Gets or sets the <see cref="T:KGySoft.Drawing.Shapes.LineCapStyle"/> that specifies the style of the end point of an open figure.
            Makes a difference only if the <see cref="P:KGySoft.Drawing.Shapes.Pen.Width"/> is greater than 1.
            <br/>Default value: <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Flat"/>.
            <br/>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> class for image examples.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Pen.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> class with a black color and a width of 1.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Pen.#ctor(KGySoft.Drawing.Imaging.Color32,System.Single)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> class with the specified <paramref name="color"/> and <paramref name="width"/>.
            </summary>
            <param name="color">The color of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.</param>
            <param name="width">The width of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/>. Must be greater than 0. This parameter is optional.
            <br/>Default value: 1.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="width"/> is not greater than 0.</exception>
            <remarks>
            <para>A width of 1/64 or less is not visible. If <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is <see langword="true"/> and <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> is <see langword="false"/>,
            then a width less than 1/4 is not visible.</para>
            <para>If the color depth of a <see cref="T:KGySoft.Drawing.Imaging.Color32"/> instance is not enough to represent the specified <paramref name="color"/>,
            then create a solid brush with the desired color depth and use the <see cref="M:KGySoft.Drawing.Shapes.Pen.#ctor(KGySoft.Drawing.Shapes.Brush,System.Single)"/> constructor instead.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Pen.#ctor(KGySoft.Drawing.Shapes.Brush,System.Single)">
            <summary>
            Initializes a new instance of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> class with the specified <paramref name="brush"/> and <paramref name="width"/>.
            </summary>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> that determines the color or texture of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.</param>
            <param name="width">The width of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/>. Must be greater than 0. This parameter is optional.
            <br/>Default value: 1.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="width"/> is not greater than 0.</exception>
            <remarks>
            <para>A width of 1/64 or less is not visible. If <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is <see langword="true"/> and <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing"/> is <see langword="false"/>,
            then a width less than 1/4 is not visible.</para>
            </remarks>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.RawFigure.VertexCount">
            <summary>
            Gets the effective vertex count omitting the possibly matching start/end points.
            This should be used when filling the path, which is consistent no matter whether the figure is open or closed.
            NOTE: This can be different from OpenVertices.Count if an open figure has the same start/end point.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.RawPath">
            <summary>
            The raw version of <see cref="T:KGySoft.Drawing.Shapes.Path"/> where everything is represented by simple points (straight line segments).
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.RawPath.PenOptions">
            <summary>
            Needed because Pen has mutable properties.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.Region">
            <summary>
            Represents the region mask of a raw path. Can be either anti-aliased or aliased.
            Should not be disposable because can be cached in RawPath, and should not allocate from the pool array for the same reason.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.Region.isGeneratedHandle">
            <summary>
            null: newly created, IsGenerated returns false and creates an unset handle.
            Not set: IsGenerated blocks on the current thread until generating is still in progress in another thread, and then returns true
            Set: IsGenerated returns true, generating is complete
            </summary>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.Region.IsGenerated">
            <summary>
            Returns false if we need to generate the region in a thread-safe way.
            Might be a blocking call if called concurrently while a previous generation is still in progress.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Region.SetCompleted">
            <summary>
            Indicates that the mask is generated successfully.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.Region.Reset">
            <summary>
            Resets the handle by setting it to null again so the next IsGenerated will return false again.
            Called when generating has been canceled.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.TextureBasedBrush">
            <summary>
            Base class for coordinate-based brushes. See the comment in <see cref="T:KGySoft.Drawing.Shapes.SolidBrush"/> for the reason of the many nested classes.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.GradientWrapMode">
            <summary>
            Represents the mode how a gradient is treated when the gradient area is exceeded.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_GradientWrapMode.htm">online help</a> for image examples.</div>
            </summary>
            <example>
            <para>The following table demonstrates the possible <see cref="T:KGySoft.Drawing.Shapes.GradientWrapMode"/> values and their effect:
            <table class="table is-hoverable"><thead><tr><th width="80%">Description</th><th width="20%">Image Example</th></tr></thead><tbody>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.GradientWrapMode.Stop"/>: The gradient stops at the specified start and end points, and the exceeding area is simply filled with the specified end colors in both directions.
            In this example a horizontal gradient is drawn from 20 to 80, using <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Linear"/> color space from red to blue.</td>
            <td><img src="../Help/Images/BrushLinearGradientWrapModeStop.png" alt="Linear gradient brush with Stop wrap mode. AntiAliasing = true, AlphaBlending = true."/></td></tr>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.GradientWrapMode.Clip"/>: The gradient is clipped at the specified start and end points, as if the exceeding area was transparent. This example is the same gradient as above, but with <see cref="F:KGySoft.Drawing.Shapes.GradientWrapMode.Clip"/> wrap mode.</td>
            <td><img src="../Help/Images/BrushLinearGradientWrapModeClip.png" alt="Linear gradient brush with Clip wrap mode. AntiAliasing = true, AlphaBlending = true."/></td></tr>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.GradientWrapMode.Repeat"/>: The gradient is repeated beyond the specified start and end points.
            In this example a diagonal gradient is drawn from (-10, 10) to (10, -10), using <see cref="F:KGySoft.Drawing.Imaging.WorkingColorSpace.Srgb"/> color space from white to black.</td>
            <td><img src="../Help/Images/BrushLinearGradientWrapModeRepeat.png" alt="Linear gradient brush with Repeat wrap mode. AntiAliasing = true, AlphaBlending = true."/></td></tr>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.GradientWrapMode.Mirror"/>: The gradient is mirrored beyond the specified start and end points. This example is the same gradient as above, but with <see cref="F:KGySoft.Drawing.Shapes.GradientWrapMode.Mirror"/> wrap mode.</td>
            <td><img src="../Help/Images/BrushLinearGradientWrapModeMirror.png" alt="Linear gradient brush with Mirror wrap mode. AntiAliasing = true, AlphaBlending = true."/></td></tr>
            </tbody></table></para>
            <note>A <see cref="T:KGySoft.Drawing.Shapes.GradientWrapMode"/> value is used only when the gradient is specified by two points. When just an angle is specified, the gradient is always stretched to the bounds of the shape.
            <br/>See the <strong>Examples</strong> section of the <see cref="M:KGySoft.Drawing.Shapes.Brush.CreateLinearGradient(System.Single,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Imaging.WorkingColorSpace)"/> method for an example for such a gradient.
            </note>
            </example>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.GradientWrapMode.Stop">
            <summary>
            The gradient stops at the specified start and end points, and the exceeding area is simply filled with the specified end colors in both directions.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.GradientWrapMode.Clip">
            <summary>
            The gradient is clipped at the specified start and end points, as if the exceeding area was transparent.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.GradientWrapMode.Repeat">
            <summary>
            The gradient is repeated beyond the specified start and end points.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.GradientWrapMode.Mirror">
            <summary>
            The gradient is mirrored beyond the specified start and end points.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.LineCapStyle">
            <summary>
            Represents the possible styles for the ends of open figures.
            <br/>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> class for image examples.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.LineCapStyle.Flat">
            <summary>
            Represents a flat line cap. This produces a square line cap that does not extend past the end of the line.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.LineCapStyle.Square">
            <summary>
            Represents a square line cap. The only difference from <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Flat"/> is that the <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Flat"/> style
            has the originally specified length, whereas the <see cref="F:KGySoft.Drawing.Shapes.LineCapStyle.Square"/> style extends the line by half of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> width.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.LineCapStyle.Round">
            <summary>
            Represents a round line cap.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.LineCapStyle.Triangle">
            <summary>
            Represents a triangle line cap.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.LineJoinStyle">
            <summary>
            Represents the possible styles for joining two lines.
            <br/>See the <strong>Examples</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.Pen"/> class for image examples.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.LineJoinStyle.Miter">
            <summary>
            Represents a miter join. This produces a sharp corner or a bevel join if the miter limit is exceeded.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.LineJoinStyle.Bevel">
            <summary>
            Represents a bevel join, which produces a diagonal corner.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.LineJoinStyle.Round">
            <summary>
            Represents a round join, which produces a rounded corner.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.PixelOffset">
            <summary>
            Represents pixel offset strategies for the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.ScanPathPixelOffset">DrawingOptions.ScanPathPixelOffset</see>
            and <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset">DrawingOptions.DrawPathPixelOffset</see> properties.
            <br/>See the <strong>Remarks</strong> section of the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.ScanPathPixelOffset">DrawingOptions.ScanPathPixelOffset</see>
            and <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset">DrawingOptions.DrawPathPixelOffset</see> properties for details and image examples.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.PixelOffset.None">
            <summary>
            When scanning the region of a path (see <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.ScanPathPixelOffset">DrawingOptions.ScanPathPixelOffset</see>), it specifies that the scanning of edges
            should be performed at the top of the pixels. When drawing a path (see <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset">DrawingOptions.DrawPathPixelOffset</see>),
            it specifies that the points of the drawn path are not adjusted before applying the pen width.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.PixelOffset.Half">
            <summary>
            When scanning the region of a path (see <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.ScanPathPixelOffset">DrawingOptions.ScanPathPixelOffset</see>), it specifies that the scanning of edges
            should be performed at the center of the pixels. When drawing a path (see <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.DrawPathPixelOffset">DrawingOptions.DrawPathPixelOffset</see>),
            it specifies that the points of the drawn path are shifted by a half pixel before applying the pen width.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.ShapeFillMode">
            <summary>
            Specifies how to the interior of a path is filled when it contains intersecting edges.
            If a path has no intersecting edges, then both strategies produce the same result.
            <br/>See the <strong>Remarks</strong> section of the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FillMode">DrawingOptions.FillMode</see> property for image examples.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.ShapeFillMode.Alternate">
            <summary>
            Specifies the alternate fill mode. If a scanline of the region to fill crosses an odd number of path segments,
            the starting point is inside the closed region and is therefore part of the fill area. An even number of crossings means
            that the point is not in an area to be filled. This strategy is faster than the <see cref="F:KGySoft.Drawing.Shapes.ShapeFillMode.NonZero"/> mode, though
            it may produce "holes" when a polygon has self-crossing lines.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.ShapeFillMode.NonZero">
            <summary>
            Specifies the nonzero fill mode. It considers the direction of the path segments at each intersection.
            It adds one for every clockwise intersection, and subtracts one for every counterclockwise intersection.
            If the result is nonzero, the point is considered inside the fill area. A zero count means that the point lies outside the fill area.
            This strategy is slower than the <see cref="F:KGySoft.Drawing.Shapes.ShapeFillMode.Alternate"/> mode, though it makes a difference in the result only
            when the path to fill has intersections.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.TextureMapMode">
            <summary>
            Represents the possible modes how a texture is mapped when filling a shape by a texture <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_TextureMapMode.htm">online help</a> for image examples.</div>
            </summary>
            <example>
            <para>The following table demonstrates the possible <see cref="T:KGySoft.Drawing.Shapes.TextureMapMode"/> values and their effect:
            <table class="table is-hoverable"><thead><tr><th width="80%">Description</th><th width="20%">Image Example</th></tr></thead><tbody>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Tile"/>: The texture is tiled using the same orientation. <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see>
            is <see langword="true"/>, so the transparent pixels of the texture don't affect the background.</td>
            <td><img src="../Help/Images/BrushTextureTile.png" alt="Texture brush with Tile map mode. AntiAliasing = true, AlphaBlending = true."/></td></tr>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.TileFlipX"/>: The texture is tiled, mirroring the adjacent tiles horizontally in each row. <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see>
            is <see langword="true"/>, so the transparent pixels of the texture don't affect the background.</td>
            <td><img src="../Help/Images/BrushTextureTileFlipX.png" alt="Texture brush with TileFlipX map mode. AntiAliasing = true, AlphaBlending = true."/></td></tr>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.TileFlipY"/>: The texture is tiled, mirroring the adjacent tiles vertically in each column. <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see>
            is <see langword="true"/>, so the transparent pixels of the texture don't affect the background.</td>
            <td><img src="../Help/Images/BrushTextureTileFlipY.png" alt="Texture brush with TileFlipY map mode. AntiAliasing = true, AlphaBlending = true."/></td></tr>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.TileFlipXY"/>: The texture is tiled, mirroring the adjacent tiles horizontally in each row and vertically in each column. <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see>
            is <see langword="true"/>, so the transparent pixels of the texture don't affect the background.</td>
            <td><img src="../Help/Images/BrushTextureTileFlipXY.png" alt="Texture brush with TileFlipXY map mode. AntiAliasing = true, AlphaBlending = true."/></td></tr>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Clip"/>: The texture is clipped to the shape without tiling. As in this example the texture does not cover the entire shape, the exceeding regions are simply handled as if they were transparent.
            As no offset is specified, the texture's location is the top-left corner of the target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, so it can be seen only in the topmost ellipse.
            <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see> is <see langword="false"/>, so the transparent ellipses indicate the regions of the fill operations.</td>
            <td><img src="../Help/Images/BrushTextureClip.png" alt="Texture brush with Clip map mode. AntiAliasing = false, AlphaBlending = false."/></td></tr>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Extend"/>: Similar to <see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Clip"/>, except that the exceeding regions are filled by extending the texture's edge pixels.
            In this example the texture does not have homogeneous colors at the edges, hence the stripes in the exceeding regions.
            <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see> is <see langword="false"/>, so the transparent ellipses indicate the regions of the fill operations.</td>
            <td><img src="../Help/Images/BrushTextureExtend.png" alt="Texture brush with Extend map mode. AntiAliasing = false, AlphaBlending = false."/></td></tr>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Center"/>: Same as <see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Clip"/>, but the texture is always centered in the currently filled shape.
            <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see> is <see langword="false"/>, so the transparent ellipses indicate the regions of the fill operations.</td>
            <td><img src="../Help/Images/BrushTextureCenter.png" alt="Texture brush with Center map mode. AntiAliasing = false, AlphaBlending = false."/></td></tr>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.CenterExtend"/>: Similar to <see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Extend"/>, but the texture is always centered in the currently filled shape.
            In this example the left edge of the texture completely transparent, so we don't see pixels extended to the left.
            <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see> is <see langword="false"/>, so the transparent ellipses indicate the regions of the fill operations.</td>
            <td><img src="../Help/Images/BrushTextureCenterExtend.png" alt="Texture brush with CenterExtend map mode. AntiAliasing = false, AlphaBlending = false."/></td></tr>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Stretch"/>: The texture is stretched to fill the entire shape. The texture's aspect ratio is not preserved.
            <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see> is <see langword="true"/>, so the small transparent regions didn't affect the background.
            <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing">DrawingOptions.AntiAliasing</see> is also <see langword="true"/>, so the stretching was performed with using an interpolation.</td>
            <td><img src="../Help/Images/BrushTextureStretch.png" alt="Texture brush with Stretch map mode. AntiAliasing = true, AlphaBlending = true."/></td></tr>
            <tr><td><see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Zoom"/>: Similar to <see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Stretch"/>, but the texture's aspect ratio is preserved.
            <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AlphaBlending">DrawingOptions.AlphaBlending</see> is <see langword="false"/>, so the transparent ellipses indicate the regions of the fill operations.
            <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing">DrawingOptions.AntiAliasing</see> is <see langword="false"/>, so the zooming was performed with the nearest neighbor algorithm.</td>
            <td><img src="../Help/Images/BrushTextureZoom.png" alt="Texture brush with Zoom map mode. AntiAliasing = false, AlphaBlending = false."/></td></tr>
            </tbody></table></para>
            </example>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TextureMapMode.Tile">
            <summary>
            The texture is tiled, using the same orientation for each tile.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_TextureMapMode.htm">online help</a> for image examples.</div>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TextureMapMode.TileFlipX">
            <summary>
            The texture is tiled, mirroring the adjacent tiles horizontally in each row.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_TextureMapMode.htm">online help</a> for image examples.</div>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TextureMapMode.TileFlipY">
            <summary>
            The texture is tiled, mirroring the adjacent tiles vertically in each column.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_TextureMapMode.htm">online help</a> for image examples.</div>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TextureMapMode.TileFlipXY">
            <summary>
            The texture is tiled, mirroring the adjacent tiles horizontally in each row and vertically in each column.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_TextureMapMode.htm">online help</a> for image examples.</div>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TextureMapMode.Clip">
            <summary>
            The texture is clipped to the shape without tiling. If the texture does not cover the entire shape, the exceeding regions are simply handled as if they were transparent.
            If no offset is specified, the texture's location is the top-left corner of the target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, regardless of the shape's location.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_TextureMapMode.htm">online help</a> for image examples.</div>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TextureMapMode.Extend">
            <summary>
            The texture is clipped to the shape without tiling. If the texture does not cover the entire shape, the exceeding regions are filled by extending the texture's edge pixels.
            If no offset is specified, the texture's location is the top-left corner of the target <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/>, regardless of the shape's location.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_TextureMapMode.htm">online help</a> for image examples.</div>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TextureMapMode.Center">
            <summary>
            Similar to <see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Clip"/>, but the texture is always centered in the currently filled shape.
            If there is an offset specified, it is applied relative to the center of the shape.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_TextureMapMode.htm">online help</a> for image examples.</div>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TextureMapMode.CenterExtend">
            <summary>
            Similar to <see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Extend"/>, but the texture is always centered in the currently filled shape.
            If there is an offset specified, it is applied relative to the center of the shape.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_TextureMapMode.htm">online help</a> for image examples.</div>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TextureMapMode.Stretch">
            <summary>
            The texture is stretched to fill the entire shape. The texture's aspect ratio is not preserved.
            if <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.AntiAliasing">DrawingOptions.AntiAliasing</see> is <see langword="true"/>, then the texture is resized with an
            automatically selected interpolation; otherwise, the texture is resized using the nearest neighbor algorithm. The used color space for resizing depends
            on the <see cref="P:KGySoft.Drawing.Imaging.IBitmapData.WorkingColorSpace"/> of the original texture.
            Please note that this generates a new texture for each shape, so it can be slow for large shapes.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_TextureMapMode.htm">online help</a> for image examples.</div>
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TextureMapMode.Zoom">
            <summary>
            Similar to <see cref="F:KGySoft.Drawing.Shapes.TextureMapMode.Stretch"/>, but the texture's aspect ratio is preserved.
            If the texture does not cover the entire shape, the exceeding regions are simply handled as if they were transparent.
            <div style="display: none;"><br/>See the <a href="https://docs.kgysoft.net/drawing/html/T_KGySoft_Drawing_Shapes_TextureMapMode.htm">online help</a> for image examples.</div>
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.BitmapDataExtensions">
            <summary>
            Provides extension methods for the <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> type that are related to shape drawing and filling.
            </summary>
            <remarks>
            <para>To obtain an <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance, use the <see cref="T:KGySoft.Drawing.Imaging.BitmapDataFactory"/> class,
            or the <c>GetReadWriteBitmapData</c> extension methods of the various platform-dependent <see cref="N:KGySoft.Drawing">packages</see>.</para>
            </remarks>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide line between two points with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the line to draw.</param>
            <param name="x1">The x-coordinate of the starting point.</param>
            <param name="y1">The y-coordinate of the starting point.</param>
            <param name="x2">The x-coordinate of the end point.</param>
            <param name="y2">The y-coordinate of the end point.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The right/bottom values of the coordinates are inclusive, so if the start and end points are the same, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine">BeginDrawLine</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Point,System.Drawing.Point,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide line between two points with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the line to draw.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The right/bottom values of the coordinates are inclusive, so if the start and end points are the same, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine">BeginDrawLine</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide line between two points with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the line to draw.</param>
            <param name="x1">The x-coordinate of the starting point.</param>
            <param name="y1">The y-coordinate of the starting point.</param>
            <param name="x2">The x-coordinate of the end point.</param>
            <param name="y2">The y-coordinate of the end point.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine">BeginDrawLine</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide line between two points with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the line to draw.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine">BeginDrawLine</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Point,System.Drawing.Point,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide line between two points with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the line to draw.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The right/bottom values of the coordinates are inclusive, so if the start and end points are the same, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine">BeginDrawLine</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the line is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide line between two points with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the line to draw.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine">BeginDrawLine</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the line is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Point,System.Drawing.Point,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a line between two points with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the line.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine">BeginDrawLine</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the line is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a line between two points with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the line.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine">BeginDrawLine</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the line is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.Point,System.Drawing.Point,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide line between two points with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the line to draw.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The right/bottom values of the coordinates are inclusive, so if the start and end points are the same, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide line between two points with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the line to draw.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.Point,System.Drawing.Point,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a line between two points with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the line.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a line between two points with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the line.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Point,System.Drawing.Point,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide line between two points with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the line to draw.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The right/bottom values of the coordinates are inclusive, so if the start and end points are the same, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawLine(System.IAsyncResult)">EndDrawLine</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the line is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide line between two points with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the line to draw.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawLine(System.IAsyncResult)">EndDrawLine</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the line is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Point,System.Drawing.Point,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a line between two points with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the line.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawLine(System.IAsyncResult)">EndDrawLine</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the line is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a line between two points with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the line.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawLine(System.IAsyncResult)">EndDrawLine</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the line is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawLine(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLine">BeginDrawLine</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync">DrawLineAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Point,System.Drawing.Point,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide line between two points with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the line to draw.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The right/bottom values of the coordinates are inclusive, so if the start and end points are the same, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the line is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide line between two points with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the line to draw.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the line is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Point,System.Drawing.Point,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a line between two points with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the line.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the line is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLineAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.PointF,System.Drawing.PointF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a line between two points with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the line.</param>
            <param name="p1">The starting point of the line.</param>
            <param name="p2">The end point of the line.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the line directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the line to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same line is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the line is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a series of connected, one-pixel wide lines with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the lines to draw.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLines">BeginDrawLines</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync">DrawLinesAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a series of connected, one-pixel wide lines with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the lines to draw.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLines">BeginDrawLines</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync">DrawLinesAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a series of connected, one-pixel wide lines with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the lines to draw.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLines">BeginDrawLines</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync">DrawLinesAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the lines are drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a series of connected, one-pixel wide lines with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the lines to draw.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLines">BeginDrawLines</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync">DrawLinesAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the lines are drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a series of connected lines with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the lines.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLines">BeginDrawLines</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync">DrawLinesAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the lines are drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a series of connected lines with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the lines.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLines">BeginDrawLines</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync">DrawLinesAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the lines are drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a series of connected, one-pixel wide lines with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the lines to draw.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a series of connected, one-pixel wide lines with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the lines to draw.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a series of connected lines with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the lines.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a series of connected lines with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the lines.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a series of connected, one-pixel wide lines with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the lines to draw.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync">DrawLinesAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawLines(System.IAsyncResult)">EndDrawLines</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the lines are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a series of connected, one-pixel wide lines with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the lines to draw.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync">DrawLinesAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawLines(System.IAsyncResult)">EndDrawLines</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the lines are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a series of connected lines with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the line.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync">DrawLinesAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawLines(System.IAsyncResult)">EndDrawLines</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the lines are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLines(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a series of connected lines with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the line.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync">DrawLinesAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawLines(System.IAsyncResult)">EndDrawLines</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the lines are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawLines(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawLines">BeginDrawLines</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync">DrawLinesAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a series of connected, one-pixel wide lines with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the lines to draw.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the lines are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a series of connected, one-pixel wide lines with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the lines to draw.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the lines are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a series of connected lines with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the lines.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the lines are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawLinesAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a series of connected lines with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the lines.</param>
            <param name="points">The points of the line segments to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The first point of the <paramref name="points"/> array will be the starting point of the first line segment.
            Each additional point specifies the endpoint of a line segment, whose starting point is the endpoint of the previous line.</para>
            <para>This method tries to use a shortcut to draw the lines directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the lines to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same lines are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the lines are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a series of one-pixel wide Bézier curves with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the curves to draw.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawBeziers">BeginDrawBeziers</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync">DrawBeziersAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a series of one-pixel wide Bézier curves with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the curves to draw.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawBeziers">BeginDrawBeziers</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync">DrawBeziersAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a series of one-pixel wide Bézier curves with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the curves to draw.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawBeziers">BeginDrawBeziers</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync">DrawBeziersAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the curves are drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a series of one-pixel wide Bézier curves with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the curves to draw.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawBeziers">BeginDrawBeziers</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync">DrawBeziersAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the curves are drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a series of Bézier curves with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the curves.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawBeziers">BeginDrawBeziers</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync">DrawBeziersAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the curves are drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a series of Bézier curves with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the curves.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawBeziers">BeginDrawBeziers</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync">DrawBeziersAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the curves are drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a series of one-pixel wide Bézier curves with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the curves to draw.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a series of one-pixel wide Bézier curves with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the curves to draw.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a series of Bézier curves with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the curves.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a series of Bézier curves with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the curves.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a series of one-pixel wide Bézier curves with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the curves to draw.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync">DrawBeziersAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawBeziers(System.IAsyncResult)">EndDrawBeziers</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the curves are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a series of one-pixel wide Bézier curves with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the curves to draw.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync">DrawBeziersAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawBeziers(System.IAsyncResult)">EndDrawBeziers</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the curves are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a series of Bézier curves with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the curves.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync">DrawBeziersAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawBeziers(System.IAsyncResult)">EndDrawBeziers</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the curves are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawBeziers(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a series of Bézier curves with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the curves.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync">DrawBeziersAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawBeziers(System.IAsyncResult)">EndDrawBeziers</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the curves are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawBeziers(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawBeziers">BeginDrawBeziers</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync">DrawBeziersAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a series of one-pixel wide Bézier curves with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the curves to draw.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the curves are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a series of one-pixel wide Bézier curves with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the curves to draw.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the curves are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a series of Bézier curves with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the curves.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the curves are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawBeziersAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a series of Bézier curves with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the curves.</param>
            <param name="points">The points of the curves to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The allowed number of points in <paramref name="points"/> is 0, 1, or a multiple of 3 plus 1.</para>
            <para>When <paramref name="points"/> has at least four items, the first four points define the first Bézier curve. Each additional three points define a new Bézier curve,
            where the last point of the previous curve is the starting point of the next curve.</para>
            <para>This method tries to use a shortcut to draw the curves directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the curves to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same Bézier curves are drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the curves are drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">The number of points is not a multiple of 3 plus 1.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide polygon with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to draw.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPolygon">BeginDrawPolygon</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync">DrawPolygonAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide polygon with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to draw.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPolygon">BeginDrawPolygon</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync">DrawPolygonAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide polygon with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to draw.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPolygon">BeginDrawPolygon</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync">DrawPolygonAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the polygon is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide polygon with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to draw.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPolygon">BeginDrawPolygon</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync">DrawPolygonAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the polygon is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPolygon">BeginDrawPolygon</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync">DrawPolygonAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the polygon is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPolygon">BeginDrawPolygon</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync">DrawPolygonAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the polygon is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide polygon with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the polygon to draw.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide polygon with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the polygon to draw.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide polygon with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to draw.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync">DrawPolygonAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPolygon(System.IAsyncResult)">EndDrawPolygon</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the polygon is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide polygon with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to draw.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync">DrawPolygonAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPolygon(System.IAsyncResult)">EndDrawPolygon</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the polygon is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync">DrawPolygonAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPolygon(System.IAsyncResult)">EndDrawPolygon</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the polygon is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync">DrawPolygonAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPolygon(System.IAsyncResult)">EndDrawPolygon</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the polygon is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPolygon(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPolygon">BeginDrawPolygon</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync">DrawPolygonAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide polygon with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to draw.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the polygon is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide polygon with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to draw.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the polygon is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the polygon is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">A <see cref="T:KGySoft.Drawing.Shapes.Path"/> is created internally and the width or height of <see cref="P:KGySoft.Drawing.Shapes.Path.Bounds">Path.Bounds</see> overflows.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPolygonAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method tries to use a shortcut to draw the polygon directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the points to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same polygon is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the polygon is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rectangle with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to draw.</param>
            <param name="x">The x-coordinate of the upper-left corner.</param>
            <param name="y">The y-coordinate of the upper-left corner.</param>
            <param name="width">The width of the rectangle.</param>
            <param name="height">The height of the rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide rectangle, the right/bottom values of the coordinates are inclusive, so if <paramref name="width"/> and <paramref name="height"/> are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle">BeginDrawRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rectangle with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to draw.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide rectangle, the right/bottom values of the coordinates are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle">BeginDrawRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rectangle with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to draw.</param>
            <param name="x">The x-coordinate of the upper-left corner.</param>
            <param name="y">The y-coordinate of the upper-left corner.</param>
            <param name="width">The width of the rectangle.</param>
            <param name="height">The height of the rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide rectangle, the right/bottom values of the coordinates are inclusive, so if <paramref name="width"/> and <paramref name="height"/> are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle">BeginDrawRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rectangle with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to draw.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide rectangle, the right/bottom values of the coordinates are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle">BeginDrawRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide rectangle with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to draw.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rectangle, the right/bottom values of the coordinates are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle">BeginDrawRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the rectangle is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide rectangle with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to draw.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rectangle, the right/bottom values of the coordinates are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle">BeginDrawRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the rectangle is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rectangle.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle">BeginDrawRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the rectangle is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rectangle.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle">BeginDrawRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the rectangle is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rectangle with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the rectangle to draw.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rectangle, the right/bottom values of the coordinates are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rectangle with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the rectangle to draw.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rectangle, the right/bottom values of the coordinates are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rectangle.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rectangle.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide rectangle with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to draw.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rectangle, the right/bottom values of the coordinates are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawRectangle(System.IAsyncResult)">EndDrawRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide rectangle with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to draw.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rectangle, the right/bottom values of the coordinates are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawRectangle(System.IAsyncResult)">EndDrawRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rectangle.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawRectangle(System.IAsyncResult)">EndDrawRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rectangle.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawRectangle(System.IAsyncResult)">EndDrawRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawRectangle(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRectangle">BeginDrawRectangle</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync">DrawRectangleAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide rectangle with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to draw.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rectangle, the right/bottom values of the coordinates are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide rectangle with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to draw.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rectangle, the right/bottom values of the coordinates are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rectangle.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rectangle.</param>
            <param name="rectangle">The rectangle to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide ellipse with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to draw.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide ellipse, the right/bottom values of the bounding rectangle are inclusive, so if <paramref name="width"/> and <paramref name="height"/> are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse">BeginDrawEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide ellipse with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide ellipse, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse">BeginDrawEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide ellipse with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to draw.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide ellipse, the right/bottom values of the bounding rectangle are inclusive, so if <paramref name="width"/> and <paramref name="height"/> are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse">BeginDrawEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide ellipse with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide ellipse, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse">BeginDrawEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide ellipse with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide ellipse, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse">BeginDrawEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the ellipse is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide ellipse with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide ellipse, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse">BeginDrawEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the ellipse is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse">BeginDrawEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the ellipse is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse">BeginDrawEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the ellipse is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide ellipse with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the ellipse to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When drawing a one-pixel wide ellipse, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide ellipse with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the ellipse to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When drawing a one-pixel wide ellipse, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide ellipse with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When drawing a one-pixel wide ellipse, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawEllipse(System.IAsyncResult)">EndDrawEllipse</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the ellipse is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide ellipse with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When drawing a one-pixel wide ellipse, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawEllipse(System.IAsyncResult)">EndDrawEllipse</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the ellipse is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawEllipse(System.IAsyncResult)">EndDrawEllipse</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the ellipse is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawEllipse(System.IAsyncResult)">EndDrawEllipse</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the ellipse is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawEllipse(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawEllipse">BeginDrawEllipse</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide ellipse with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide ellipse, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the ellipse is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide ellipse with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide ellipse, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the ellipse is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the ellipse is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the ellipse directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the ellipse to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same ellipse is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the ellipse is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide elliptical arc with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the arc to draw.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc">BeginDrawArc</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide elliptical arc with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the arc to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc">BeginDrawArc</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide elliptical arc with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the arc to draw.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc">BeginDrawArc</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide elliptical arc with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the arc to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc">BeginDrawArc</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide elliptical arc with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the arc to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc">BeginDrawArc</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the arc is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide elliptical arc with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the arc to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc">BeginDrawArc</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the arc is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws an elliptical arc with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the arc.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc">BeginDrawArc</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the arc is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws an elliptical arc with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the arc.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc">BeginDrawArc</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the arc is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide elliptical arc with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the arc to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide elliptical arc with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the arc to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws an elliptical arc with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the arc.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws an elliptical arc with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the arc.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide elliptical arc with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the arc to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawArc(System.IAsyncResult)">EndDrawArc</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the arc is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide elliptical arc with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the arc to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawArc(System.IAsyncResult)">EndDrawArc</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the arc is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw an elliptical arc with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the arc.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawArc(System.IAsyncResult)">EndDrawArc</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the arc is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw an elliptical arc with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the arc.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawArc(System.IAsyncResult)">EndDrawArc</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the arc is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawArc(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawArc">BeginDrawArc</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync">DrawArcAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide elliptical arc with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the arc to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the arc is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide elliptical arc with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the arc to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the arc is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws an elliptical arc with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the arc.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the arc is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawArcAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws an elliptical arc with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the arc.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the arc is drawn.</param>
            <param name="startAngle">The starting angle of the arc, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the arc, measured in degrees clockwise from <paramref name="startAngle"/>.
            If its absolute value is greater than or equal to 360, a complete ellipse is drawn.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>This method tries to use a shortcut to draw the arc directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the arc to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same arc is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the arc is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide pie shape with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to draw.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie">BeginDrawPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide pie shape with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie">BeginDrawPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide pie shape with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to draw.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie">BeginDrawPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide pie shape with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie">BeginDrawPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide pie shape with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie">BeginDrawPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide pie shape with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie">BeginDrawPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie">BeginDrawPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie">BeginDrawPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide pie shape with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the pie to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide pie shape with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the pie to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide pie shape with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPie(System.IAsyncResult)">EndDrawPie</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the pie shape is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide pie shape with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPie(System.IAsyncResult)">EndDrawPie</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the pie shape is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPie(System.IAsyncResult)">EndDrawPie</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the pie shape is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPie(System.IAsyncResult)">EndDrawPie</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the pie shape is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPie(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPie">BeginDrawPie</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync">DrawPieAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide pie shape with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the pie shape is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide pie shape with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to draw.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the pie shape is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a pie shape with the specified<see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the pie shape is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPieAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a pie shape with the specified<see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie is drawn.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by a partial outline of an ellipse and the two radial lines that intersect the endpoints of the partial outline.</para>
            <para>This method tries to use a shortcut to draw the pie shape directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the pie to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same pie shape is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the pie shape is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="width">The width of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="height">The height of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if <paramref name="width"/> and <paramref name="height"/> are zero, a single pixel will be drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="width">The width of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="height">The height of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if <paramref name="width"/> and <paramref name="height"/> are zero, a single pixel will be drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Single,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="width">The width of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="height">The height of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if <paramref name="width"/> and <paramref name="height"/> are zero, a single pixel will be drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="width">The width of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="height">The height of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if <paramref name="width"/> and <paramref name="height"/> are zero, a single pixel will be drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="parallelConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, applying the same corner radius to all corners,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, applying a custom corner radius to each corner,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, applying the same corner radius to all corners,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, applying a custom corner radius to each corner,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide rounded rectangle with the specified <paramref name="color"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawRoundedRectangle(System.IAsyncResult)">EndDrawRoundedRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide rounded rectangle with the specified <paramref name="color"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawEllipse(System.IAsyncResult)">EndDrawEllipse</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide rounded rectangle with the specified <paramref name="color"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawRoundedRectangle(System.IAsyncResult)">EndDrawRoundedRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a one-pixel wide rounded rectangle with the specified <paramref name="color"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawEllipse(System.IAsyncResult)">EndDrawEllipse</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawRoundedRectangle(System.IAsyncResult)">EndDrawRoundedRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawEllipse(System.IAsyncResult)">EndDrawEllipse</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawRoundedRectangle(System.IAsyncResult)">EndDrawRoundedRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawEllipseAsync">DrawEllipseAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawEllipse(System.IAsyncResult)">EndDrawEllipse</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawRoundedRectangle(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawRoundedRectangle">BeginDrawRoundedRectangle</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync">DrawRoundedRectangleAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a one-pixel wide rounded rectangle with the specified <paramref name="color"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to draw.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When drawing a one-pixel wide rounded rectangle, the right/bottom values of the bounding rectangle are inclusive, so if the width and height are zero, a single pixel will be drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>, and it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple rectangle will be drawn.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method tries to use a shortcut to draw the rounded rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rounded rectangle to it. A shortcut is possible when the specified <paramref name="pen"/>
            has a width between 0.25 and 1, it uses a solid <see cref="T:KGySoft.Drawing.Shapes.Brush"/> with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or its <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.FastThinLines"/> is enabled in <paramref name="drawingOptions"/>,
            it specifies that no anti-aliasing and no alpha blending is required, the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rounded rectangle is drawn repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            <para>If the rounded rectangle is drawn by using a shortcut, then the operation is executed synchronously, it cannot be canceled, it is not parallelized, and there is no progress reporting, regardless of the <paramref name="asyncConfig"/> parameter.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="pen"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws the one-pixel wide outline of a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the outline to draw.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of drawing transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPath">BeginDrawPath</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPathAsync">DrawPathAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws the one-pixel wide outline of a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the outline to draw.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of drawing transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPath">BeginDrawPath</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPathAsync">DrawPathAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Draws the outline of a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the path outline.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of drawing transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPath">BeginDrawPath</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPathAsync">DrawPathAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws the one-pixel wide outline of a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the outline to draw.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of drawing transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Pen,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Draws the outline of a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the path outline.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of drawing transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw the one-pixel wide outline of a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the outline to draw.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of drawing transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPathAsync">DrawPathAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPath(System.IAsyncResult)">EndDrawPath</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to draw the outline of a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the path outline.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of drawing transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPathAsync">DrawPathAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPath(System.IAsyncResult)">EndDrawPath</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndDrawPath(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginDrawPath">BeginDrawPath</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPathAsync">DrawPathAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPathAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws the one-pixel wide outline of a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the outline to draw.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of drawing transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.DrawPathAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Pen,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Draws the outline of a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <see cref="T:KGySoft.Drawing.Shapes.Pen"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="pen">The <see cref="T:KGySoft.Drawing.Shapes.Pen"/> that determines the characteristics of the path outline.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of drawing transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="pen"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a polygon with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to fill.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPolygon">BeginFillPolygon</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync">FillPolygonAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a polygon with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to fill.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPolygon">BeginFillPolygon</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync">FillPolygonAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a polygon with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to fill.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPolygon">BeginFillPolygon</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync">FillPolygonAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a polygon with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to fill.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPolygon">BeginFillPolygon</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync">FillPolygonAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPolygon">BeginFillPolygon</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync">FillPolygonAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="brush"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPolygon">BeginFillPolygon</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync">FillPolygonAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="brush"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a polygon with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the polygon to fill.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a polygon with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the polygon to fill.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="brush"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="brush"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a polygon with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to fill.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync">FillPolygonAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPolygon(System.IAsyncResult)">EndFillPolygon</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a polygon with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to fill.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync">FillPolygonAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPolygon(System.IAsyncResult)">EndFillPolygon</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync">FillPolygonAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPolygon(System.IAsyncResult)">EndFillPolygon</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="brush"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPolygon(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync">FillPolygonAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPolygon(System.IAsyncResult)">EndFillPolygon</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="brush"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPolygon(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPolygon">BeginFillPolygon</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync">FillPolygonAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a polygon with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to fill.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a polygon with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the polygon to fill.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Collections.Generic.IEnumerable{System.Drawing.Point},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="brush"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPolygonAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Collections.Generic.IEnumerable{System.Drawing.PointF},KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a polygon with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the polygon.</param>
            <param name="points">The vertices of the polygon to draw.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>Every pair of two consecutive points specifies a side of the polygon. In addition, if the last point and the first point do not coincide, they specify the last side of the polygon.</para>
            <para>This method does not use optimized shortcuts. If the same polygon is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the polygon to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="brush"/>, or <paramref name="points"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rectangle with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to fill.</param>
            <param name="x">The x-coordinate of the upper-left corner.</param>
            <param name="y">The y-coordinate of the upper-left corner.</param>
            <param name="width">The width of the rectangle.</param>
            <param name="height">The height of the rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if <paramref name="width"/> or <paramref name="height"/> is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <paramref name="drawingOptions"/> specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle">BeginFillRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rectangle with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to fill.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <paramref name="drawingOptions"/> specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle">BeginFillRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rectangle with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to fill.</param>
            <param name="x">The x-coordinate of the upper-left corner.</param>
            <param name="y">The y-coordinate of the upper-left corner.</param>
            <param name="width">The width of the rectangle.</param>
            <param name="height">The height of the rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if <paramref name="width"/> or <paramref name="height"/> is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the location and size are integer values,
            and <paramref name="drawingOptions"/> is <see langword="null"/> and the specified <paramref name="color"/> is opaque, or when <paramref name="drawingOptions"/> specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle">BeginFillRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rectangle with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to fill.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the location and size are integer values,
            and <paramref name="drawingOptions"/> is <see langword="null"/> and the specified <paramref name="color"/> is opaque, or when <paramref name="drawingOptions"/> specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>When no shortcut can be used and the same rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle">BeginFillRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a rectangle with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to fill.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <paramref name="drawingOptions"/> specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle">BeginFillRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a rectangle with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to fill.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the location and size are integer values,
            and <paramref name="drawingOptions"/> is <see langword="null"/> and the specified <paramref name="color"/> is opaque, or when <paramref name="drawingOptions"/> specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle">BeginFillRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rectangle.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the specified <paramref name="brush"/>
            is a solid brush with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle">BeginFillRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rectangle.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the location and size are integer values,
            the specified <paramref name="brush"/> is a solid brush with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle">BeginFillRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rectangle with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the rectangle to fill.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <paramref name="drawingOptions"/> specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rectangle with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the rectangle to fill.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the location and size are integer values,
            and <paramref name="drawingOptions"/> is <see langword="null"/> and the specified <paramref name="color"/> is opaque, or when <paramref name="drawingOptions"/> specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rectangle.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the specified <paramref name="brush"/>
            is a solid brush with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rectangle.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the location and size are integer values,
            the specified <paramref name="brush"/> is a solid brush with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a rectangle with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to fill.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <paramref name="drawingOptions"/> specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRectangle(System.IAsyncResult)">EndFillRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a rectangle with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to fill.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the location and size are integer values,
            and <paramref name="drawingOptions"/> is <see langword="null"/> and the specified <paramref name="color"/> is opaque, or when <paramref name="drawingOptions"/> specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRectangle(System.IAsyncResult)">EndFillRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rectangle.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the specified <paramref name="brush"/>
            is a solid brush with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRectangle(System.IAsyncResult)">EndFillRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rectangle.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the location and size are integer values,
            the specified <paramref name="brush"/> is a solid brush with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRectangle(System.IAsyncResult)">EndFillRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRectangle(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRectangle">BeginFillRectangle</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync">FillRectangleAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a rectangle with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to fill.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when <paramref name="drawingOptions"/> is <see langword="null"/>
            and the specified <paramref name="color"/> is opaque, or when <paramref name="drawingOptions"/> specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a rectangle with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rectangle to fill.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the location and size are integer values,
            and <paramref name="drawingOptions"/> is <see langword="null"/> and the specified <paramref name="color"/> is opaque, or when <paramref name="drawingOptions"/> specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rectangle.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the specified <paramref name="brush"/>
            is a solid brush with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rectangle.</param>
            <param name="rectangle">The rectangle to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rectangle, the right/bottom values of the coordinates are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method tries to use a shortcut to fill the rectangle directly, which is faster than creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> and adding the rectangle to it. A shortcut is possible when the location and size are integer values,
            the specified <paramref name="brush"/> is a solid brush with an opaque color, and if <paramref name="drawingOptions"/> is either <see langword="null"/>, or it specifies that no anti-aliasing and no alpha blending is required,
            the transformation is the identity matrix, and neither <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Quantizer"/> nor <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Ditherer"/> is specified.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills an ellipse with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to fill.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if <paramref name="width"/> or <paramref name="height"/> is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse">BeginFillEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills an ellipse with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse">BeginFillEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills an ellipse with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to fill.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if <paramref name="width"/> or <paramref name="height"/> is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse">BeginFillEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills an ellipse with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse">BeginFillEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills an ellipse with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse">BeginFillEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills an ellipse with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse">BeginFillEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse">BeginFillEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse">BeginFillEllipse</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills an ellipse with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the ellipse to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills an ellipse with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the ellipse to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill an ellipse with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillEllipse(System.IAsyncResult)">EndFillEllipse</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill an ellipse with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillEllipse(System.IAsyncResult)">EndFillEllipse</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillEllipse(System.IAsyncResult)">EndFillEllipse</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillEllipse(System.IAsyncResult)">EndFillEllipse</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillEllipse(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillEllipse">BeginFillEllipse</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync">FillEllipseAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills an ellipse with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills an ellipse with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the ellipse to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillEllipseAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills an ellipse with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the ellipse.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling an ellipse, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>This method does not use optimized shortcuts. If the same ellipse is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the ellipse to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32,System.Int32,System.Int32,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a pie shape with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to fill.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie">BeginFillPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a pie shape with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie">BeginFillPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a pie shape with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to fill.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="width">The width of the bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="height">The height of the bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie">BeginFillPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a pie shape with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie">BeginFillPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a pie shape with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie">BeginFillPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a pie shape with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie">BeginFillPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie">BeginFillPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie">BeginFillPie</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a pie shape with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the pie to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a pie shape with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the pie to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a pie shape with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPie(System.IAsyncResult)">EndFillPie</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a pie shape with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPie(System.IAsyncResult)">EndFillPie</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPie(System.IAsyncResult)">EndFillPie</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPie(System.IAsyncResult)">EndFillPie</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPie(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPie">BeginFillPie</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync">FillPieAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a pie shape with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a pie shape with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the pie to fill.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPieAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a pie shape with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the pie shape.</param>
            <param name="bounds">The bounding rectangle that defines the ellipse from which the pie shape comes.</param>
            <param name="startAngle">The starting angle of the pie shape, measured in degrees clockwise from the x-axis.</param>
            <param name="sweepAngle">The sweep angle of the pie shape, measured in degrees clockwise from <paramref name="startAngle"/>.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>The pie shape is defined by an arc of an ellipse and the two radial lines that intersect with the endpoints of the arc.</para>
            <para>This method does not use optimized shortcuts. If the same pie shape is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the pie to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="width">The width of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="height">The height of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if <paramref name="width"/> or <paramref name="height"/> is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="width">The width of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="height">The height of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if <paramref name="width"/> or <paramref name="height"/> is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Single,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="width">The width of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="height">The height of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if <paramref name="width"/> or <paramref name="height"/> is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="x">The x-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="y">The y-coordinate of the upper-left corner of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="width">The width of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="height">The height of the bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if <paramref name="width"/> or <paramref name="height"/> is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying the same corner radius to all corners,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/>, applying a custom corner radius to each corner,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, applying the same corner radius to all corners,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, applying a custom corner radius to each corner,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, applying the same corner radius to all corners,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, applying a custom corner radius to each corner,
            and using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a rounded rectangle with the specified <paramref name="color"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRoundedRectangle(System.IAsyncResult)">EndFillRoundedRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a rounded rectangle with the specified <paramref name="color"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRoundedRectangle(System.IAsyncResult)">EndFillRoundedRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a rounded rectangle with the specified <paramref name="color"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRoundedRectangle(System.IAsyncResult)">EndFillRoundedRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a rounded rectangle with the specified <paramref name="color"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRoundedRectangle(System.IAsyncResult)">EndFillRoundedRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRoundedRectangle(System.IAsyncResult)">EndFillRoundedRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRoundedRectangle(System.IAsyncResult)">EndFillRoundedRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRoundedRectangle(System.IAsyncResult)">EndFillRoundedRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRoundedRectangle(System.IAsyncResult)">EndFillRoundedRectangle</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillRoundedRectangle(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillRoundedRectangle">BeginFillRoundedRectangle</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync">FillRoundedRectangleAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a rounded rectangle with the specified <paramref name="color"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the rounded rectangle to fill.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.Rectangle,System.Int32,System.Int32,System.Int32,System.Int32,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously, applying the same corner radius to all corners.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="cornerRadius">The size of the corner radius of the rounded rectangle for all corners.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If <paramref name="cornerRadius"/> is negative, the absolute value will be used. If it is greater than the half of the smaller side of the bounding rectangle,
            it will be adjusted to the half of the smaller side, so the result will be an oval shape. If the <paramref name="cornerRadius"/> is 0, a simple filled rectangle will be drawn.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillRoundedRectangleAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,System.Drawing.RectangleF,System.Single,System.Single,System.Single,System.Single,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Fills a rounded rectangle with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously, applying a custom corner radius to each corner.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the rounded rectangle.</param>
            <param name="bounds">The bounding rectangle that defines the rounded rectangle.</param>
            <param name="radiusTopLeft">The size of the top-left corner radius of the rounded rectangle.</param>
            <param name="radiusTopRight">The size of the top-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomRight">The size of the bottom-right corner radius of the rounded rectangle.</param>
            <param name="radiusBottomLeft">The size of the bottom-left corner radius of the rounded rectangle.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>When filling a rounded rectangle, the right/bottom values of the bounding rectangle are exclusive, so if the width or height is zero, then nothing is drawn.</para>
            <para>If a corner radius parameter is negative, its absolute value will be used. If the sum of any adjacent corner radius parameters is greater
            than the corresponding side of the bounding rectangle, then all corner radius parameters will be scaled down proportionally to fit into the bounding rectangle.</para>
            <para>This method does not use optimized shortcuts. If the same rounded rectangle is filled repeatedly, creating a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> enabled and adding the rounded rectangle to it can provide a better performance.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="brush"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the path to fill.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of filling transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <note>This method adjusts the degree of parallelization automatically, blocks the caller, and does not support cancellation or reporting progress. You can use the overloads that have
            a <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_ParallelConfig.htm" target="_blank">ParallelConfig</a> parameter to configure these, while still executing the method synchronously. Alternatively, use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPath">BeginFillPath</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPathAsync">FillPathAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <paramref name="color"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the path to fill.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use. If <see langword="null"/>, then the default options are used.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of filling transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPath">BeginFillPath</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPathAsync">FillPathAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.ParallelConfig)">
            <summary>
            Fills a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="parallelConfig">The configuration of the operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.
            If <see langword="null"/>, then the degree of parallelization is configured automatically. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            of the <paramref name="parallelConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of filling transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <note>This method blocks the caller as it executes synchronously, though the <paramref name="parallelConfig"/> parameter allows configuring the degree of parallelism, cancellation and progress reporting. Use
            the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPath">BeginFillPath</see> or <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPathAsync">FillPathAsync</see>
            (in .NET Framework 4.0 and above) methods to perform the operation asynchronously.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="brush"/>, or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="parallelConfig"/> was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <paramref name="color"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="color">The color of the path to fill.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of filling transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Threading.IAsyncContext,KGySoft.Drawing.Shapes.Brush,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions)">
            <summary>
            Fills a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, using a <paramref name="context"/> that may belong to a higher level, possibly asynchronous operation.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="context">An <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncContext.htm">IAsyncContext</a> instance
            that contains information for asynchronous processing about the current operation.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of filling transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <para>This method blocks the caller thread but if <paramref name="context"/> belongs to an async top level method, then the execution may already run
            on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method.
            To reconfigure the degree of parallelism of an existing context, you can use the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncContextWrapper.htm">AsyncContextWrapper</a> class.</para>
            <para>Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by
            passing <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncHelper_SingleThreadContext.htm">AsyncHelper.SingleThreadContext</a> to the <paramref name="context"/> parameter
            the method will be forced to use a single thread only.</para>
            <para>When reporting progress, this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface.</para>
            <note type="tip">See the <strong>Examples</strong> section of the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_AsyncHelper.htm">AsyncHelper</a>
            class for details about how to create a context for possibly async top level methods.</note>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="brush"/>, or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the path to fill.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of filling transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPathAsync">FillPathAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPath(System.IAsyncResult)">EndFillPath</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPath(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.AsyncConfig)">
            <summary>
            Begins to fill a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>An <see cref="T:System.IAsyncResult"/> that represents the asynchronous operation, which could still be pending.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of filling transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <para>In .NET Framework 4.0 and above you can use also the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPathAsync">FillPathAsync</see> methods.</para>
            <para>To finish the operation and to get the exception that occurred during the operation you have to call the <see cref="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPath(System.IAsyncResult)">EndFillPath</see> method.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="brush"/>, or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.EndFillPath(System.IAsyncResult)">
            <summary>
            Waits for the pending asynchronous operation started by the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.BeginFillPath">BeginFillPath</see> methods to complete.
            In .NET Framework 4.0 and above you can use the <see cref="O:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPathAsync">FillPathAsync</see> methods instead.
            </summary>
            <param name="asyncResult">The reference to the pending asynchronous request to finish.</param>
            <returns><see langword="true"/>, if the operation completed successfully.
            <br/><see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was set to <see langword="false"/>.</returns>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.OperationCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in the <c>asyncConfig</c> parameter was <see langword="true"/>.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPathAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Imaging.Color32,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Begins to fill a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <paramref name="color"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="color">The color of the path to fill.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of filling transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/> or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.BitmapDataExtensions.FillPathAsync(KGySoft.Drawing.Imaging.IReadWriteBitmapData,KGySoft.Drawing.Shapes.Brush,KGySoft.Drawing.Shapes.Path,KGySoft.Drawing.Shapes.DrawingOptions,KGySoft.Threading.TaskConfig)">
            <summary>
            Begins to fill a <see cref="T:KGySoft.Drawing.Shapes.Path"/> with the specified <see cref="T:KGySoft.Drawing.Shapes.Brush"/> asynchronously.
            </summary>
            <param name="bitmapData">The <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instance to draw on.</param>
            <param name="brush">The <see cref="T:KGySoft.Drawing.Shapes.Brush"/> to use for filling the <see cref="T:KGySoft.Drawing.Shapes.Path"/>.</param>
            <param name="path">The <see cref="T:KGySoft.Drawing.Shapes.Path"/> instance to fill.</param>
            <param name="drawingOptions">A <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> instance that specifies the drawing options to use.
            If <see langword="null"/>, then the default options are used. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <param name="asyncConfig">The configuration of the asynchronous operation such as parallelization, cancellation, reporting progress, etc.
            When <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_Progress.htm">Progress</a> is set in this parameter,
            then this library always passes a <see cref="T:KGySoft.Drawing.DrawingOperation"/> instance to the generic methods of
            the <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> interface. This parameter is optional.
            <br/>Default value: <see langword="null"/>.</param>
            <returns>A task that represents the asynchronous operation. Its result is <see langword="true"/>, if the operation completed successfully,
            or <see langword="false"/>, if the operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property in <paramref name="asyncConfig"/> parameter was <see langword="false"/>.</returns>
            <remarks>
            <para>If the <see cref="P:KGySoft.Drawing.Shapes.DrawingOptions.Transformation"/> property of <paramref name="drawingOptions"/> is not the identity matrix, then the path region is not cached, even if <see cref="P:KGySoft.Drawing.Shapes.Path.PreferCaching"/> is enabled.
            To improve the performance of filling transformed paths repeatedly, apply the transformations on the <paramref name="path"/> instance instead, and use the identity matrix in <paramref name="drawingOptions"/>.</para>
            <para>This method is not a blocking call even if the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_MaxDegreeOfParallelism.htm">MaxDegreeOfParallelism</a> property of the <paramref name="asyncConfig"/> parameter is 1.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="bitmapData"/>, <paramref name="brush"/>, or <paramref name="path"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.OverflowException">The coordinates (after a possible transformation specified in <paramref name="drawingOptions"/>) are outside the bounds of an <see cref="T:System.Int32">int</see> value.</exception>
            <exception cref="T:System.Threading.Tasks.TaskCanceledException">The operation has been canceled and the <a href="https://docs.kgysoft.net/corelibraries/html/P_KGySoft_Threading_AsyncConfigBase_ThrowIfCanceled.htm">ThrowIfCanceled</a> property
            in <paramref name="asyncConfig"/> was <see langword="true"/>. This exception is thrown when the result is awaited.</exception>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.PointExtensions">
            <summary>
            Extensions for Point/PointF structs.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.TransformationMatrix">
            <summary>
            Represents a 3x2 matrix for 2D transformations. It's similar to <see cref="T:System.Numerics.Matrix3x2"/>;
            in fact, on platforms where it is available, it uses a <see cref="T:System.Numerics.Matrix3x2"/> internally.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TransformationMatrix.Identity">
            <summary>
            Gets the identity matrix. This field is read-only.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TransformationMatrix.M11">
            <summary>The first element of the first row.</summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TransformationMatrix.M12">
            <summary>The second element of the first row.</summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TransformationMatrix.M21">
            <summary>The first element of the second row.</summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TransformationMatrix.M22">
            <summary>The second element of the second row.</summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TransformationMatrix.M31">
            <summary>The first element of the third row.</summary>
        </member>
        <member name="F:KGySoft.Drawing.Shapes.TransformationMatrix.M32">
            <summary>The second element of the third row.</summary>
        </member>
        <member name="P:KGySoft.Drawing.Shapes.TransformationMatrix.IsIdentity">
            <summary>
            Gets whether this matrix is the identity matrix.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.op_Equality(KGySoft.Drawing.Shapes.TransformationMatrix,KGySoft.Drawing.Shapes.TransformationMatrix)">
            <summary>
            Returns a boolean indicating whether the given matrices are equal.
            </summary>
            <param name="a">The first source matrix.</param>
            <param name="b">The second source matrix.</param>
            <returns><see langword="true"/> if the matrices are equal; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.op_Inequality(KGySoft.Drawing.Shapes.TransformationMatrix,KGySoft.Drawing.Shapes.TransformationMatrix)">
            <summary>
            Returns a boolean indicating whether the given matrices are not equal.
            </summary>
            <param name="a">The first source matrix.</param>
            <param name="b">The second source matrix.</param>
            <returns><see langword="true"/> if the matrices are not equal; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.op_UnaryNegation(KGySoft.Drawing.Shapes.TransformationMatrix)">
            <summary>
            Negates the given matrix by multiplying all values by -1.
            </summary>
            <param name="value">The source matrix.</param>
            <returns>The negated matrix.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.op_Addition(KGySoft.Drawing.Shapes.TransformationMatrix,KGySoft.Drawing.Shapes.TransformationMatrix)">
            <summary>
            Adds each matrix element in <paramref name="a"/> with its corresponding element in <paramref name="b"/>.
            </summary>
            <param name="a">The first source matrix.</param>
            <param name="b">The second source matrix.</param>
            <returns>The matrix containing the summed values.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.op_Subtraction(KGySoft.Drawing.Shapes.TransformationMatrix,KGySoft.Drawing.Shapes.TransformationMatrix)">
            <summary>
            Subtracts each matrix element in <paramref name="b"/> from its corresponding element in <paramref name="a"/>.
            </summary>
            <param name="a">The first source matrix.</param>
            <param name="b">The second source matrix.</param>
            <returns>The matrix containing the resulting values.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.op_Multiply(KGySoft.Drawing.Shapes.TransformationMatrix,KGySoft.Drawing.Shapes.TransformationMatrix)">
            <summary>
            Multiplies two matrices together and returns the resulting matrix.
            </summary>
            <param name="a">The first source matrix.</param>
            <param name="b">The second source matrix.</param>
            <returns>The product matrix.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.op_Multiply(KGySoft.Drawing.Shapes.TransformationMatrix,System.Single)">
            <summary>
            Scales all elements in a matrix by the given scalar factor.
            </summary>
            <param name="matrix">The source matrix.</param>
            <param name="scalar">The scaling value to use.</param>
            <returns>The resulting matrix.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single)">
            <summary>Creates a 3x2 matrix from the specified components.</summary>
            <param name="m11">The value to assign to the first element in the first row.</param>
            <param name="m12">The value to assign to the second element in the first row.</param>
            <param name="m21">The value to assign to the first element in the second row.</param>
            <param name="m22">The value to assign to the second element in the second row.</param>
            <param name="m31">The value to assign to the first element in the third row.</param>
            <param name="m32">The value to assign to the second element in the third row.</param>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.#ctor(System.Numerics.Matrix3x2)">
            <summary>
            Creates a <see cref="T:KGySoft.Drawing.Shapes.TransformationMatrix"/> instance from the specified <see cref="T:System.Numerics.Matrix3x2"/> instance.
            </summary>
            <param name="matrix">The <see cref="T:System.Numerics.Matrix3x2"/> instance to create the <see cref="T:KGySoft.Drawing.Shapes.TransformationMatrix"/> from.</param>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.CreateTranslation(System.Single,System.Single)">
            <summary>
            Creates a translation matrix from the specified offsets.
            </summary>
            <param name="x">The distance to translate along the X axis.</param>
            <param name="y">The distance to translate along the Y axis.</param>
            <returns>The translation matrix.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.CreateRotation(System.Single)">
            <summary>
            Creates a rotation matrix using the specified angle in radians.
            </summary>
            <param name="radians">The angle, in radians, by which to rotate the matrix.</param>
            <returns>The rotation matrix.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.CreateRotation(System.Single,System.Drawing.PointF)">
            <summary>
            Creates a rotation matrix using the specified angle and center point.
            </summary>
            <param name="radians">The angle, in radians, by which to rotate the matrix.</param>
            <param name="centerPoint">The center point of the rotation.</param>
            <returns>The rotation matrix.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.CreateRotationDegrees(System.Single)">
            <summary>
            Creates a rotation matrix using the specified angle in degrees.
            </summary>
            <param name="angle">The angle, in degrees, by which to rotate the matrix.</param>
            <returns>The rotation matrix.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.CreateRotationDegrees(System.Single,System.Drawing.PointF)">
            <summary>
            Creates a rotation matrix using the specified angle and center point.
            </summary>
            <param name="angle">The angle, in degrees, by which to rotate the matrix.</param>
            <param name="centerPoint">The center point of the rotation.</param>
            <returns>The rotation matrix.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.CreateScale(System.Single,System.Single)">
            <summary>
            Creates a scale matrix from the specified <paramref name="x"/> and <paramref name="y"/> components.
            </summary>
            <param name="x">The value to scale by on the X axis.</param>
            <param name="y">The value to scale by on the Y axis.</param>
            <returns>The scaling matrix.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.Equals(KGySoft.Drawing.Shapes.TransformationMatrix)">
            <summary>
            Returns a boolean indicating whether the matrix is equal to the other given matrix.
            </summary>
            <param name="other">The other matrix to test equality against.</param>
            <returns><see langword="true"/> if this matrix is equal to <paramref name="other"/>; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.Equals(System.Object)">
            <summary>
            Returns a boolean indicating whether the given <see cref="T:System.Object"/> is equal to this matrix instance.
            </summary>
            <param name="obj">The <see cref="T:System.Object"/> to compare against.</param>
            <returns><see langword="true"/> if the object is equal to this matrix; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.GetHashCode">
            <summary>
            Returns the hash code for this instance.
            </summary>
            <returns>The hash code.</returns>
        </member>
        <member name="M:KGySoft.Drawing.Shapes.TransformationMatrix.ToString">
            <summary>
            Returns a string that represents this matrix.
            </summary>
            <returns>The string representation of this matrix.</returns>
            <remarks>The numeric values in the returned string are formatted by using the conventions of the current culture.</remarks>
        </member>
        <member name="T:KGySoft.Drawing.Shapes.NamespaceDoc">
            <summary>
            The <see cref="N:KGySoft.Drawing.Shapes"/> namespace provides types and extension methods for drawing and filling shapes on <see cref="T:KGySoft.Drawing.Imaging.IReadWriteBitmapData"/> instances.
            <br/>See the properties of the <see cref="T:KGySoft.Drawing.Shapes.DrawingOptions"/> class, and the <strong>Remarks</strong> section of the <see cref="T:KGySoft.Drawing.Shapes.Brush"/>, <see cref="T:KGySoft.Drawing.Shapes.Pen"/> and <see cref="T:KGySoft.Drawing.Shapes.Path"/> classes for examples with images.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.ColorChannels">
            <summary>
            Represents the RGB color channels when manipulating images.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ColorChannels.None">
            <summary>
            Represents none of the color channels.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ColorChannels.R">
            <summary>
            Represents the Red color channel.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ColorChannels.G">
            <summary>
            Represents the Green color channel.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ColorChannels.B">
            <summary>
            Represents the Blue color channel.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ColorChannels.Rgb">
            <summary>
            Represents the R, G and B color channels.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.DrawingOperation">
            <summary>
            Represents various drawing operations to indicate the current operation when reporting progress using an <a href="https://docs.kgysoft.net/corelibraries/html/T_KGySoft_Threading_IAsyncProgress.htm">IAsyncProgress</a> implementation.
            This library always uses the <see cref="T:KGySoft.Drawing.DrawingOperation"/> type as a type argument when calling the <a href="https://docs.kgysoft.net/corelibraries/html/M_KGySoft_Threading_IAsyncProgress_New__1.htm">New&lt;T>(T, int, int)</a> method.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.DrawingOperation.UndefinedProcessing">
            <summary>
            Represents indefinite processing
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.DrawingOperation.InitializingQuantizer">
            <summary>
            Represents the initialization of a quantizer
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.DrawingOperation.InitializingDitherer">
            <summary>
            Represents the initialization of a ditherer
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.DrawingOperation.GeneratingPalette">
            <summary>
            Represents a palette-generating operation. Can be the part of another operation, such as quantizer initialization.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.DrawingOperation.ProcessingPixels">
            <summary>
            Represents an operation that processes pixels. A more complex async method may perform multiple processing operations one after another.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.DrawingOperation.Saving">
            <summary>
            Represents a saving operation.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.DrawingOperation.Loading">
            <summary>
            Represents a loading operation.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.ScalingMode">
            <summary>
            Represents the scaling mode when an image needs to be resized.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ScalingMode.Auto">
            <summary>
            Represents an automatically selected scaling mode based on source/target sizes providing the best quality.
            In practice, the <see cref="F:KGySoft.Drawing.ScalingMode.MitchellNetravali"/> scaling mode is selected if either the width or height is enlarged,
            and the <see cref="F:KGySoft.Drawing.ScalingMode.Bicubic"/> scaling mode, if there is shrinking in both dimensions.
            If source and target sizes are the same, then <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/> is selected.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ScalingMode.NoScaling">
            <summary>
            Represents no scaling. When source and target sizes are different, then clipping might occur.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ScalingMode.NearestNeighbor">
            <summary>
            Represents the nearest neighbor scaling mode, which always selects the closest pixel when scaling.
            Apart from <see cref="F:KGySoft.Drawing.ScalingMode.NoScaling"/> this is the fastest scaling mode but provides the poorest quality.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ScalingMode.Box">
            <summary>
            Represents box scaling mode. When downscaling, the pixels will average.
            When upscaling, the result is identical to <see cref="F:KGySoft.Drawing.ScalingMode.NearestNeighbor"/>.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ScalingMode.Bilinear">
            <summary>
            Represents a 2-dimensional linear interpolation scaling mode. It is among the faster scaling techniques but
            it provides an acceptable quality only if the difference between the source and target size does not exceed 25%.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ScalingMode.Bicubic">
            <summary>
            Represents the bicubic interpolation. It both preserves sharpness and reduces artifacts quite well.
            This is the default scaling mode when downscaling images.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ScalingMode.Lanczos2">
            <summary>
            Represents the resampling algorithm suggested by Kornél Lánczos using a kernel radius of 2 pixels.
            It both preserves sharpness and reduces artifacts quite well. When downscaling, acts also as a low-pass filter.
            The result is usually similar to the bicubic filter.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ScalingMode.Lanczos3">
            <summary>
            Represents the resampling algorithm suggested by Kornél Lánczos using a kernel radius of 3 pixels.
            It is among the slower filters and it tends to increase the sharpness of the original image.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ScalingMode.Spline">
            <summary>
            Represents the spline cubic interpolation. It provides smooth results but it tends to overly blur the details.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ScalingMode.CatmullRom">
            <summary>
            Represents the Catmull-Rom cubic interpolation. Similarly to the bicubic interpolation
            it preserves sharpness quite well without producing strong artifacts.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ScalingMode.MitchellNetravali">
            <summary>
            Represents the Mitchell-Netravali cubic interpolation. Usually it produces very good results.
            This is the default scaling mode when upscaling images.
            </summary>
        </member>
        <member name="F:KGySoft.Drawing.ScalingMode.Robidoux">
            <summary>
            Represents the Robidoux cubic interpolation. It produces a very similar result to the Mitchell-Netravali interpolation.
            </summary>
        </member>
        <member name="T:KGySoft.Drawing.IntExtensions">
            <summary>
            In fact, Int32, UInt32, UInt64, BitVector32
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.RectangleExtensions.IsEmpty(System.Drawing.Rectangle)">
            <summary>
            Gets whether the rectangle has zero Width OR Height.
            Not just faster than the IsEmpty property but also works better when Intersect returns a non-default practically zero rectangle.
            </summary>
        </member>
        <member name="M:KGySoft.Drawing.RectangleExtensions.IntersectSafe(System.Drawing.Rectangle,System.Drawing.Rectangle)">
            <summary>
            Like Rectangle.Intersect, but works with big ranges, and returns Rectangle.Empty if the result would be a practically zero rectangle.
            </summary>
        </member>
        <member name="T:KGySoft.Res">
            <summary>
            Contains the string resources of the project.
            </summary>
        </member>
        <member name="P:KGySoft.Res.OperationCanceled">
            <summary>The operation was canceled.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingInvalidOperationIndexedOnly">
            <summary>This method can be used only on bitmaps with indexed pixel format.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingQuantizerInitializeNull">
            <summary>The IQuantizer.Initialize method returned a null reference.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingDithererInitializeNull">
            <summary>The IDitherer.Initialize method returned a null reference.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingNotBitmapDataStream">
            <summary>Not a valid bitmap data stream.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingInvalidBitmapDataSize">
            <summary>The bitmap data has an invalid size.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingNonIndexedPixelFormatExpected">
            <summary>A non-indexed pixel format is expected.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingIndexedPixelFormatExpected">
            <summary>An indexed pixel format is expected.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingWidthTooLarge">
            <summary>The specified width is too large for the given buffer width and pixel format.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingIndexedPixelFormatTooLarge">
            <summary>An indexed pixel format should not be larger than 16 bits per pixel.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingInvalidPremultipliedValues">
            <summary>For a premultiplied color the alpha value should not be smaller than the color components.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingInvalidArgbValues">
            <summary>One or more color components are out of range.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingCustomBitmapDataWriteOnly">
            <summary>This custom bitmap data is write-only so it does not support getting pixels.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingCustomBitmapDataReadOnly">
            <summary>This custom bitmap data is read-only so it does not support setting pixels.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingNoPixelAccessSpecified">
            <summary>At least one of the pixel access delegates should be specified.</summary>
        </member>
        <member name="P:KGySoft.Res.ImagingUnmanagedBufferTooLarge">
            <summary>Cannot create a clone of the unmanaged bitmap of this size because the created buffer would be too large.</summary>
        </member>
        <member name="P:KGySoft.Res.GifEncoderCannotChangeProperty">
            <summary>This property cannot be set after adding the first image.</summary>
        </member>
        <member name="P:KGySoft.Res.GifEncoderPaletteTooLarge">
            <summary>The palette must not have more than 256 colors.</summary>
        </member>
        <member name="P:KGySoft.Res.GifEncoderCommentTooLong">
            <summary>GIF comments cannot be longer than 255 characters.</summary>
        </member>
        <member name="P:KGySoft.Res.GifEncoderCommentNotAscii">
            <summary>GIF comments can consist of ASCII characters only.</summary>
        </member>
        <member name="P:KGySoft.Res.GifEncoderAnimationContainsNoFrames">
            <summary>Encoder options did not return any frames.</summary>
        </member>
        <member name="P:KGySoft.Res.GifEncoderNullFrame">
            <summary>Encoder options returned a null frame. You must initialize GifEncodingOptions with an enumeration that does not have a null element.</summary>
        </member>
        <member name="P:KGySoft.Res.GifEncoderUnexpectedFrameSize">
            <summary>A frame had an unexpected size. Set the GifEncodingOptions.SizeHandling property to allow different input sizes.</summary>
        </member>
        <member name="P:KGySoft.Res.ShapesBezierPointsInvalid">
            <summary>If not zero or one points are specified, then the number of points minus one should be divisible by 3.</summary>
        </member>
        <member name="P:KGySoft.Res.ShapesStartEndTooClose">
            <summary>Start and end points are too close to each other.</summary>
        </member>
        <member name="M:KGySoft.Res.EnsureInitialized">
            <summary>
            Just an empty method to be able to trigger the static constructor without running any code other than field initializations.
            </summary>
        </member>
        <member name="M:KGySoft.Res.InternalError(System.String)">
            <summary>Internal Error: {0}</summary>
            <remarks>Use this method to avoid CA1303 for using string literals in internal errors that never supposed to occur.</remarks>
        </member>
        <member name="M:KGySoft.Res.PixelFormatInvalid(KGySoft.Drawing.Imaging.KnownPixelFormat)">
            <summary>Pixel format '{0}' does not represent an actual format.</summary>
        </member>
        <member name="M:KGySoft.Res.InvalidAsyncResult(System.String)">
            <summary>Either the IAsyncResult object did not come from the corresponding '{0}' method, or the End method was called multiple times with the same IAsyncResult.</summary>
        </member>
        <member name="M:KGySoft.Res.ImagingPaletteTooLarge(System.Int32,System.Int32)">
            <summary>Palette must not have more than {0} colors for a pixel format of {1} bits per pixel.</summary>
        </member>
        <member name="M:KGySoft.Res.ImagingStrideTooSmall(System.Int32)">
            <summary>For the given pixel format and width stride must not be less than {0}.</summary>
        </member>
        <member name="M:KGySoft.Res.ImagingStrideInvalid(System.Type,System.Int32)">
            <summary>For element type '{0}' stride must be a multiple of {1}.</summary>
        </member>
        <member name="M:KGySoft.Res.ImagingStrideFormatInvalid(KGySoft.Drawing.Imaging.KnownPixelFormat,System.Int32)">
            <summary>For known pixel format '{0}' stride must be a multiple of {1}.</summary>
        </member>
        <member name="M:KGySoft.Res.ImagingBufferLengthTooSmall(System.Int32)">
            <summary>The specified buffer should have at least {0} elements for the specified size, stride and pixel format.</summary>
        </member>
        <member name="M:KGySoft.Res.ImagingPixelWidthInvalid(System.Type,KGySoft.Drawing.Imaging.KnownPixelFormat,System.Int32,System.Int32)">
            <summary>For buffer element type '{0}' and known pixel format '{1}', the pixel width multiplied by {2} must be a multiple also of {3}.</summary>
        </member>
        <member name="M:KGySoft.Res.ImagingInvalidPaletteIndex(System.Int32,System.Int32)">
            <summary>Palette index {0} is invalid. It must be greater than or equal to 0 and less than palette count {1}.</summary>
        </member>
        <member name="T:KGySoft._">
            <summary>
            Represents a discarded type in generic arguments.
            </summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.AllowNullAttribute">
            <summary>Specifies that null is allowed as an input even if the corresponding type disallows it.</summary>
        </member>
        <member name="T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute">
            <summary>Specifies that the output will be non-null if the named parameter is non-null.</summary>
        </member>
        <member name="M:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.#ctor(System.String)">
            <summary>Initializes the attribute with the associated parameter name.</summary>
            <param name="parameterName">
            The associated parameter name.  The output will be non-null if the argument to the parameter specified is non-null.
            </param>
        </member>
        <member name="P:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.ParameterName">
            <summary>Gets the associated parameter name.</summary>
        </member>
    </members>
</doc>