私は、階層構造でデータベース構造のグラフィカル表現を描画する C# win フォーム アプリケーションの開発に忙しくしています。
すべてが正常に機能していますが、スクロールに問題があります。ちらつきの問題があります。
以下のことを調べました。
Invalidate()
表面をリフレッシュしたいときに呼び出します (かなり役に立ちましたが、まだ少しラグがあります)
また、DoubleBuffered
プロパティをTrueに設定するには(これに関する問題で、ArgumentException
「パラメータが無効です。」というメッセージがスローされます。しかしDoubleBuffered
、メインフォームでtrueに設定できます)
私のデザインの詳細
私には2つのクラスがNode
ありLink
、どちらにもGraphicsPath
メンバーがあり、両方ともpublic void Draw(Graphics g)
自分自身を描画するメソッドを持っています.
StructureMap
メソッドをオーバーライドしたユーザーコントロール呼び出しもあり、描画関数の呼び出しprotected override void OnPaint(PaintEventArgs e)
ごとにループします。Node
親ノードはLink
オブジェクトによって子ノードにリンクされているため、ループは単純です。親ノードの draw メソッドを呼び出すだけで、そのすべての子ノードも再描画されます。
ヒットテストも同じ方法で実行しています。
もっと良い方法はありますか?DoubleBuffered
ユーザー コントロールで true に設定できないのはなぜですか?
PS: これは私の最初の投稿です。