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

发布于 2024-07-20 06:08:04 字数 411 浏览 1 评论 0原文

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

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

我发现 newBrush 是一个画笔对象。 这意味着如果我使用dynamic_cast(newBursh),我将始终得到 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不…忘初心 2024-07-27 06:08:04

Brush 可以做 SolidBrush 可以做的一切。 SolidBrush 只是创建纯色Brush 的便捷方法。

以下示例源自 MSDN 上的此示例

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

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

Brush can do everything SolidBrush can. SolidBrush is just a convenient way to create a Brush with a solid color.

Here's an example derived from this example at MSDN:

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

You can then just go ahead and use clone like any other brush and it'll behave exactly like solidBrush.

赠意 2024-07-27 06:08:04

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

SolidBrush 继承了 Brush 的 clone 方法。 在 SolidBrush 中再次实现它是多余的。

why SolidBrush do not implement Clone Method?

SolidBrush inherits the clone method from Brush. Implementing it again in SolidBrush would be redundant.

夜深人未静 2024-07-27 06:08:04

您只需使用 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);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文