如何在 GDI 中克隆 Solidbrush+ C++
我正在使用 gdi+ 和 c++。 我有一个关于 SolidBrush 的问题。 如何克隆 SolidBrush?
SolidBrush* oldBrush xxx;
Brush* newBrush = oldBrush->Clone();
我发现 newBrush 是一个画笔对象。 这意味着如果我使用dynamic_cast
,我将始终得到 NULL。
我读了gdi+ SolidBrush的.h文件,似乎使用了Brush的虚拟克隆方法,它没有覆盖它!
为什么?
感谢您的解决方案,但我还有一个问题? 为什么SolidBrush不实现Clone方法?
I am using gdi+ and c++.
I have a question about SolidBrush.
How To clone a SolidBrush?
SolidBrush* oldBrush xxx;
Brush* newBrush = oldBrush->Clone();
I found newBrush is a Brush Object.
Which mean if I use dynamic_cast<SolidBrush>(newBursh)
, I will always get NULL.
I read the .h file of gdi+ SolidBrush seems used Brush's virtual Clone method, it do not override it!
Why?
Thanks for solutions, but I still have a question? why SolidBrush do not implement Clone Method?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Brush
可以做SolidBrush
可以做的一切。SolidBrush
只是创建纯色Brush
的便捷方法。以下示例源自 MSDN 上的此示例 :
然后您可以像任何其他画笔一样使用
clone
,它的行为与solidBrush
完全相同。Brush
can do everythingSolidBrush
can.SolidBrush
is just a convenient way to create aBrush
with a solid color.Here's an example derived from this example at MSDN:
You can then just go ahead and use
clone
like any other brush and it'll behave exactly likesolidBrush
.SolidBrush
继承了 Brush 的clone
方法。 在SolidBrush
中再次实现它是多余的。SolidBrush
inherits theclone
method from Brush. Implementing it again inSolidBrush
would be redundant.您只需使用 SolidBrush 的颜色属性即可将其克隆。 它是一个 SolidBrush,因此,唯一重要的是颜色。
像这样的东西应该有效:
画笔* newBrush = new Brush(oldBrush->Color);
You can simply use the color property of the SolidBrush and it will be cloned. It's a SolidBrush, therefore, only important thing is color anyway.
Something like this should work:
Brush* newBrush = new Brush(oldBrush->Color);