構文の強調表示やオートコンプリートなどを行うカスタムコントロールをC#/Winformsに実装しました。AutoScrollを使用してスクロールを管理していますが、うまく機能しています。
現在、私はまったく最適化を行っていません(最適化は重要ですが、最後に行っています。機能は私が最初に求めているものです)、巨大なドキュメントをレンダリングしています。キーを押すたびに、影響を受ける行が再解析され、構文の強調表示は一貫しています。
現在、私の大きな肉付きのペイント方法では、クリップ領域の外側にある場合でも、すべての文字列、キーワードなどをペイントしています。しかし、ドキュメントの大きさや、キーワード/ハイライトされたビットとピースの組み合わせの数に関係なく、メモリとCPUのオーバーヘッドはそれほど多くなく、非常に高速に実行されます。
だから私の質問-Graphics.Draw*メソッドはどんな種類のカリングをしますか?例:AutoScrollPositionがドキュメントのずっと下にあり、Graphics.DrawString(描画領域の外側にいくつかの座標を挿入)の場合、実際に作業が行われていますか?また、VM内のWin 7でVSを実行していることにも注意してください。それでも、高速で実行されています。今のところ問題ではありませんが、最適化フェーズに関しては後で覚えておくとよいでしょう。:D
乾杯、アーロン