如何在GDI + C ++中克隆solidbrush

时间:2009-05-08 04:28:11

标签: c++ gdi+ clone

我正在使用gdi +和c ++。 我有一个关于SolidBrush的问题。 如何克隆SolidBrush?

SolidBrush* oldBrush xxx;
Brush* newBrush = oldBrush->Clone();

我发现newBrush是一个Brush对象。 这意味着如果我使用dynamic_cast<SolidBrush>(newBursh),我将始终获得NULL。

我读了gd + SolidBrush的.h文件似乎用了刷的虚拟克隆方法,它不会覆盖它!

为什么?

感谢您提供解决方案,但我仍有疑问?为什么SolidBrush不实现克隆方法?

3 个答案:

答案 0 :(得分:1)

Brush可以完成SolidBrush所能做的一切。 SolidBrush只是创建纯色Brush的便捷方式。

以下是源自this example at MSDN的示例:

SolidBrush solidBrush(Color(255,255,0,0));
Brush *clone = solidBrush.Clone();

然后,您可以像其他任何画笔一样使用clone,它的行为与solidBrush完全相同。

答案 1 :(得分:0)

  

为什么SolidBrush不实现克隆方法?

SolidBrush从Brush继承clone方法。在SolidBrush中再次实施它将是多余的。

答案 2 :(得分:-1)

您可以简单地使用SolidBrush的颜色属性,它将被克隆。这是一个SolidBrush,因此,唯一重要的是颜色无论如何。

这样的事情应该有效:

Brush* newBrush = new Brush(oldBrush->Color);