tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル原点に戻る理由がわかりません
記事No3887
投稿日: 2006/06/24(Sat) 19:15
投稿者
ドラッグでスクロールのコードを書いていたのですが、どうしても、二回目以降は、原点に戻ってし
まいます。
このコードの悪いところはどこでしょうか???
Private pnt As Point
Private bFlag As Boolean


Private Sub pictureBox1_MouseDown()
   pnt = New Point(e.X, e.Y)
   pnt = pictureBox1.PointToScreen(pnt)
   bFlag = True
End Sub 'pictureBox1_MouseDown


Private Sub pictureBox1_MouseUp()
   bFlag = False
End Sub 'pictureBox1_MouseUp


Private Sub pictureBox1_MouseMove()
   If bFlag Then
      Dim pnt2 As New Point(e.X, e.Y)
      pnt2 = pictureBox1.PointToScreen(pnt2)
      Dim x As Integer = pnt2.X - pnt.X
      Dim y As Integer = pnt2.Y - pnt.Y
      panel1.AutoScrollPosition = New Point(x * - 1, y * - 1)
   End If
End Sub 'pictureBox1_MouseMove

[ツリー表示へ]
タイトルRe: 原点に戻る理由がわかりません
記事No3890
投稿日: 2006/06/25(Sun) 01:38
投稿者Hongliang
AutoScrollPosition は分かりにくいプロパティでして、取得時は「表示上の左上の点からみて実際の左
上の点はどの位置にあるか」を意味するように、最大が (0, 0) でそれぞれマイナスの値を取りますが

設定時は逆に「実際の左上の点から見て表示上の左上の点をどの位置にするか」を意味するように、最

が (0, 0) でそれぞれプラスの値を取ります。なんでこんなことにしたのかは謎ですが。
しかしこのコードは微妙かも知れません。例えば PictureBox の高さが画面の高さよりも高い場合、ス

ロールしきれなくなったりするでしょう。
一般的には、コントロールの上下左右の端周辺にマウスが来る、あるいは境界を超えた場合は(マウス

動かさずとも)その方向に自動的にスクロールさせたりします。
// 中ボタン使ったスクロールでよく見られますね。

[ツリー表示へ]
タイトルRe^2: 原点に戻る理由がわかりません
記事No3892
投稿日: 2006/06/25(Sun) 08:48
投稿者
すみません聞きたいのですが、
結局のところ書いたコードのどこをどう変えればいいのですか?
ご回答お願いします。

[ツリー表示へ]
タイトルRe: 原点に戻る理由がわかりません
記事No3895
投稿日: 2006/06/25(Sun) 22:12
投稿者YAS
>       Dim x As Integer = pnt2.X - pnt.X
>       Dim y As Integer = pnt2.Y - pnt.Y
>       panel1.AutoScrollPosition = New Point(x * - 1, y * - 1)

このコードではスクロールする量がマウスのドラッグした距離になります。
ですからドラッグし直すとスクロールも最初からやり直しになります。
現在のスクロールの値を取得してその値に加算して,設定する必要があります。

[ツリー表示へ]
タイトルありがとうございました
記事No3898
投稿日: 2006/06/26(Mon) 18:52
投稿者
ありがとうございました。
がんばってやってみます。

[ツリー表示へ]
タイトル何ででしょうか??
記事No3906
投稿日: 2006/06/27(Tue) 23:06
投稿者
>現在のスクロールの値を取得してその値に加算して,設定する必要があります。
とあったので、AutoScrollPositionに変数のx,yを足すのかと思ったのですが、
なぜか変わりません。
何(どの変数値)に変数のx,yを加算すると良いのでしょうか???
教えてください。

[ツリー表示へ]
タイトルRe: 何ででしょうか??
記事No3907
投稿日: 2006/06/28(Wed) 05:57
投稿者YAS
> 何(どの変数値)に変数のx,yを加算すると良いのでしょうか???
> 教えてください。

No.3890でHongliangさんがお書きになっているように,AutoScrollPositionの設定はちょっとややこし
いです。
値を取得し,-1を掛けてから加算します。マウスの移動距離を加算すると移動が加速してしまうので,
定数を加算するほうがよいと思います。

[ツリー表示へ]
タイトルRe^2: 何ででしょうか??
記事No3917
投稿日: 2006/06/29(Thu) 20:56
投稿者
すみませんもうひとつ聞いていいですか?
>値を取得し,-1を掛けてから加算します。マウスの移動距離を加算すると移動が加速してしまうので,
>定数を加算するほうがよいと思います。
とあるのですが、
ここで言う定数とは何の値の事ですか?
ここまでわからず大変すみません?

[ツリー表示へ]
タイトルRe^3: 何ででしょうか??
記事No3922
投稿日: 2006/06/30(Fri) 00:55
投稿者YAS
> ここで言う定数とは何の値の事ですか?
> ここまでわからず大変すみません?

スクロールする量です。

[ツリー表示へ]
タイトルありがとうございました
記事No3926
投稿日: 2006/06/30(Fri) 20:41
投稿者
夜遅くにありがとうございました。
とりあえず(原点には)戻らなくなりました。
ありがとうございました。

[ツリー表示へ]