我正在使用gdi +和c ++。 我有一个关于SolidBrush的问题。 如何克隆SolidBrush?
SolidBrush* oldBrush xxx;
Brush* newBrush = oldBrush->Clone();
我发现newBrush是一个Brush对象。
这意味着如果我使用dynamic_cast<SolidBrush>(newBursh)
,我将始终获得NULL。
我读了gd + SolidBrush的.h文件似乎用了刷的虚拟克隆方法,它不会覆盖它!
为什么?
感谢您提供解决方案,但我仍有疑问?为什么SolidBrush不实现克隆方法?
答案 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);