これ何て呼びますか

フォームをなめらかに移動する方法はないでしょうか?
以下のコードのように、Locationで位置を変更すると、カクカク移動してしまいます。
ご存知の方おしえてください。どうぞよろしくお願いいたします。

Private Sub Form1_Mousemove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
Dim WorkingArea As Rectangle = Screen.PrimaryScreen.WorkingArea
Dim MousePos As Point = Me.PointToClient(Windows.Forms.Cursor.Position)
'上に移動
If Me.Size.Height * 0.8 < MousePos.Y And Me.Location.Y > 0 Then
Me.Location = New Point(Me.Location.X, Me.Location.Y - 20)
End If
'下に移動
If Me.Size.Height * 0.2 > MousePos.Y And (Me.Location.Y + Me.Size.Height) < WorkingArea.Height Then
Me.Location = New Point(Me.Location.X, Me.Location.Y + 20)
End If
'左に移動
If Me.Size.Width * 0.8 < MousePos.X And Me.Location.X > 0 Then
Me.Location = New Point(Me.Location.X - 20, Me.Location.Y)
End If
'右に移動
If Me.Size.Width * 0.2 > MousePos.X And (Me.Location.X + Me.Size.Width) < WorkingArea.Width Then
Me.Location = New Point(Me.Location.X + 20, Me.Location.Y)
End If
End Sub

A 回答 (2件)

こんにちは



用途はわかりませんが逃げるフォーム
面白いプログラムですね~

既に解決していらっしゃるかもしれませんが

20を1にしてみてはいかがでしょうか
1.8GHz 2GB でもスムーズに動きましたよ

この回答への補足

作りたいイメージのソフトを見つけました。
mag4pという拡大鏡フリーソフトです。
こちらはスムーズに動きました。
スペックの問題ではないようです。

APIをつかうか、フォームをペイントで描いてみます。

補足日時:2011/05/27 18:00
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
20を1にすると、移動速度が遅いんです。。。

お礼日時:2011/04/21 10:29

>> 1.8GHz 2GB でもスムーズに動きましたよ


> 20を1にすると、移動速度が遅いんです。。。
スムーズには動いたのですか?
スペックの悪いPCでどうにかしようという話なのか、
1回の移動距離を20にしたい話なのかが分かりません
でした。

ただ、後者でも、1回のトリガーで1から20までの座標に
順番に移動させればいいだけに思えますけどね。
プログラム関係なく、小学生がなぞなぞ解くレベルの
発想にも思いますが。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
初めは移動距離を+1にしていたのですが、
ゆっくりいどうするので+20にしました。
そうするとカクカクしながら移動していくので、
なめらかに移動できないものか考えています。

お礼日時:2011/04/22 13:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!