D2D1_PRIMITIVE_BLEND 枚举用于指定 Direct2D 中图元(primitive)的混合方式。以下是 D2D1_PRIMITIVE_BLEND 枚举的定义:
typedef enum D2D1_PRIMITIVE_BLEND {
  D2D1_PRIMITIVE_BLEND_SOURCE_OVER,
  D2D1_PRIMITIVE_BLEND_COPY,
  D2D1_PRIMITIVE_BLEND_MIN,
  D2D1_PRIMITIVE_BLEND_ADD,
  D2D1_PRIMITIVE_BLEND_MAX,
  D2D1_PRIMITIVE_BLEND_FORCE_DWORD
} ;

这个枚举包含以下成员:

  •  D2D1_PRIMITIVE_BLEND_SOURCE_OVER: 标准源覆盖混合。


  •  D2D1_PRIMITIVE_BLEND_COPY: 使用新的像素完全替换已有像素。


  •  D2D1_PRIMITIVE_BLEND_MIN: 取已有像素和新像素颜色的最小值。


  •  D2D1_PRIMITIVE_BLEND_ADD: 将已有像素和新像素颜色相加。


  •  D2D1_PRIMITIVE_BLEND_MAX: 取已有像素和新像素颜色的最大值。


  •  D2D1_PRIMITIVE_BLEND_FORCE_DWORD: 强制将此枚举大小设置为 32 位。


这个枚举通常用于在 Direct2D 中的绘图操作中,通过 SetPrimitiveBlend 方法来设置图元的混合方式。例如:
ID2D1SolidColorBrush *pBrush;
pRenderTarget->CreateSolidColorBrush(
    D2D1::ColorF(1.0f, 0.0f, 0.0f, 1.0f),  // Red color
    &pBrush
);

pRenderTarget->SetPrimitiveBlend(D2D1_PRIMITIVE_BLEND_ADD);
pRenderTarget->DrawRectangle(
    D2D1::RectF(50.0f, 50.0f, 150.0f, 150.0f),
    pBrush,
    2.0f,
    NULL
);

在上述例子中,使用 SetPrimitiveBlend 方法将图元的混合方式设置为相加,然后使用红色画刷绘制矩形。根据混合方式的不同,图元的颜色混合行为也会有所不同。


转载请注明出处:http://www.zyzy.cn/article/detail/25300/Win32 API/D2d1_1.h/D2D1_PRIMITIVE_BLEND