salve a tutti,
ho creato un applicazione che scatta degli snapshot su un file in riproduzione all'interno del programma usando la libreria DirectShow. Ecco il codice:
codice:
Dim Buff As Long
Dim zero As IntPtr = IntPtr.Zero
Dim Mstep As Integer
Dim bit1 As Bitmap
basicVideo.GetCurrentImage(Buff, zero)
zero = Marshal.AllocCoTaskMem(Buff)
basicVideo.GetCurrentImage(Buff, zero)
Dim gg As New BitmapInfoHeader
Marshal.PtrToStructure(zero, gg)
Mstep = gg.ImageSize / gg.Height
bit1 = New Bitmap(gg.Width, gg.Height, Mstep, Imaging.PixelFormat.Format32bppRgb, zero)
bit1.RotateFlip(RotateFlipType.RotateNoneFlipY)
Dim bm_dest As New Bitmap(gg.Width, gg.Height)
Dim gr_dest As Graphics = Graphics.FromImage(bm_dest)
gr_dest.DrawImage(bit1, 0, 0, _
bm_dest.Width + 1, _
bm_dest.Height + 1)
bm_dest.Save("c:\1.bmp", System.Drawing.Imaging.ImageFormat.Bmp)
PictureBox1.Image = Nothing
PictureBox1.Image = bit1
PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
Per darvi un'idea ecco l'immagine corrotta:
Come potete notare c'è una strisciolina a sinistra che dovrebbe essere a destra...
sapete aiutarmi?
Grazie Ciaz