5
我想插入字幕到媒體文件中,而不使用自動提供它的庫(如DirectShow)在播放媒體文件時是否有任何方法獲取媒體文件的覆蓋?
我使用的方式來使用窗口桌面的繪圖句柄,但它不能工作。我認爲這是因爲更新的速度......對吧? 無論如何,是否有任何功能或方法繪製媒體文件或獲得他們的覆蓋句柄?
[DllImport("user32.dll")]
static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll")]
static extern IntPtr GetDCEx(IntPtr hwnd, IntPtr hrgn, uint flags);
[DllImport("user32.dll")]
static extern IntPtr ReleaseDC(IntPtr hwnd, IntPtr hdc);
public void SubtitleDraw()
{
IntPtr hWnd = GetDesktopWindow();
IntPtr hDc = GetDCEx(hWnd, IntPtr.Zero, 1027);
Font font1 = new Font("Times New Roman", 24, FontStyle.Regular,GraphicsUnit.Pixel);
Point pt = new Point(40, 375);
PointF pointF1 = new PointF();
pointF1 = PlayerForm.ActiveForm.PointToScreen(pt);
Graphics g = Graphics.FromHdc(hDc);
g.DrawString(SubtitleText, font1, Brushes.Black, pointF1);
ReleaseDC(hWnd, hDc);
}
您能澄清在我回答之前發生的實際媒體播放的位置嗎?它是否在你的一個應用程序表單中,或者在另一個進程中?我問,因爲描述和代碼似乎有點矛盾。你提到不想使用DirectShow這樣的庫,但是你需要一個表單來表示座標,這可能意味着在你的一個表單中出現了回放。如果是這樣,則不需要捕獲桌面句柄本身。 – Frostie
我使用的媒體播放包含在DirectX的AudioVideoPlayback中。暗示播放不在我的表格中......它只是使用控制面板作爲其網站的所有者。其實,我不明白你的回答是關於進程和回放的形式之間的關係(因爲我是新手)。 –
也許尋找單詞「WPF」和「Adorner」可能對你有幫助嗎? – juFo