как клонировать солидбар в GDI + C ++ - PullRequest
1 голос
/ 08 мая 2009

Я использую gdi + и c ++. У меня есть вопрос о SolidBrush. Как клонировать SolidBrush?

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

Я обнаружил, что newBrush - это объект Brush. Это означает, что если я использую dynamic_cast<SolidBrush>(newBursh), я всегда получу NULL.

Я прочитал .h файл gdi + SolidBrush, кажется, использовал виртуальный метод Клона Brush, он не отменяет его!

Почему?

Спасибо за решения, но у меня все еще есть вопрос? почему SolidBrush не реализует метод клонирования?

Ответы [ 3 ]

1 голос
/ 08 мая 2009

Brush может делать все, что SolidBrush может. SolidBrush - это просто удобный способ создать Brush со сплошным цветом.

Вот пример, полученный из этого примера на MSDN :

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

Затем вы можете просто использовать clone как любую другую кисть, и она будет вести себя точно так же, как solidBrush.

0 голосов
/ 17 августа 2009

почему SolidBrush не реализует метод клонирования?

SolidBrush наследует метод clone от Brush. Реализация его снова в SolidBrush была бы излишней.

0 голосов
/ 08 мая 2009

Вы можете просто использовать свойство color SolidBrush, и оно будет клонировано. Это SolidBrush, поэтому в любом случае важен только цвет.

Примерно так должно работать:

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

...