Sets a new primitive blend mode.
HRESULT SetPrimitiveBlend1( D2D1_PRIMITIVE_BLEND primitiveBlend );
The primitive blend that will apply to subsequent primitives.
If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.
For aliased rendering (except for MIN mode), the output value O is computed by linearly interpolating the value blend(S, D) with the destination pixel value, based on the amount that the primitive covers the destination pixel.
The table here shows the primitive blend modes for both aliased and antialiased blending. The equations listed in the table use these elements:
- O = Output
- S = Source
- SA = Source Alpha
- D = Destination
- DA = Destination Alpha
- C = Pixel coverage
|Primitive blend mode||Aliased blending||Antialiased blending||Description|
|D2D1_PRIMITIVE_BLEND_SOURCE_OVER||O = (S + (1 SA) * D) * C + D * (1 C)||O = S * C + D *(1 SA *C)||The standard source-over-destination blend mode.|
|D2D1_PRIMITIVE_BLEND_COPY||O = S * C + D * (1 C)||O = S * C + D * (1 C)||The source is copied to the destination; the destination pixels are ignored.|
|D2D1_PRIMITIVE_BLEND_MIN||O = Min(S + 1-SA, D)||O = Min(S * C + 1 SA *C, D)||The resulting pixel values use the minimum of the source and destination pixel values. Available in Windows 8 and later.|
|D2D1_PRIMITIVE_BLEND_ADD||O = (S + D) * C + D * (1 C)||O = S * C + D||The resulting pixel values are the sum of the source and destination pixel values. Available in Windows 8 and later.|
An illustration of the primitive blend modes with varying opacity and backgrounds.
The primitive blend will apply to all of the primitive drawn on the context, unless this is overridden with the compositeMode parameter on the DrawImage API.
The primitive blend applies to the interior of any primitives drawn on the context. In the case of DrawImage, this will be implied by the image rectangle, offset and world transform.
If the primitive blend is anything other than D2D1_PRIMITIVE_BLEND_OVER then ClearType rendering will be turned off. If the application explicitly forces ClearType rendering in these modes, the drawing context will be placed in an error state. D2DERR_WRONG_STATE will be returned from either EndDraw or Flush.
|Minimum supported client
||Windows 8.1 [desktop apps | UWP apps]
|Minimum supported server
||Windows Server 2012 R2 [desktop apps | UWP apps]
|Minimum supported phone
||Windows Phone 8.1 [Windows Phone Silverlight 8.1 and Windows Runtime apps]