2012-10-22 16 views
5

I (a DirectShow gibi) otomatik olarak sağlar LibraryOynatırken medya dosyasının bindirilmesi için herhangi bir yöntem var mı?

Ben pencere masaüstünün çizim kolu kullanarak çizmek için bir yol kullanılır kullanmadan medya dosyasına altyazı eklemek istediğiniz, ama işe olamazdı. Bence güncelleme hızı yüzünden ... doğru mu? Neyse, bir medya dosyasını boyamak veya bindirme tutamaçlarını almak için herhangi bir işlev veya yöntem var mı?

[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); 
    } 
+0

Gerçek medya oynatmanın, yanıt vermeden önce nerede oluştuğunu açıklayabilir misiniz? Başvuru formlarınızdan birinde mi yoksa başka bir süreçte mi? Soruyorum çünkü açıklama ve kod biraz çelişkili görünüyor. DirectShow gibi bir kitaplık kullanmak istemediğiniz için başvuruda bulunursunuz, yine de formlarınızdan birinde oynatımın gerçekleşmesi anlamına gelen koordinatlar için bir form mu arıyorsunuz? Eğer öyleyse, masaüstü tanıtıcının kendisini yakalamaya gerek yoktur. – Frostie

+0

Kullandığım medya oynatma, DirectX'in AudioVideoPlayback öğesinde bulunur. Oynatmayı ima etmek benim formumun dışında ... sadece kontrol panelini sitenin sahibi olarak kullandı. Aslında, süreç ile oynatımların formu arasındaki ilişkiyle ilgili cevapları anlayamadım (becoz Im a acemi). –

+0

Belki "WPF" ve "Adorner" sözcüklerini aramak size yardımcı olabilir? – juFo

cevap

0

Herhangi bir iyi karede oynatılırken bir videonun üstüne çizmek istiyorsanız DirectShow ve filtreleri araştırmak isteyeceksiniz. .NET'ten DirectShow filtre grafikleriyle nasıl etkileşim kuracağınız konusunda bazı dağınık belgeler var, ancak oldukça az.

Bir ortam denetiminde oynatılan bir videonuz varsa, neredeyse her zaman bir bindirme içinde video oynatıyor olacak, böylece "üstüne" çizdiğiniz her şey kontrolün üstünde olacak, ancak yine de " gerçek videonun oynatıldığı yer.