我想在同一时间绘制100行而不是行然后使用

时间:2014-07-14 19:12:02

标签: vb.net winforms graphics

通过使用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

我希望找到同时绘制线量的方法

4 个答案:

答案 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(),它们将同时出现。