- 題名: ドラッグでスクロール
- 日時: 2004/08/06 18:08:42
- ID: 5432
- この記事の返信元:
- (なし)
- この記事への返信:
- [5445] Re[1]: ドラッグでスクロール2004/08/06 22:09:37
- ツリーを表示
■No5535に返信(SIVAさんの記事) SIVAさん、こんばんは。深山と申します。 > ドラッグ中のpictureBox1がブルブル震えるような(?)不穏な動きをします。 こちらでも確認しました。検証したところ AutoScrollPosition プロパティを設定する →設定された値に応じて pictureBox1 が移動させられる →(相対的に)マウス ポインタの座標値が変わる のが原因のようです。 ですので、マウス ポインタの座標値をスクリーン座標で持つようにしてあげれば解決しますよ。 こんな感じでどうでしょう? # 直打ちなのでタイプ ミスがあるかも知れません(^_^;) > private Point pnt; > private bool bFlag; > > private void pictureBox1_MouseDown(...省略...) { > pnt = new Point(e.X, e.Y); pnt = pictureBox1.PointToScreen(pnt); > bFlag = true; > } > > private void pictureBox1_MouseUp(...省略...) { > bFlag = false; > } > > private void pictureBox1_MouseMove(...省略...) { > if(bFlag) { Point pnt2 = new Point(e.X, e.Y); pnt2 = pictureBox1.PointToScreen(pnt2); int x = pnt2.X - pnt.X; int y = pnt2.Y - pnt.Y; > panel1.AutoScrollPosition = new Point(x * -1, y * -1); > } > } ただ、これだとスクロール バーの操作と組み合わせた時に意図した動作にならないのでは ないでしょうか? もしそうでしたら、 AutoScrollPosition プロパティを変更するときに現在の値とマウスの 移動分から新しい値を計算するようにする必要があります。
分類:[.NET]
初めて投稿します。
まだ初心者ですがよろしくお願い致します。
AutoScroll付きのPanel(panel1とします)の上に
PictureBox(pictureBox1とします)を配置し、
そこにGraphicsで線などを描画しています。
他のコントロールよりpictureBox1のサイズを変更でき、
panel1より大きくなるとスクロールバーが表示されます。
現在スクロールバーを操作する事により
pictureBox1の隠れた部分を表示(スクロールさせる事)はできるのですが、
pictureBox1をドラッグしてマウスを移動させる事で
同様の処理を行えないでしょうか?