質問

gdiブラシとペンを作成するのに費用はかかりますか?必要に応じて追加して作成し、すぐに破棄されるように使用する必要がありますか、System.Drawing.Brushesクラスに似た静的クラスを作成する必要がありますか?

役に立ちましたか?

解決

IMO、それらは通常、いくつかのメソッド呼び出しで使用される長期間有効なインスタンスを作成しないほど効率的ですが、新しいメソッドを作成するのではなく、特定のメソッド内で各インスタンスを一度だけ作成するほど効率が悪い何かを描く必要があるたびに。

つまり、 OnPaint の呼び出しごとにテキストの描画に使用するカスタムブラシをクラスに保存しないでください。また、テキストのすべての行に新しいブラシを作成しないでください。 OnPaint呼び出し内で描画します。

他のヒント

静的ブラシを使用して、負荷がかかっているWebアプリケーションで画像をカスタム描画しようとすると例外が発生しました。

技術的な理由はわかりませんが、ブラシとペンはスレッドセーフではないと思うので、必要に応じてスレッドセーフな方法でそれらを作成し、おそらく使用

設定可能なGUIについては、単に「使用中」に入れるだけだと考えました。 (必要に応じて再作成)コントロールを描画し、必要に応じて最適化すると判断した場合。

必須ではありません。

これは、WinCE上のWinFormであり、通常、デスクトップ上でわずかに遅いものを表示するのが得意であることを意味します(たとえば、WinCEではリフレクションは非常に高価に感じます)。 perfその後、必要に応じてそれらを作成しても問題ないと思います。

ブラシを使用するIIRC。 GDIのコレクションは、スレッドの安全性についてはよくわかりませんが、最後にキャッシュおよび破棄されるため、オプションになる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top