所以,在我的程序中,我有一个mousedown事件正在寻找用户点击的X,Y坐标。在mousedown事件中是一系列“if”条件,用于确定如何调用子程序,该子程序在用户触发mousedown事件的位置的X-coord处绘制垂直线。
在VB6中的mousedown事件结束时,是一个“刷新()”。在VB6中运行良好,除了在VB.net中它导致时间关闭并且在调用paint事件时线条将被擦除。为了解决这个问题,我在sub中使用了一个“OnPaint(mypaintArgs)”来绘制线条,而不是用于在VB6版本中触发绘制事件,这样可行。时间很好,线条不会被删除。大。
问题是,它像疯了一样闪烁。使用断点时,paint事件至少触发五次,导致一些疯狂的闪烁。 Doublebuffer没有帮助,也没有任何setStyles。
虽然我无法发布这些子程序的整个代码,但我可以发布足够的内容,以便您了解正在发生的事情。希望有一些措施可以阻止这种疯狂的闪烁/闪烁。
这是从mousedown事件中为绘制线条的表单调用的drawline子例程:
Public Sub DrawSomeLines()
'ResizeRedraw = True
'DoubleBuffered = True
Dim gr As Graphics = Me.CreateGraphics
Dim myPaintArgs As New PaintEventArgs(gr, New Rectangle(New Point(0, 0), My.Application.OpenForms("frmDoc").Size))
'Bunch of code in here that is drawline lines
'example on line below
'mypaintargs.graphics.drawline(Pen, X1, Y1, X2, Y2)
For X = 1 To Number
Pens(X).Dispose()
Next
Me.frmDoc_Paint(Me, myPaintArgs) 'This is new. Replaced the "Refresh()" found in the mousedown event in VB6
End Sub
以下是我可以提供的mousedown事件中的一些代码:
Private Sub frmDoc_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
'//Code in here for getting X and Y coord of where mouse went "down"
'code code code
'//
'//code in here calls DrawSomeLines in various ways depending on what line you need drawn
'code code code
'//
'--Refresh() 'removed due to timing being bad
End Sub
所以,虽然它有效,但你会得到大约3到4个非常明显的闪光/闪烁。不完全可以接受。希望有人可以提出一两个想法吗?非常感谢提前