我以前使用ID2D1BrushCreateSolidColorBrush创建了一个CreateLinearGradientBrush

我需要知道我的指针是ID2D1SolidColorBrush还是ID2D1LinearGradientBrush。我能怎么做?

ID2D1Brush* brush = ...

if (brush is ID2D1SolidColorBrush)
{
}
else if (brush is ID2D1LinearGradientBrush)
{
}

最佳答案

仅当您选择在每个渲染过程中进行查询时,查询才会受到影响,并且可能正是您所需要的。

ID2D1Brush* brush = nullptr;
// ...

ID2D1LinearGradientBrush *linearGradientBrush = nullptr;
if (S_OK == brush->QueryInterface(__uuidof(ID2D1LinearGradientBrush), (void**)&linearGradientBrush))
{
    // ...
}

我使用这种策略,其中基类将保存给定的资源(例如背景画笔),并允许用户(或开发人员)将其设置为他们的首选项。在这种情况下(使用线性渐变刷,需要夹紧。祝您好运。

09-06 07:06