nevím přesně kde jaká chyba vzniká, ale vsadil bych si na to že problém vzniká při "sčítání stringů". VB obecně to zvládne, ale občas to dělá potíže. je lepší místo
Form2.PictureBox1.Load(DirectoryA + Frame0 + img0)
BMP.Save(DirectoryA + Frame1 + img1)
dát tohle:
Form2.PictureBox1.Load(DirectoryA & Frame0 & img0)
BMP.Save(DirectoryA & Frame1 & img1)
To by mohlo problém vyřešit. Dál je lepší, třeba pro FileNUM použít globální proměnnou a od ní to sčítat a při timeru tu hodnotu navyšit a do textboxu zapisovat jen vysledek. Je to lepší i bezpečnější než převádět to na číslo. Při vysoké hodnotě by v tomhle případě došlo k tomu, že se hodnota zobrazí exponenciálně a při dalším přičtení se to nepodaří převést na číslo a aplikace spadne. takže celý kód by měl vypadat asi takto:
Public Class Form1
Public lng_FileNum As Long = 0
Public lng_Interval As Integer = 100
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RECScreen.Tick
If CheckBox1.Checked = True Then
Dim DirectoryA As String = FileDIR.Text
Dim Frame0 As String = lng_FileNum
Dim img0 As String = FileType.Text
lng_FileNum += 1
FileNUM.Text = lng_FileNum
Form2.PictureBox1.Load(DirectoryA & Frame0 & img0)
Else
Dim ScreenSize As Size = New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Width)
Dim BMP As New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(BMP)
g.CopyFromScreen(New Point(0, 0), New Point(0, 0), ScreenSize)
Dim DirectoryA As String = FileDIR.Text
Dim Frame1 As String = lng_FileNum
Dim img1 As String = FileType.Text
lng_FileNum += 1
FileNUM.Text = lng_FileNum
BMP.Save(DirectoryA & Frame1 & img1)
End If
End Sub
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
Form2.Show()
End Sub
Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
Form2.Hide()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles INT10.Click
Label2.Text = "100 FPS"
lng_Interval = 10
RECScreen.Interval = lng_Interval
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles INT50.Click
Label2.Text = "20 FPS"
lng_Interval = 50
RECScreen.Interval = lng_Interval
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles INT100.Click
Label2.Text = "10 FPS"
lng_Interval = 100
RECScreen.Interval = lng_Interval
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles INT250.Click
End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles INT500.Click
End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles INT1000.Click
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles REC.Click
RECScreen.Enabled = True
lng_FileNum = 0
FileNUM.Text = lng_FileNum
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles STP.Click
RECScreen.Enabled = False
End Sub
End Class
Takto by to mělo být bezpečnější, neznatelně rychlejší a pravděpodobně to odstraní tu vznikající chybu s tím plusem, kdy se pravděpodobně příponu souboru nedaří převést na číslo.
|