2017-09-24 13 views
0

mousemoveイベントでキャプチャできないこれらの欠損値を手に入れることができる誰か/専門家はいますか?MouseMoveイベントでキャプチャできない不足している値をどのように埋めるのですか?

私のプロジェクトのビデオ。 [View]

私の考えでは、これは任意のではない、

For Each i as even row index and j as odd row index 
    If i - j > 2 
     Do Until j = i 
      dgv.rows.insert()'code that will increase by +1 

は、行のインデックスを決定するために、我々は再び

If i Mod 2 = 0 Then 
    'even 
Else 
    'Odd 
End If 

を言うことができ、ここで私たちのような欠損値を得ることができますとにかくあり実際のコード。私はちょうど私の考えを説明しようとしていた。

フォームコード:

Public Class Form1 
    Dim drag As Boolean 
    Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove 
     If Not drag Then 
      Exit Sub 
     End If 
     dgv.Rows.Add((MousePosition.X - Me.Left - 8).ToString, (MousePosition.Y - Me.Top - 34).ToString) 
    End Sub 

    Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown 
     drag = True 
    End Sub 

    Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp 
     drag = False 
     Dim img As Bitmap = New Bitmap(Me.Width, Me.Height) 
     Dim gfx As Graphics = Graphics.FromImage(img) 
     For i As Integer = 0 To dgv.RowCount - 1 
      gfx.FillEllipse(Brushes.Black, Convert.ToInt32(dgv.Rows(i).Cells(0).Value), Convert.ToInt32(dgv.Rows(i).Cells(1).Value), 5, 5) 
     Next 
     PictureBox1.Image = img 
    End Sub 
End Class 

アプリケーションのスクリーンショット:
enter image description here

+0

どのような値がありませんか?私たちをオフサイトにして、ビデオを見てみましょう。あなたがここに完全でクリアな説明を書くだけでいいのです。 – jmcilhinney

+1

さて、コードを更新しています。しかし、私はビデオを提供することが問題を説明する良い方法だと思った。 –

+1

これで確認できます。私は質問を更新しました。 –

答えて

3

大丈夫!

まずは皆さんに感謝します(提案)。最後に、この問題を解決するための解決策を見つけました。私は、このソリューションや似たようなことは、描画曲線のMicrosoftサポートページ以外のネットで検索しても見つかりませんでした。私は、このソリューションが将来MouseMoveイベントを描いている間にダッシュを克服するために役立つことを願っています。それ以上の話をすることなく、私にあなたに解決策を教えてください。

ソリューションコード:

Public Class Form2 
Dim drag As Boolean 
Dim img As Bitmap = New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height) 
Dim gfx As Graphics = Graphics.FromImage(img) 
Dim imgPartial As Bitmap = New Bitmap(img) 
Dim gfxPartial As Graphics = Graphics.FromImage(imgPartial) 

Dim mouseX As Integer 
Dim mouseY As Integer 
Dim fixCurve() As Point 
Dim redPen As New Pen(Color.Red, 3) 
Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove, Panel1.MouseMove 
    If drag Then 

     mouseX = (MousePosition.X - Me.Left - 8) 
     mouseY = (MousePosition.Y - Me.Top - 34) 
     gfxPartial.FillEllipse(Brushes.Red, MousePosition.X - Me.Left - 8, (MousePosition.Y - Me.Top - 34), 3, 3) 
     PictureBox1.Image = imgPartial 
     fixCurve(UBound(fixCurve)) = New Point(mouseX, mouseY) 
     ReDim Preserve fixCurve(UBound(fixCurve) + 1) 
    End If 
End Sub 
Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown, Panel1.MouseDown 
    drag = True 
End Sub 

Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp, Panel1.MouseUp 
    drag = False 
    'Here's the magic begin!!! 
    ReDim Preserve fixCurve(fixCurve.Length - 2) 
    gfx.DrawCurve(redPen, fixCurve) 
    PictureBox1.Image = img 
    gfxPartial.Clear(Color.White) 
    gfxPartial.DrawImage(img, New Point(0, 0)) 
    ReDim fixCurve(0) 
End Sub 

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load 
     ReDim fixCurve(0) 
    End Sub 
End Class 

利点:

このソリューションでは、DataGridViewの使用を克服し、代わりにそれは、マウスの位置を格納する配列の機能を使用しています。

関連する問題