No, neviem, že kde by mohla byť chyba, kód mi pripadá v poriadku. Možno v tom, že ak zavoláte screenshot.Save tisíckrát, ale graph.CopyFromScreen len raz, tak Vám uloží tisíckrát jedno a to isté. Len dúfam, že potom objekty graph a screenshot po sebe ničíte pomocou metódy Dispose() . Asi najlepšie je použiť na ne kód Using...End Using, tak isto, ako na všetky objekty, ktoré majú metódu Dispose(), resp. ktoré dedia z rozhrania IDisposable . Ak pridáte toto do akejkoľvek triedy, po zavolaní CopyScreen by Vám malo urobiť screenshot, počítadlom je tu premenná count, tá musí byť mimo metódy CopyScreen.
Dim count As Integer
Public Sub CopyScreen()
Dim bounds = Screen.PrimaryScreen.Bounds
Dim width = bounds.Width
Dim height = bounds.Height
Using screenshot = New System.Drawing.Bitmap(width, height, System.Drawing.Imaging.PixelFormat32bppArgb)
Using graph = System.Drawing.Graphics.FromImage(screenshot)
graph.CopyFromScreen(0, 0, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
End Using
screenshot.Save("C:/test_" & count & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
End Using
count += 1
End Sub
|