通过使用for i作为整数= 0到100绘制
而不是一行一行或用于绘制Graphic.Drawline的计时器(pens.black,e.x,e.y,0,0)
或在代码中写入100行进行绘制
Private Sub Pic_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Pic.MouseMove
Dim graphic as Graphic= pic.creategraphic
graphic.drawline(pens.black,e.x+10,e.y+1,0+a,0+b)
graphic.drawline(pens.black,e.x+20,e.y+2,0+a,0+b)
graphic.drawline(pens.black,e.x+30,e.y+3,0+a,0+b)
graphic.drawline(pens.black,e.x+40,e.y+4,0+a,0+b)
'ec......
End sub
我希望找到同时绘制线量的方法
答案 0 :(得分:0)
我认为不可能在同一时间完成它,但是使用循环应该绘制它们,使它看起来像是同时绘制的。
Dim z As Integer
For z = 0 To 100
graphic.DrawLine(Pens.Black, e.x+(z * 10), e.y+z, 0+a, 0+b)
Next
每当鼠标在里面移动时绘制很多行会导致很多延迟。
答案 1 :(得分:0)
我建议创建一个离屏位图来缓冲绘图。将所有行绘制到该位图。完成后,将整个位图绘制到屏幕上。这应该让它们一次显示出来,你可以做任何你想要的变换,比如缩放,平移或旋转。
答案 2 :(得分:0)
我知道这是一个相对古老的问题,但我发现它正在寻找其他东西。看到没有答案给出正确答案,我会回答这个问题,以防其他人来寻找答案。
我认为问题是闪烁,你看到线条被逐一绘制。解决此问题的方法是使用双缓冲。我建议您使用PictureBox,因为它默认启用了双缓冲,但如果您直接在表单上绘图,请在Form_Load事件中设置Me.DoubleBuffered() = true
。
如果闪烁不是问题,并且您只想同时绘制所有行,请使用g.DrawLines()
代替g.DrawLine()
。您所要做的就是将线点存储到for循环中的点数组中,然后将该数组传递给绘图方法。我不确定这个方法是否真的同时将它们全部绘制出来,或者它只是一个接一个地进行,但是需要考虑一下。
答案 3 :(得分:-2)
您可以使用.SuspendLayout()
然后绘制所有行,然后使用.ResumeLayout()
,它们将同时出现。