1

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

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

我发现 newBrush 是一个画笔对象。这意味着如果我使用dynamic_cast<SolidBrush>(newBursh),我将永远得到 NULL。

我看了gdi+ SolidBrush 的.h 文件,好像使用了Brush 的虚拟克隆方法,它没有覆盖它!

为什么?

感谢您的解决方案,但我还有一个问题?为什么 SolidBrush 不实现克隆方法?

4

3 回答 3

1

Brush能做的都SolidBrush可以。SolidBrush只是一种创建Brush纯色的便捷方式。

这是从MSDN上的这个示例派生的示例:

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

然后,您可以继续使用clone任何其他画笔,它的行为将与solidBrush.

于 2009-05-08T04:46:28.570 回答
0

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

SolidBrushclone从 Brush继承方法。再次实施它SolidBrush是多余的。

于 2009-08-17T05:04:52.203 回答
-1

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

像这样的东西应该工作:

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

于 2009-05-08T04:44:22.023 回答