Dim prehr, premin
Dim yuanSub drawcircle()
Dim r, i, x, y
'DrawMode = 10
Const pi = 3.1415926
DrawWidth = 2
r = 8
Circle (0, 0), r
FillStyle = 0
FillColor = vbBlack
For i = 1 To 12 Step 1    x = 7.5 * Sin(i * pi / 6)
    y = 7.5 * Cos(i * pi / 6)
Circle (x, y), 0.2, vbRed
 Next iEnd Sub
Private Sub Form_Load()
Dim x, y
Form1.Width = Form1.Height
ScaleWidth = 20
ScaleHeight = 20
x = ScaleWidth / 2
y = ScaleHeight / 2
Scale (-x, y)-(x, -y)
yuan = True
End SubPrivate Sub Timer1_Timer()
Dim x, y
Dim ttime
Dim hr, min, sec, h
ttime = Now
hr = Hour(ttime)
min = Minute(ttime)
miao = Second(ttime)
If yuan = True Then
  drawcircle
End If
If yuan = True Then
  DrawMode = 10
  h = hr Mod 12
h = hr * 5 + min / 12
x = 5 * Sin(h * pi / 30)
y = 5 * Cos(h * pi / 30)
  Line (0, 0)-(x, y), vbBlack
  prehr = hr
x = 6 * Sin(min * pi / 30)
y = 6 * Cos(min * pi / 30)
  Line (0, 0)-(x, y), vbGreen
  premin = min
End If
DrawMode = 10
  If premin <> min Then
    h = prehr * 5 + premin / 12
    x = 5 * Sin(h * pi / 30)
    y = 5 * Cos(h * pi / 30)
  Line (0, 0)-(x, y), vbBlack
  x = 6 * Sin(premin * pi / 30)
  y = 6 * Cos(premin * pi / 30)
  Line (0, 0)-(X1, Y1), vbGreen
  
  h = hr * 5 + min / 12
  x = 5 * Sin(h * pi / 30)
  y = 5 * Cos(h * pi / 30)
  Line (0, 0)-(x, y), vbBlack
  prehr = hr
  x = 6 * Sin(min * pi / 30)
  y = 6 * Cos(min * pi / 30)
  Line (0, 0)-(x, y), vbGreen
  premin = min
  End If
  
  
  
  
yuan = False '没有此项则表盘会变黑。变量yuan没有释放
End Sub

解决方案 »

  1.   

    Dim prehr, premin
    Dim yuanSub drawcircle()
    Dim r, i, x, y
    'DrawMode = 10
    Const pi = 3.1415926
    DrawWidth = 2
    r = 8
    Circle (0, 0), r
    FillStyle = 0
    FillColor = vbBlack
    For i = 1 To 12 Step 1    x = 7.5 * Sin(i * pi / 6)
        y = 7.5 * Cos(i * pi / 6)
    Circle (x, y), 0.2, vbRed
     Next i
    End SubPrivate Sub Form_Load()
    Dim x, y
    Form1.Width = Form1.Height
    ScaleWidth = 20
    ScaleHeight = 20
    x = ScaleWidth / 2
    y = ScaleHeight / 2
    Scale (-x, y)-(x, -y)
    yuan = True
    End SubPrivate Sub Timer1_Timer()
    Dim x, y
    Dim ttime
    Dim hr, min, sec, h
    ttime = Now
    hr = Hour(ttime)
    min = Minute(ttime)
    miao = Second(ttime)
    If yuan = True Then
      drawcircle
    End If
    If yuan = True Then
      DrawMode = 10
      h = hr Mod 12
    h = hr * 5 + min / 12
    x = 5 * Sin(h * pi / 30)
    y = 5 * Cos(h * pi / 30)
      Line (0, 0)-(x, y), vbBlack
      prehr = hr
    x = 6 * Sin(min * pi / 30)
    y = 6 * Cos(min * pi / 30)
      Line (0, 0)-(x, y), vbGreen
      premin = min
    End If
    DrawMode = 10
      If premin <> min Then
        h = prehr * 5 + premin / 12
        x = 5 * Sin(h * pi / 30)
        y = 5 * Cos(h * pi / 30)
      Line (0, 0)-(x, y), vbBlack
      x = 6 * Sin(premin * pi / 30)
      y = 6 * Cos(premin * pi / 30)
      Line (0, 0)-(x, y), vbGreen
      
      h = hr * 5 + min / 12
      x = 5 * Sin(h * pi / 30)
      y = 5 * Cos(h * pi / 30)
      Line (0, 0)-(x, y), vbBlack
      prehr = hr
      x = 6 * Sin(min * pi / 30)
      y = 6 * Cos(min * pi / 30)
      Line (0, 0)-(x, y), vbGreen
      premin = min
      End If
      yuan = False '没有此项则表盘会变黑。变量yuan没有释放
    End Sub
      

  2.   

    你应该:
    1因为你没有定义pi,难道你定义在模块文件里面了,这里没看到,所以pi是0
    2你是直接画在窗体上的.窗体的autodraw属性一定要是true
    3给你的工程加上Option Explicit
    4在工具->选项->要求变量声明 点上对勾...确定
    5你在timer_timer设置断点了没有,你的timer启动了嘛?
    6
    Sub drawcircle()
    Dim r, i, x, y
    'DrawMode = 10
    Const pi = 3.1415926
    这里pi不过是这个过程的局部常熟,和其他部分用的pi没有关系,除非你把他pi的声明放在窗体级,模块级设置里面.