首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道哪种笔刷是ID2D1Brush?

如何知道哪种笔刷是ID2D1Brush?
EN

Stack Overflow用户
提问于 2015-05-25 15:07:31
回答 2查看 240关注 0票数 2

我以前使用CreateSolidColorBrushCreateLinearGradientBrush创建了一个CreateSolidColorBrush

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

代码语言:javascript
复制
ID2D1Brush* brush = ...

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

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-03 20:43:43

只有当您选择在每次呈现传递时执行此操作,查询才会受到影响,并且可能正是您所需要的。

代码语言:javascript
复制
ID2D1Brush* brush = nullptr;
// ...

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

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

票数 1
EN

Stack Overflow用户

发布于 2015-05-25 16:36:07

C++中,你自己跟踪东西。这不是C#。因此有两种情况:

  • 您的资源是静态的,您知道每一件事情是什么,所以在运行时不进行查询。
  • 您可以在ID2D1SolidColorBrush周围使用一个包装类来存储有关画笔的更多信息。使用对应用程序有意义的画笔类型的enum

就性能而言,查询是一个糟糕的选择,而不是跟踪自己。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30441256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档