当我生成exe文件后,窗体最大化之后,上面的东东都没有了,怎么回事啊?我该怎么解决呢?
多谢各位高手指点,请不要笑我问的幼稚。

解决方案 »

  1.   

    把窗体的AutoRedraw属性设为true
      

  2.   

    用 AutoRedraw 创建持久的图形
    每个窗体和图片框都具有 AutoRedraw 属性。AutoRedraw 是 Boolean 属性,当它设置为 True 时,会把图形输出保存在内存里。可用 AutoRedraw 属性创建持久的图形。持久的图形
    Microsoft Windows 操纵屏幕图象,来造成重叠窗口的影像。当一个窗口移到其它窗口上时,可暂时隐藏其它窗口,移过后,被覆盖的窗口和它的内容需要重新显示。Windows 管理和控制窗口与控件的重新显示。而用户的 Visual Basic 应用程序必须控制窗体和图片框内图形的重新显示。如果在窗体上用图形方法创建图形,通常希望它们重新显示在以前的位置 (persistent graphics),可用 AutoRedraw 属性创建持久的图形
      

  3.   

    Public Sub redraw() 
    ……
    End SubPrivate Sub Form_Load()
     Me.Show
    …… C = 0.005
      Call redraw
    End Sub '初始化
    Private Sub Com3_Click()
      Tim.Enabled = False
    End Sub
    Private Sub Com2_Click()
       Pic1.Cls
       Pic2.Cls
       Pic3.Cls
       Pic4.Cls
     
       T = 0
       Tim.Enabled = False
      
       Call redraw
       
    End Sub '坐标线Private Sub Com1_Click()
       Tim.Enabled = True
       Call redraw
    ……
    End SubPrivate Sub HScroll1_Change()
        C = HScroll1.Value / 1000
    End SubPrivate Sub Tim_Timer()   'C = 0.005
    ……
    End Sub
    Private Sub Com4_Click()
      Unload Me
    End Sub
    Private Sub TA_Change()
      Tim.Enabled = False
      T = 0
    End SubPrivate Sub TAlf_Change()
    Tim.Enabled = False
     T = 0
    End Sub
    Private Sub TGam_GotFocus()
      Tb = True
      Tim.Enabled = False
    End Sub
    Private Sub Tk_GotFocus()
      Tim.Enabled = False
    End Sub
    Private Sub Tm_GotFocus()
      Tim.Enabled = False
    End Sub
    Private Sub TOmg_GotFocus()
      Tim.Enabled = False
    End Sub大致用到这么多东西,源程序太罗嗦了,不好意思给大家看,呵呵。
      

  4.   

    redraw中有没有对所画图形初始坐标的计算?这个计算是否正确?
      

  5.   

    如果是调试的时候正确,编译成为exe以后错误就试着编译成为P代码
      

  6.   

    Option Explicit
    public formoldWidth As Long
    public formoldHeight As Long
    Dim Obj As ControlPublic Sub ResizeInit(form1 As Form)
       On Error Resume Next
      formoldWidth = form1.ScaleWidth
      formoldHeight = form1.ScaleHeight
         For Each obj In form1
            obj.Tag = obj.Left & "" & obj.Top & "" & obj.Width & "" & obj.Height & ""
         Next obj
         
      End Sub
     
       Public Sub Resizeform(form1 As Form)
       Dim Pos(4) As Double
       Dim F As Long, TempPos As Long, StartPos As Long
       Dim ScaleX As Double, ScaleY As Double
       On Error Resume Next
       ScaleX = form1.ScaleWidth / formoldWidth
       ScaleY = form1.ScaleHeight / formoldHeight
       For Each obj In form1
            StartPos = 1
          For F = 0 To 4
            TempPos = InStr(StartPos, obj.Tag, "", vbTextCompare)
          If TempPos > 0 Then
            Pos(F) = Mid(obj.Tag, StartPos, TempPos - StartPos)
            StartPos = TempPos + 1
          Else
            Pos(F) = 0
          End If
      obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
      Next F
      Next obj
      On Error GoTo 0
    End SubPrivate Sub Form_Resize()
       Call Resizeform(Me)
    End Sub
    调试的时候也是错的。
      

  7.   

    redraw中有对所画图形初始坐标的计算。
    Public Sub redraw()          
       Pic1.ScaleMode = 0
       Pic1.ScaleMode = 3
       Pic1.Scale (-1, 10)-(40, -10)
       Pic1.DrawWidth = 1
       Pic1.Line (0, 9.5)-(0, -9.5), vbBlue
        X = 0
        D = (14 + X) / 10
        Pic1.Line (0, 9.5)-(0, -11.5), vbBlue          
        Pic1.Line (0, 5)-(2, 5), &H996600
        Pic1.Line (2, 5)-(0.5 * D + 2, 2), &H996600
        For i = 0 To 9
           Pic1.Line (D * i + 0.5 * D + 2, 3 * (-1) ^ (i + 1) + 5)-(D * i + 1.5 * D + 2, 3 * (-1) ^ i + 5), &H996600
        Next i
        Pic1.Line (10.5 * D + 2, 2)-(11 * D + 2, 5), &H996600
    ……………………