VB中画直线问题?

我在picture2控件中画直线,单击起点并按住拖动鼠标时到终点松开可画出一条直线,双击起点第二下不松开并拖动鼠标时会画同以起点开始的N多条直线,请问该如何改,见程序
Private Sub Picture2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
Picture2.AutoRedraw = False
startx = X '记住起始点
starty = Y
End Sub

Private Sub Picture2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
Picture2.Refresh
Picture2.Line (startx, starty)-(X, Y) '显示橡皮筋效果
End Sub

Private Sub Picture2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
endx = X '记住终止点
endy = Y
Picture2.AutoRedraw = True
Picture2.Line (startx, starty)-(endx, endy) '最终画线
End Sub

“双击起点第二下不松开并拖动鼠标时会画同以起点开始的N多条直线”,这是程序的响应事件问题,第一次MouseDown、MouseUp,再按下时,就产生DblClick事件,同时阻断MouseDown事件,再松开时,就产生MouseUp事件。(需要按同一个键)
DblClick事件只需要MouseDown、MouseUp、MouseDown就会产生。
可以这么说,DblClick事件替换掉了第二次的MouseDown事件。

只要在DblClick事件里调用MouseDown事件就能解决问题了。

添加一个变量
Dim Bn As Integer '记录按键信息

Private Sub Picture2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Bn = Button
If Button <> 1 Then Exit Sub
Picture2.AutoRedraw = False
startx = X
starty = Y
End Sub

Private Sub Picture2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
Picture2.Refresh
Picture2.Line (startx, starty)-(X, Y)
End Sub

Private Sub Picture2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
endx = X
endy = Y
Picture2.AutoRedraw = True
Picture2.Line (startx, starty)-(endx, endy)
End Sub

Private Sub Picture2_DblClick()
If Bn = 1 Then Call Picture2_MouseDown(1, 0, endx, endy)
End Sub
温馨提示:内容为网友见解,仅供参考
无其他回答

VB中画直线问题?
“双击起点第二下不松开并拖动鼠标时会画同以起点开始的N多条直线”,这是程序的响应事件问题,第一次MouseDown、MouseUp,再按下时,就产生DblClick事件,同时阻断MouseDown事件,再松开时,就产生MouseUp事件。(需要按同一个键)DblClick事件只需要MouseDown、MouseUp、MouseDown就会产生。可以这么说,DblClick...

在VB中画线(急!)
1、绘制线表后肯定要先找到这两个控件。2、然后在这里先画上X和Y两轴线。4、接下来,用标签输入这两个标志。4、在使用这个形状按钮绘制。5、一个个画过去线条就可以了。注意事项:VB可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建Active X控件,用于高效生成类型安全和面向对象的应用程序。

在VB中画直线,怎样使画下一条直线时,上一条直线保留?
只要你不添加"me.cls"你画的线会自动的保留,但你必须是用line方法画的,不是用的直线控件

如何用VB编程画直线
color 可选的。Long (长整型数),画线时用的 RGB 颜色。如果它被省略,则使用 ForeColor 属性值。可用 RGB 函数或 QBColor 函数指定颜色。B 可选的。如果包括,则利用对角坐标画出矩形。F 可选的。如果使用了 B 选项,则 F 选项规定矩形以矩形边框的颜色填充。不能不用 B 而用 F。如果不用...

VB 画直线
Visual Basic 所画出的一条直线,要包括第一个端点,而不是最后一个端点。这种行为在从点到点画封闭曲线时是有用的。为了画最后一个端点,应使用这种语法:PSet [Step] (0, 0)[, color]第一对坐标 (x1, y1) 是可选的。如果省略这些坐标,将把该对象的 x,y 当前位置(画图坐标)作为端点。...

用vb随意画n条直线
杂乱直线:Private Sub Form_click()Dim x1 As Single, y1 As Single Dim x2 As Single, y2 As Single Dim i, n n = InputBox("请输入直线条数", "输入框")For i = 1 To n Randomize x1 = Int((1000 * Rnd) + 0)y1 = Int((2000 * Rnd) + 0)x2 = Int((10000 * Rnd)...

VB 画直线的方法是?
画直线是line (x1,y1)-(x2,y2)清除绘图区是cls 当然,这两个方法前面都需要指明具体的对象啦,如Form1或者PictureBox1

在VB NET中,在Form_Load中创建graphics类,并绘制直线,为什么执行程序后...
1. 创建一个Graphics对象实例。绘制图形必须创建Graphics对象。如果是在窗体上绘图,要使用下列代码创建Graphics对象;Dim MyGraphics As Graphics = Me.CreateGraphics 如果是在PictrueBox里绘图,要使用下列代码创建Graphics对象;Dim MyGraphics As Graphics = PictureBox1.CreateGraphics 2. 定义一个Brush...

VB 画直线的方法是?
Line 方法 在对象上画直线和矩形。 语法 object .Line [ Step ] ( x1 , 1 ) [ Step ] ( x2 , y2 ), [color] , [ B ][ F ] Line 方法的语法有以下对象限定符和部分: 部分 描述 object 可选的。 对象表达式,其值为“应用于”列表中的对象。如果object 省略,具有焦点的窗体...

请问这个VB 2010中画一根直线的代码为甚么画不出来呢?
Dim Mypen = New Pen(Brushes.Bisque) '是这儿的问题 Dim Mypen = New Pen(Brushes.Blue) 把颜色改一下 不然画了你也看不到

相似回答