【解決方法】Vb.net drawline からマウス座標へ


ポイントから現在のマウス位置まで線を引こうとすると、予期しない動作が発生します。 マウスをフォームの上部から 100 ピクセル以内、および/またはフォームの左側に 100 ピクセル以内に移動した場合にのみ、線が描画されます。 マウスをフォームから上または右に移動すると、線がフォームの端まで描画されます。

問題の根本にたどり着くために、フォームの更新/無効化と既存の行のクリアを省略しました。 現在、コードはマウスの移動に合わせて線を描画し続けるはずですが、左上の境界線を形成しており、マウスが下または右からこの境界線に入ったときにのみ描画されます。

私が試したこと:

Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles MyBase.MouseMove
        MousePosX = e.X
        MousePosY = e.Y
    End Sub

Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint

            Dim canvas As Graphics = me.CreateGraphics()
            Dim blackpen1 As Pen = New Pen(Color.Black, 2)
            Dim point1 As Point = New Point(210,210)
            Dim point2 As Point = New Point(MousePosX, MousePosY)

            canvas.DrawLine(blackpen1, point1, point2)

    End Sub

結果の画像:

例 — ImgBB[^]

解決策 1

また、あなたが抱えている問題を完全には理解していません…しかし、おそらく次のことを試してください:

VB
Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint

            Dim canvas As Graphics = e.Graphics  ' <---- Changes here !
            Dim blackpen1 As Pen = New Pen(Color.Black, 2)
            Dim point1 As Point = New Point(210,210)
            Dim point2 As Point = New Point(MousePosX, MousePosY)

            canvas.DrawLine(blackpen1, point1, point2)

    End Sub

メソッドの Eventargs から Graphics-Object を使用すると、フォームから領域に完全にアクセスできます。
おそらくそれが役立ちます…

コメント

タイトルとURLをコピーしました