写一个绘制正弦曲线的程序,
 当用form_load()时如下:
Private Sub Form_Load()
  Dim x As Integer
 Dim x1 As Single, y1 As Single
 Dim x2 As Single, y2 As Single
 Dim dx As Single
 '设置窗体在屏幕上的位置和大小
 Form1.Left = 2000
 Form1.Top = 1000
 Form1.Height = 3500
 Form1.Width = 4450
 '设置窗体的背景颜色为白色
 Form1.BackColor = &H80000005
 
 '设置划线的宽度为2,划线线型使用默认线型
 Form1.DrawWidth = 2
 
 '设置绘图度量单位
 ScaleMode = 6
 '画横轴,没有设画线颜色,系统使用默认颜色(黑色)画线 
 Line (2, 26)-(74, 26), RGB(0, 255, 0) '设置画线起点
 x1 = 2
 y1 = 26
 '设定每步的横向增量值
 dx = 0.2
 '划线
 For x = 1 To 360
 x2 = x1 + dx
 y2 = 26 - 24 * Sin(x * 3.1415926 / 180)
 '画线,颜色为红色
 Line (x1, y1)-(x2, y2), RGB(255, 0, 0)
 '调整下一起点
 x1 = x2: y1 = y2
 Next x
 
End Sub
结果执行的时候却没有显示出曲线来,而用其它的事件过程如:form_click(),或form_dblclick()却可以显示出曲线来,不明白为什么。
中间的代码是相同的。
Private Sub Form_click()
 Dim x As Integer
 Dim x1 As Single, y1 As Single
 Dim x2 As Single, y2 As Single
 Dim dx As Single
 '设置窗体在屏幕上的位置和大小
 Form1.Left = 2000
 Form1.Top = 1000
 Form1.Height = 3500
 Form1.Width = 4450
 '设置窗体的背景颜色为白色
 Form1.BackColor = &H80000005
 
 '设置划线的宽度为2,划线线型使用默认线型
 Form1.DrawWidth = 2
 
 '设置绘图度量单位
 ScaleMode = 6
 '画横轴,没有设画线颜色,系统使用默认颜色(黑色)画线 
 Line (2, 26)-(74, 26), RGB(255, 0, 0) '设置画线起点
 x1 = 2
 y1 = 26
 '设定每步的横向增量值
 dx = 0.2
 '划线
 For x = 1 To 360
 x2 = x1 + dx
 y2 = 26 - 24 * Sin(x * 3.1415926 / 180)
 '画线,颜色为红色
 Line (x1, y1)-(x2, y2), RGB(255, 0, 0)
 '调整下一起点
 x1 = x2: y1 = y2
 Next x
 
 End Sub
百思不得其解,望大家帮忙啊!,3k!

解决方案 »

  1.   

    加个Me.AutoRedraw = True'就行了.
    Private Sub Form_Load()
    Me.AutoRedraw = True'加这个
      Dim x As Integer
     Dim x1 As Single, y1 As Single
     Dim x2 As Single, y2 As Single
     Dim dx As Single
     '设置窗体在屏幕上的位置和大小
     Form1.Left = 2000
     Form1.Top = 1000
     Form1.Height = 3500
     Form1.Width = 4450
     '设置窗体的背景颜色为白色
     Form1.BackColor = &H80000005 '设置划线的宽度为2,划线线型使用默认线型
     Form1.DrawWidth = 2 '设置绘图度量单位
     ScaleMode = 6
     '画横轴,没有设画线颜色,系统使用默认颜色(黑色)画线
     Line (2, 26)-(74, 26), RGB(0, 255, 0) '设置画线起点
     x1 = 2
     y1 = 26
     '设定每步的横向增量值
     dx = 0.2
     '划线
     For x = 1 To 360
     x2 = x1 + dx
     y2 = 26 - 24 * Sin(x * 3.1415926 / 180)
     '画线,颜色为红色
     Line (x1, y1)-(x2, y2), RGB(255, 0, 0)
     '调整下一起点
     x1 = x2: y1 = y2
     Next xEnd Sub
      

  2.   

    因为你没有将Me.AutoRedraw 设为True,所以在装入窗体的时候它会重绘窗体,你先前画的东西就没了.
      

  3.   

    这2个人还跑得真快,支持2楼,放进Form_Activate里面更为合适
      

  4.   

    //放进Form_Activate里面更为合适
    但这样窗体重画以后,就没有了如果要一直在,就AutoRedraw 设为True
    或者放在Form_Paint里面,不用设AutoRedraw为True
      

  5.   

    在代码前面先加一句:
    me.show或者把窗体的AutoRedraw设置为true
      

  6.   

    我觉得像这样的代码应该放在Resize()事件里
      

  7.   

    设置窗体AutoReDraw设为True
      

  8.   

    把form的AutoReDraw设为True
    默认的是false。他实际上还是画了的。
    不过最后paint的时候,就刷新了。就抹去了。因为那些线条没有设置重画!
    当AutoReDraw设为True后,他就要重画了。所以就可以了。
      

  9.   

    Form.AutoRedraw = True
    或在 Form_Patin() 中画