2013-09-22 96 views
0

我正在尋找一個函數,從VB.NET Windows窗體中的嵌入式Windows Media Player控件截取屏幕截圖。我目前正在使用以下功能;它工作正常,但問題是,xy是不同的每個屏幕上,所以它會更好,如果我可以使用AxWindowsMediaPlayer控制本身的功能,如.Capture()或類似的方法。從vb.net的AxWindowsMediaPlayer中的視頻捕獲快照圖像

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

,聽起來不正確...在窗體上的圖片,btn.click ='lbl.Text = pic.PointToScreen(pic.Location).ToString'給出一個屏幕我移動表單時的相對位置。我還加載了AxWMP,無論是在裸露的形式還是在面板上,它仍然返回了屏幕相對座標。在表單中有什麼奇怪的事情發生? – Plutonix

+0

是的,它現在工作得很好。但我想知道傳遞給PointToScreen的點參數是什麼 –