Option Explicit
Private Type TiempoXEstado
Estado As Integer
Horas As Double
End Type
Private Sub Form_Load()
Picture1.AutoRedraw = True
Picture1.BackColor = vbWhite
Picture1.ForeColor = vbBlack
Picture1.FontName = "Small Fonts"
Picture1.FontSize = 6
'Datos de ejemplo
Dim Datos(1 To 5) As TiempoXEstado
Datos(1).Estado = 1
Datos(1).Horas = 23
Datos(2).Estado = 2
Datos(2).Horas = 7
Datos(3).Estado = 3
Datos(3).Horas = 1
Datos(4).Estado = 4
Datos(4).Horas = 84
Datos(5).Estado = 8
Datos(5).Horas = 10.3
On Error Resume Next
Dim i1 As Integer
i1 = UBound(Datos)
Picture1.Cls
If i1 = 0 Then Exit Sub
Picture1.Scale (-5, -5)-(95, i1 * 10 + 7)
Picture1.DrawStyle = 0
Picture1.Print "Estados"
Picture1.Line (0, 0)-(0, i1 * 10)
Picture1.Line (0, i1 * 10)-(90, i1 * 10)
Picture1.CurrentX = Picture1.ScaleWidth / 2 - Picture1.TextWidth("Horas") / 2
Picture1.CurrentY = Picture1.ScaleHeight - Picture1.TextHeight("Horas") - 5
Picture1.Print "Horas"
Picture1.DrawStyle = 2
Picture1.DrawWidth = 1
Dim i2 As Integer
For i2 = 10 To 88 Step 10
Picture1.ForeColor = vbBlue
Picture1.Line (i2, 0)-(i2, i1 * 10)
Picture1.Print i2
Next i2
Picture1.DrawWidth = 4
For i2 = 1 To i1
Picture1.ForeColor = vbRed
Picture1.Line (Datos(i2).Horas, i2 * 10 - 5)-(0, i2 * 10 - 5)
Picture1.CurrentX = Picture1.CurrentX - 2 * Picture1.TextWidth(Datos(i2).Estado)
Picture1.Print Datos(i2).Estado
Next i2
End Sub