以前このような質問をしました
その回答を受けてルーラーをつけるにはどうすればいいかという質問です。
現在、フォームはこんな階層構造になっています
Form form
└Panel panel {AutoScroll = true}
_ └PictureBox vRular
_ └PictureBox hRular
_ └PictureBox image
hRularは常に上に表示され、左右の移動は連動します。
vRularは常に左に表示され、上下の移動は連動します。
panelのScrollに、vRular,hRularの座標を再設定する処理を入れています。
private void Panel_Scroll(object sender, ScrollEventArgs e) { if (e.ScrollOrientation == ScrollOrientation.VerticalScroll) { hRular.Location = new Point(panel.Location.X, 0); } if (e.ScrollOrientation == ScrollOrientation.HolizonalScroll) { vRular.Location = new Point(0, panel.Location.Y); } }
ただこの方法だと、
・描画したあとPanel_Scrollが呼ばれるので、一瞬ルーラーの位置がおかしくなる
・ウィンドウサイズを変更してスクロールバーを動かすと、ルーラーの位置がおかしくなる
という問題があります
こういう問題を避けてルーラーをつけるにはどうするべきでしょうか
あなたの回答
tips
プレビュー