1

gdi+ と c++ を使用しています。SolidBrush について質問があります。SolidBrush のクローンを作成するには?

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

newBrush がブラシ オブジェクトであることがわかりました。つまり、 を使用するdynamic_cast<SolidBrush>(newBursh)と、常に NULL になります。

gdi+ SolidBrush の .h ファイルを読みましたが、Brush の仮想 Clone メソッドを使用しているようで、オーバーライドしていません!

なんで?

解決策をありがとう、でもまだ質問がありますか? SolidBrush が Clone メソッドを実装しないのはなぜですか?

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 が Clone メソッドを実装しないのはなぜですか?

SolidBrushcloneBrush からメソッドを継承します。で再度実装するのSolidBrushは冗長です。

于 2009-08-17T05:04:52.203 に答える
-1

SolidBrush の color プロパティを使用するだけで、クローンが作成されます。これは SolidBrush なので、とにかく重要なのは色だけです。

このようなものが動作するはずです:

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

于 2009-05-08T04:44:22.023 に答える