2013-09-22 3 views
0

Я ищу функцию, чтобы сделать снимок экрана из встроенного элемента управления Windows Media Player в форме Windows VB.NET. В настоящее время я использую следующую функцию; он работает нормально, но проблема в том, что x и y различаются на каждом экране, поэтому было бы лучше, если бы я мог использовать функцию в самом управлении AxWindowsMediaPlayer, например .Capture() или аналогичный метод.Capture Снимок изображения с видео в AxWindowsMediaPlayer в vb.net

Private Function TakeImage(ByVal X As Integer, ByVal Y As Integer, ByVal Width As Integer, ByVal Height As Integer) As Bitmap 
    Dim Img As New Bitmap(Width, Height) 
    Dim g As Graphics = Graphics.FromImage(Img) 
    g.CopyFromScreen(X, Y, 0, 0, Img.Size) 
    g.Dispose() 
    Return Img 
End Function 

Dim bmp As Bitmap = TakeImage(x, y - 20, AxWindowsMediaPlayer1.Width, AxWindowsMediaPlayer1.Height) 
bmp.Save("E:\pics\" & i.ToString & ".jpg", Drawing.Imaging.ImageFormat.Jpeg) 
+0

вы можете либо дать ответ на вопрос, либо сохранить свою мораль для себя. –

ответ

1

Вы можете попробовать Ctl.PointToScreen(), чтобы получить абсолютную точку экрана для CopyFromScreen.

Я получал AxWMP.PointToScreen в процедуре каждый раз, так как форма могла перемещаться. Передайте их CopyFromScreen и посмотрите, работает ли это. Я не уверен, ожидает ли он X, Y относительно приложения, формы или чего-то, кроме экрана, это означает экран.

+0

спасибо, но pointtoscreen возвращает 0,0 позиции формы –

+0

, которая не звучит правильно ... pic на форме, btn.click = 'lbl.Text = pic.PointToScreen (pic.Location) .ToString' дает экран когда я перемещаю форму. Я также загрузил AxWMP, и он по-прежнему возвратил экранные координаты, будь то на открытой форме или панели. Что-то странное происходит в форме? – Plutonix

+0

Да, теперь все в порядке. но мне интересно, какой параметр точки передан в PointToScreen. –

Смежные вопросы