mirror of https://github.com/dahall/Vanara.git
59 lines
2.7 KiB
C#
59 lines
2.7 KiB
C#
using System.Runtime.InteropServices;
|
|
|
|
namespace Vanara.PInvoke
|
|
{
|
|
public static partial class Gdi32
|
|
{
|
|
/// <summary>
|
|
/// The BLENDFUNCTION structure controls blending by specifying the blending functions for source and destination bitmaps.
|
|
/// </summary>
|
|
/// <remarks>See information on how this function determines the resulting values on <a href="https://msdn.microsoft.com/en-us/library/dd183393(v=vs.85).aspx">MSDN</a>.</remarks>
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
[PInvokeData("Wingdi.h", MSDNShortId = "dd183393")]
|
|
public struct BLENDFUNCTION
|
|
{
|
|
/// <summary>
|
|
/// The source blend operation. Currently, the only source and destination blend operation that has been defined is AC_SRC_OVER. For details, see the
|
|
/// following Remarks section.
|
|
/// </summary>
|
|
public byte BlendOp;
|
|
|
|
/// <summary>Must be zero.</summary>
|
|
public byte BlendFlags;
|
|
|
|
/// <summary>
|
|
/// Specifies an alpha transparency value to be used on the entire source bitmap. The SourceConstantAlpha value is combined with any per-pixel alpha
|
|
/// values in the source bitmap. If you set SourceConstantAlpha to 0, it is assumed that your image is transparent. Set the SourceConstantAlpha value
|
|
/// to 255 (opaque) when you only want to use per-pixel alpha values.
|
|
/// </summary>
|
|
public byte SourceConstantAlpha;
|
|
|
|
/// <summary>
|
|
/// This member controls the way the source and destination bitmaps are interpreted. AlphaFormat has the following value.
|
|
/// <para>
|
|
/// <c>AC_SRC_ALPHA</c> This flag is set when the bitmap has an Alpha channel (that is, per-pixel alpha). Note that the APIs use premultiplied alpha,
|
|
/// which means that the red, green and blue channel values in the bitmap must be premultiplied with the alpha channel value. For example, if the
|
|
/// alpha channel value is x, the red, green and blue channels must be multiplied by x and divided by 0xff prior to the call.
|
|
/// </para>
|
|
/// </summary>
|
|
public byte AlphaFormat;
|
|
|
|
/// <summary>Initializes a new instance of the <see cref="BLENDFUNCTION"/> struct and sets the alpha value.</summary>
|
|
/// <param name="alpha">The alpha.</param>
|
|
public BLENDFUNCTION(byte alpha)
|
|
{
|
|
// AC_SRC_OVER is the only possible value for BlendOp and it equals 0
|
|
BlendOp = 0;
|
|
BlendFlags = 0;
|
|
SourceConstantAlpha = alpha;
|
|
|
|
// AC_SRC_ALPHA is the only possible value for AlphaFormat and it equals 1
|
|
AlphaFormat = 1;
|
|
}
|
|
|
|
/// <summary>Gets a value indicating whether this instance is empty.</summary>
|
|
/// <value><see langword="true"/> if this instance is empty; otherwise, <see langword="false"/>.</value>
|
|
public bool IsEmpty => BlendOp == 0 && BlendFlags == 0 && AlphaFormat == 0 && SourceConstantAlpha == 0;
|
|
}
|
|
}
|
|
} |