Plaatje opslaan

Status
Niet open voor verdere reacties.

mrHenkie

Gebruiker
Lid geworden
9 mrt 2011
Berichten
818
Beste forumleden,

Ik heb een programma gemaakt met de volgende code:

Code:
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick, MyBase.Load
        SendKeys.Send("{PRTSCN}")
        PictureBox1.Image = My.Computer.Clipboard.GetImage()
        PictureBox1.Image.Save(???)
    End Sub

De interval van de timer staat op 1 seconde.

Wat moet ik bij de vraagtekens zetten?

En als ik hem draai, loopt het geheugen alsmaar op. Wat kan ik daar aan doen?

Met vriendelijke groet, mrHenkie
 
Op de vraagtekens zet je het pad waar je je screenshot wil opslaan.

(Je hebt de code zeker ergens van internet geplukt? :P)
 
Als je naar de IntelliSense kijkt zie je als het goed is staan:

Save(filename As String)
Saves this System.Drawing.Image to the specified file or stream.
Filename: A string that contains the name of the file to which to save this System.Drawing.Image.

Met andere woorden: daar moet je dus het pad voor een bestandsnaam opgeven.

Wat betreft je tweede vraag:

Ik denk dat je beter een Bitmap of een Image object kunt nemen omdat je deze steeds kunt legen waardoor het geheugengebruik niet steeds hoger word.
Daar komt nog bij dat SendKeys.Send("PRTSCRN") niet bepaald best practice is wat betreft het nemen van screenshots. Ik zal effe wat voorbeeld code in elkaar zetten voor je.
 
Laatst bewerkt:
Oke, dan krijg ik het volgende:

Code:
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick, MyBase.Load
        SendKeys.Send("{PRTSCN}")
        PictureBox1.Image = My.Computer.Clipboard.GetImage()
        Dim bm As Bitmap = My.Computer.Clipboard.GetImage()
        bm.Save(TextBoxPad.Text)
    End Sub

Het leek mij juist leuk om in het formulier te laten zien wat hij heeft gemaakt.

TextBoxPad.Text = H:\Pictures\Screendumps <-- Moet daar nog een bestandsnaam achter? Dit is namelijk alleen het pad.


@JoZ1: nee ik heb het niet van internet geplukt.

Edit: he hier heb ik wat code van internet om iets op te slaan:
Code:
bm.Save(file_name & "jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
hmm, eerst het pad naar de locatie, dan de naam, en dan het formaat?
 
Laatst bewerkt:
mrHenkie zei:
TextBoxPad.Text = H:\Pictures\Screendumps <-- Moet daar nog een bestandsnaam achter? Dit is namelijk alleen het pad.

Dat is geen pad, maar een directory. Dus: Ja, er moet nog een bestandsnaam achter. ;)


mrHenkie zei:
@JoZ1: nee ik heb het niet van internet geplukt.

Vreemd dat je dan code toevoegt waarvan je niet weet wat je erin moet zetten maar wel dat je het moet gebruiken. :confused:

Doet er verder niet toe.
 
@kevenvz: het is juist mijn idee dat hij op de achtergrond iedere seconde een print screen maakt en dan opslaat met als naam tijd+datum
 
Dan heb ik denk nog wel een ideetje. Dat je met een knop ene bestandlocatie aangeeft. Dat die daar een map maakt met de datum en dat die daar die screens in stored.
 
@The Mighty Atom: Helaas bij de code
Code:
Dim SC As New ScreenShot.ScreenCapture
zegt hij als error
Code:
Type 'ScreenShot.ScreenCapture' is not defined.
 
Niet dat ik weet. Welke class moet ik dan importeren en hoe doe ik dat?
 
Add Existing Item > Selecteer de class.
 
Ga ik morgen proberen (ik heb een hekel aan Ouderlijk Toezicht... Gelukkig heb ik wifi op mijn telefoon :))
 
Als ik Project --> Add Existing Item doe, krijg ik
attachment.php


Wat moet ik daar doen?
 

Bijlagen

  • helpmij.jpg
    helpmij.jpg
    77,5 KB · Weergaven: 93
Die class (*.vb) selecteren. Heb je die überhaupt gedownload/gezien op de site?
 
Oh, ik keek niet verder dan mijn neus lang is op die site! Dank je dank je dank je!!!

Problem = Solved :):):):D:D:D=)=)=) <-- smileyfeest

Uiteindelijke code bij de timer (met class geïmporteerd):
Code:
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick, MyBase.Load
        SendKeys.Send("{PRTSC}")
        PictureBox1.Image = My.Computer.Clipboard.GetImage()
        Dim SC As New ScreenShot.ScreenCapture
        SC.CaptureScreenToFile("H:\Pictures\Screendumps\test.jpg", Imaging.ImageFormat.Jpeg)
        Me.Refresh()
    End Sub
Class: http://www.vbforums.com/attachment.php?attachmentid=44976&d=1139087585
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan