Option Explicit
Private data1(720) As Single
Private data2(720) As Single
Private data3(720) As Single
Dim HLINESNUM As Integer
Dim WLINESNUM As Integer
Dim X As Integer
Dim Y As Integer
Dim i As Integer
Dim j As Integer
Dim a As Single
Dim b As Single
Private Sub drowpicture()
HLINESNUM = 8
WLINESNUM = 24
    X = Picture1.Width / WLINESNUM
    Y = Picture1.Height / HLINESNUM
    For i = 1 To WLINESNUM + 1
     Picture1.Line (X * i, 0)-(X * i, Picture1.Height - 1), vbWhite '画网格
    Next
    For j = 1 To HLINESNUM + 1
    Picture1.Line (0, Y * j)-(Picture1.Width - 1, Y * j), vbWhite
    Next
End Sub
Private Sub drowzuobiao() '写坐标
For i = 0 To 23
      Label1(i).Caption = Str(i)
      Label1(i).Top = 450
      Label1(0).Left = 90
   Next i
For j = 0 To 8
Label2(j).Caption = Str(j / 2)
Label2(j).Left = 72
Label2(0).Top = 428
Next j
For i = 1 To 23
Label1(i).Left = Label1(i - 1).Left + 30
Next
For j = 1 To 8
Label2(j).Top = Label2(j - 1).Top - 50
Next
End Sub
Private Sub drowquxian() '画曲线
For i = 0 To 719 Step 1
Picture1.Line (i, data1(i) * 100)-(i + 1, data1(i + 1) * 100), vbGreen
Picture1.Line (i, data2(i) * 100)-(i + 1, data2(i + 1) * 100), vbRed
Picture1.Line (i, data3(i) * 100)-(i + 1, data3(i + 1) * 100), vbYellow
Next i
End Sub
Private Sub Command1_Click() '放大
Static c As Integer
Dim d As Integer
Picture1.Cls
c = c + 1
d = 2 ^ c
HLINESNUM = 8 / d
WLINESNUM = 24 / d
X = Picture1.Width / WLINESNUM
    Y = Picture1.Height / HLINESNUM
    For i = 1 To WLINESNUM + 1
     Picture1.Line (X * i, 0)-(X * i, Picture1.Height - 1), vbWhite '画网格
    Next
    For j = 1 To HLINESNUM + 1
    Picture1.Line (0, Y * j)-(Picture1.Width - 1, Y * j), vbWhite
    Next
   For i = 0 To 719 Step 1
Picture1.Line (i * d, data1(i) * 100 * d)-((i + 1) * d, data1(i + 1) * 100 * d), vbGreen
Picture1.Line (i * d, data2(i) * 100 * d)-((i + 1) * d, data2(i + 1) * 100 * d), vbRed
Picture1.Line (i * d, data3(i) * 100 * d)-((i + 1) * d, data3(i + 1) * 100 * d), vbYellow
Next i
End Sub
Private Sub Command2_Click() '缩小
Static c As Integer
Dim d As Integer
Picture1.Cls
c = c + 1
d = 2 ^ c
HLINESNUM = 8 * d
WLINESNUM = 24 * d
    X = Picture1.Width / WLINESNUM
    Y = Picture1.Height / HLINESNUM
    For i = 1 To WLINESNUM + 1
     Picture1.Line (X * i, 0)-(X * i, Picture1.Height - 1), vbWhite '画网格
    Next
    For j = 1 To HLINESNUM + 1
    Picture1.Line (0, Y * j)-(Picture1.Width - 1, Y * j), vbWhite
    Next
   For i = 0 To 719 Step 1
Picture1.Line (i / d, data1(i) * 100 / d)-((i + 1) / d, data1(i + 1) * 100 / d), vbGreen
Picture1.Line (i / d, data2(i) * 100 / d)-((i + 1) / d, data2(i + 1) * 100 / d), vbRed
Picture1.Line (i / d, data3(i) * 100 / d)-((i + 1) / d, data3(i + 1) * 100 / d), vbYellow
Next i
End Sub
Private Sub Form_Load()
For i = 0 To 719 Step 1
data1(i) = Rnd * 4
data2(i) = Rnd * 4
data3(i) = Rnd * 4
Next i
Call drowzuobiao
Picture1.Width = 720
Picture1.Height = 400
Static c As Integer
c = 1
End SubPrivate Sub Form_Resize()
Call drowpicture
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text1.Text = data1(X)
Text2.Text = data2(X)
Text3.Text = data3(X)
a = X \ 30
b = (X Mod 30) * 2
Label3.Caption = Format(Str(a), "00") + ":" + Format(Trim(Str(b)), "00")
Line1.X1 = X
Line1.X2 = X
Line1.Y1 = 0
Line1.Y2 = 400
Line2.X1 = 0
Line2.X2 = 720
Line2.Y1 = Y
Line2.Y2 = Y
End Sub
Private Sub Picture1_Resize()
Call drowquxian
End Sub
放大4次就会说除数为0错误,缩小就会使整个曲线界面全变小了,缩小11次的时候就会出现溢出错误

解决方案 »

  1.   

    哪是你這樣放大縮小的?畫在PICTURE控件上,放大縮小時,是放大縮小他的座標比例。
      

  2.   

    首先用picture1.scale来确定坐标
      

  3.   

    自己参考一下,inth可以调节高度,intw可以调节宽度    intW = Slider1.Value
        intH = UpDown1.Value
        lngNum = g_lngValueLength(Index1, Index2)
        If lngNum < 1 Then
            GoTo PROC_EXIT
        End If
        
        If lngNum - HScroll1 < intW Then
            lngStart = 1
        Else
            lngStart = HScroll1 + 1
        End If  
      
            
        sngHX = Abs(TU - TL) * 1.2 * (intH / 10)
        sngYX = (TU + TL) / 2
        Picture1.Scale (0, -sngHX / 2)-(intW, sngHX / 2)
        
        '画上下公差线(实线)
        Picture1.Line (0, sngYX - TU)-(intW, sngYX - TU), vbRed
        Picture1.Line (0, sngYX - TL)-(intW, sngYX - TL), vbRed
        Picture1.Line (0, 0)-(intW, 0), vbRed
        
        Picture1.PSet (0, sngYX - g_sngRealTimeValue(Index1, Index2, lngStart)), vbGreen
        For intI = lngStart To lngNum
            Picture1.Line -(intI - lngStart, sngYX - g_sngRealTimeValue(Index1, Index2, intI)), vbGreen
        Next
        Picture1.DrawWidth = 2
        For intI = lngStart To lngNum
            Picture1.PSet (intI - lngStart, sngYX - g_sngRealTimeValue(Index1, Index2, intI)), vbGreen
            If g_sngRealTimeValue(Index1, Index2, intI) > TU Or g_sngRealTimeValue(Index1, Index2, intI) < TL Then
                Picture1.Circle (intI - lngStart, sngYX - g_sngRealTimeValue(Index1, Index2, intI)), 0.35, vbRed
            End If
        Next
      

  4.   

    我的网站上有缩小图片的例子,你可以看看。VB资料->查询“显示多个图片”;╭═══════════════════╮
    ║ 免费的源码、工具网站,欢迎大家访问!║
    ║ http://www.j2soft.cn/        ║
    ╰═══════════════════╯