私は、いくつかのレイヤーからいくつかの形状を描くプロジェクトを持っています。たとえば、円レイヤーに 2 つの円、四角形レイヤーに 3 つの四角形などがあります。呼び出し Layer.Draw で結果を描画し、レイヤーの結果を Graphics オブジェクトとマージします。ピクチャ ボックスで 1 つのシェイプを選択し、レイヤーで指定できます。そして、レイヤーを再描画してドラッグし、グラフィックスですべて再マージできます.それは機能します! しかし遅すぎる!!
どうすればこれを最適化できますか?
私は、いくつかのレイヤーからいくつかの形状を描くプロジェクトを持っています。たとえば、円レイヤーに 2 つの円、四角形レイヤーに 3 つの四角形などがあります。呼び出し Layer.Draw で結果を描画し、レイヤーの結果を Graphics オブジェクトとマージします。ピクチャ ボックスで 1 つのシェイプを選択し、レイヤーで指定できます。そして、レイヤーを再描画してドラッグし、グラフィックスですべて再マージできます.それは機能します! しかし遅すぎる!!
どうすればこれを最適化できますか?
古いソリューションでは、形状をlayer.imageに描画し、ペイントイベントでそれらをe.Graphicとマージします。グラフィックオブジェクトをレイヤーに渡し、それを使用して形状を描画することで、この問題を解決します。私のプログラムはとてもうまくいきます!
むかしむかし、画像を描画する際の速度が必要なプロジェクトがありました。ロック解除方法を使用してビットに直接アクセスしました ( http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.unlockbits.aspx )。しかし、この方法は非常に危険で複雑なので、できる限り避けるべきです。
プログラムを最適化し、不要な描画を削除してみてください。GUI への主要な描画は非常に遅いため、ピクチャ ボックスを永続的に更新するのではなく、必要な場合にのみ更新してください。