Savefile dialoog na het stoppen van de timer

Status
Niet open voor verdere reacties.

tim687

Terugkerende gebruiker
Lid geworden
25 apr 2010
Berichten
1.774
Hallo,
Ik wil een screenshot recorder maken, dus om de bijv. 10 sec. maak hij een schotje, maar ik wil niet de heletijd een savfiledialoog hebben, dus kan ik vooraf de map vaststellen?
Bedankt,
Tim
 
Tuurlijk.

Wat is je huidige code?
 
Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim bounds As Rectangle
        Dim screenshot As System.Drawing.Bitmap
        Dim graph As Graphics
        bounds = Screen.PrimaryScreen.Bounds
        screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
        graph = Graphics.FromImage(screenshot)
        graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
        PictureBox1.Image = screenshot
        Me.Opacity = 100
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim savefiledialog1 As New SaveFileDialog
        Try
            savefiledialog1.Title = "Save File"
            savefiledialog1.FileName = "*.bmp"
            savefiledialog1.Filter = "Bitmap |*.bmp"
            If savefiledialog1.ShowDialog() = DialogResult.OK Then
                PictureBox1.Image.Save(savefiledialog1.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
            End If
        Catch ex As Exception
            'Do Nothing
        End Try
    End Sub
maar er komen nog 2 timers bij en een combobox voor de snelheid van het nemen

krijg hiero een Amber alert melding, hoop dat ze snel word gevonden!
 
Laatst bewerkt:
Ok, gebruik het dan zo:


Maak eerst een variabele aan voor het pad.
Maak dan een Timer aan (bijv. Timer1) met als Interval 10 sec = 10000 millisec.

[cpp]
Dim Path As String = "C:\blablabla"
Private Sub Timer1_Tick() Handles Timer1.Tick
Dim bounds As Rectangle
Dim screenshot As System.Drawing.Bitmap
Dim graph As Graphics
bounds = Screen.PrimaryScreen.Bounds
screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, Sys tem.Drawing.Imaging.PixelFormat.Format32bppArgb)
graph = Graphics.FromImage(screenshot)
graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
PictureBox1.Image = screenshot
Me.Opacity = 100
PictureBox1.Image.Save(Path, System.Drawing.Imaging.ImageFormat.Bmp)
End Sub[/cpp]

(Je kunt van te voren de gebruiker de waarde van Path laten bepalen)
 
oke kan ik dan Dim Path as string = "Textbox1.text"
Doen?
of savefiledialog
 
Nou, eerder zo: Dim Path as string = Textbox1.text
(zonder aanhalingstekens)

En dan een TextBox op je form zetten, met een browse knop ernaast o.i.d.
Maar je moet een folder selecteren. Daarom is een FolderBrowserDialog geschikter.

Bijv.

[CPP]Private Sub Browse_Click() Handles Browse.Click
Dim fbd As New FolderBrowserDialog
If fbd.ShowDialog() = DialogResult.Ok Then
TextBox1.Text = fbd.SelectedPath
End If
End Sub[/CPP]
 
bedankt, hoe kan ik zorgen dat hij van uit het combobox dus bijv item1 is 1FPS hoe kan ik zorgen dat hij dan start als ik op een knop klik. als je de snelheid hebt geselecteerd?
 
ik zit en maak het btw in VB 2010, en ik doe wat je zegt en krijg errors
 
tim687 zei:
bedankt, hoe kan ik zorgen dat hij van uit het combobox dus bijv item1 is 1FPS hoe kan ik zorgen dat hij dan start als ik op een knop klik. als je de snelheid hebt geselecteerd?
Kun je de bovenste regel iets verduidelijken?

Welke fouten krijg je en waar krijg je ze?
 
ik heb het al opgelost, het dit
Code:
PictureBox1.Image.Save(Path, System.Drawing.Imaging.ImageFormat.Bmp)
vervangen door dit
Code:
PictureBox1.Image.Save(savefiledialog1.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
en dan moet ik hem zo programeren dat hij de naam auto wijzigt als er al een van bestaat, ik ga hem nu testen!
 
Het bovenste had ook moeten werken, mits je Path goed declareert. ;)
 
had ik gedaan, ik krijg iets met kan GI+ ofzo niet doen, ik denk omdat het SaveFiledialog1 de locatie niet in het geheugen opslaat, kan je uitleggen hoe ik die locatie en filename in een Textbox1.text krijg?
 
G1+ o.i.d. heeft volgens mij meer met de afbeelding te maken.


Kun je even je code posten, vertellen hoe je programma in elkaar steekt en hoe je het wil hebben. Ik weet namelijk niet wanneer de gebruiker de locatie ingeeft en waar het wordt opgeslagen.
 
Ik wil het hebben zodat de gebruiker eerst de locatie moet vast stellen, dan als je op opnemen klikt moet je een keuze maken hoeveel FPS (frames per second) bijv. 24 FPS oke dan moet de code van 24 FPS zo ingestelt zijn dat hij 24 keer per seconde een screen.. maakt en hij hem meteen opslaat in de aangegeven map.

Hier is de code die ik nu heb (alles)
Code:
Public Class Form1
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Close()
    End Sub
    Private Sub Timer1_Tick() Handles Timer1.Tick
        Dim bounds As Rectangle
        Dim screenshot As System.Drawing.Bitmap
        Dim graph As Graphics
        bounds = Screen.PrimaryScreen.Bounds
        screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
        graph = Graphics.FromImage(screenshot)
        graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
        PictureBox1.Image = screenshot
        Me.Opacity = 100
        PictureBox1.Image.Save(SaveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
    End Sub
    Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
        Timer1.Start()
    End Sub
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim savefiledialog1 As New SaveFileDialog
        Try
            savefiledialog1.Title = "Save File"
            savefiledialog1.FileName = "*.bmp"
            savefiledialog1.Filter = "Bitmap |*.bmp"
            If savefiledialog1.ShowDialog() = DialogResult.OK Then

            End If
        Catch ex As Exception
            'Do Nothing
        End Try
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim bounds As Rectangle
        Dim screenshot As System.Drawing.Bitmap
        Dim graph As Graphics
        bounds = Screen.PrimaryScreen.Bounds
        screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
        graph = Graphics.FromImage(screenshot)
        graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
        PictureBox1.Image = screenshot
        Me.Opacity = 100
        PictureBox1.Image.Save(SaveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
    End Sub
End Class
Ik heb alleen nu wel deze fout:

Error 1 Unable to open module file 'C:\Users\Tim\AppData\Local\Temp\.NETFramework,Version=v4.0,Profile=Client.AssemblyAttributes.vb': Het systeem kan het opgegeven bestand niet vinden. C:\Users\Tim\AppData\Local\Temp\.NETFramework,Version=v4.0,Profile=Client.AssemblyAttributes.vb 1 1 Screen Capture
 
En zo?

[cpp]Public Class Form1
Public Dir As String = ""
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Close()
End Sub
Private Sub Timer1_Tick() Handles Timer1.Tick
Dim bounds As Rectangle
Dim screenshot As System.Drawing.Bitmap
Dim graph As Graphics
bounds = Screen.PrimaryScreen.Bounds
screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
graph = Graphics.FromImage(screenshot)
graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
PictureBox1.Image = screenshot
Me.Opacity = 100
PictureBox1.Image.Save(dir & "\" & Date.Today.ToShortDateString & "_" & _
TimeOfDay.Hour.ToString & "_" & _
TimeOfDay.Minute.ToString & "_" & _
TimeOfDay.Second.ToString & ".bmp", System.Drawing.Imaging.ImageFormat.Bmp)
End Sub
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
If Dir <> "" Then Timer1.Start() Else MsgBox("Selecteer eerst een map!",48+4096,"Titel")
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim FBD As New FolderBrowserDialog
Try
If FBD.ShowDialog() = DialogResult.OK Then
Dir = FBD.SelectedPath
End If
Catch ex As Exception
'Do Nothing
End Try
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim bounds As Rectangle
Dim screenshot As System.Drawing.Bitmap
Dim graph As Graphics
bounds = Screen.PrimaryScreen.Bounds
screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
graph = Graphics.FromImage(screenshot)
graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
PictureBox1.Image = screenshot
Me.Opacity = 100
PictureBox1.Image.Save(SaveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
End Sub
End Class[/cpp]
 
Laatst bewerkt:
Ik krijg deze fout:

Ik heb FBD.SelectedPath naar textbox1.text gedaan, dat is wat makkelijker voor mij om de code te begrijpen :-P
Bedankt,
Tim
 
Oeps :o

Dubbele punten worden niet ondersteund:

[cpp]PictureBox1.Image.Save(Dir & "\" & Date.Today.ToShortDateString & "_" & _
TimeOfDay.Hour.ToString & "_" & _
TimeOfDay.Minute.ToString & "_" & _
TimeOfDay.Second.ToString & ".bmp", System.Drawing.Imaging.ImageFormat.Bmp)[/cpp]
 
Heb hem aangepast, krijg geen errors meer, maar hij maakt ook geen fotos. Hoe kan dat, moet ik het proberen met savefiledialog?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan