Declare Function BitBlt Lib "GDI32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal DrawStyle As Long) As Long
Global S As Long '量程
Global L As Long '上一次的纵坐标值
Global T As Integer '上一次时间值(分)
Option Explicit
Private Sub Command1_Click()
Timer1.Enabled = True
Timer1.Interval = 1000
End Sub
这个是别人的.毛病是Private Sub Form_Load()With Form1
  .Top = 0
  .Left = 0
  .Width = Screen.Width
  .Height = Screen.Height
End With
Call picsettingPicture1.AutoRedraw = False '曲线不重画
Picture1.ScaleMode = 3 '以象素方式(Pixel)
L = -1 '设置初值
S = 400
T = -1End Sub
Sub picsetting()
  Dim i As Integer
    Picture1.BackColor = RGB(255, 255, 255)
    Picture1.Scale (-50, 1000)-(1000, -200)
    Picture1.DrawWidth = 2
    Picture1.Line (0, 900)-(900, 900)
    Picture1.Line (0, 900)-(0, 0)
    Picture1.Line -(900, 0)
    Picture1.Line (900, 0)-(900, 900)
    Picture1.CurrentX = 900
    Picture1.CurrentY = 0
    Picture1.FontSize = 14
    Picture1.ForeColor = RGB(255, 0, 0)
    Picture1.Print " t"
    Picture1.CurrentX = -30
    Picture1.CurrentY = 920
    Picture1.Print " P"
    Picture1.DrawWidth = 1
    For i = 1 To 17
       Picture1.Line (50 * i, 900)-(50 * i, 0), RGB(153, 153, 153)
    Next i
    For i = 1 To 17
        Picture1.Line (0, 50 * i)-(900, 50 * i), RGB(153, 153, 153)
    Next i
    
End Sub '
Private Sub Timer1_Timer()
Dim w As Long, h As Long, y1 As Long, Data As Long
Dim hBmp As Long, ShowMode As Long, ii As Long, t1 As Integer
static i As Integer, Y As Double
w = Picture1.Width
h = Picture1.Height
hBmp = Picture1.hDC
ShowMode = &HCC0020 'ROP模式(复制)
'Data = Get_RealDatabase()  '从实时数据库取当前监控值 Data = 200+i
y1 = (S - Data) / S * h '根据量程转变成具体坐标
ii = BitBlt(hBmp, 0, 0, w - 1, h, hBmp, 1, 0, ShowMode) '整个曲线右移一个像素点
Picture1.Line (10, Y)-(w, y1), RGB(0, 255, 0)
'Picture1.Line (w - 1, Y)-(w, y1), RGB(0, 255, 0)
Y = y1
t1 = Val(Mid$(Time$, 3, 2))
If T <> t1 Then  '在曲线下方显示时间(用分表示)
Picture1.CurrentX = w - 16
Picture1.CurrentY = h - 8
Picture1.Print Mid$(Time$, 1, 5)
T = t1
End If
End Sub
毛病是
Picture1.AutoRedraw = False '曲线不重画
导致在窗口切换时,曲线被隐藏.
不知道有没有什么好的方法