Video a sekundární obrazovka   otázka

VB.NET, DirectX, I/O operace, Grafika

Máte, prosím, někdo zkušenosti s přehráváním videa na sekundární obrazovce?. Pokud pustím video do Formu (využívám DirectX.Audiovideoplayback), tak vše funguje OK, jakmile tento Form umístím na sekundární obrazovku, video nezobrazuje (pouze černá plocha).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mám dvě teorie - buď stačí inicializovat video a DirectX až když je formulář na seknudárním monitoru, anebo se to musí nastavit v nějakém parametru při inicializaci zařízení. Ale každopádně nemyslím si, že půjde přetáhnout formulář z jednoho monitoru na druhý přetažením za běhu videa. Chtělo by to uvést kód, který používáte k inicializaci zařízení.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zdravím Vás - formulář nepřetahuji, dokonce s ním ani nijak nemanipuluji.

Pro iniciaci používám standardní postup:

Mám to celé v samostatné třídě, u které si nejprve, v rámci konstruktoru vytvořím "promítací plátno":

Private Sub vytvorform(ByVal control As Form)
        platno.BackColor = My.Settings.Obr_BgCol
        platno.ShowInTaskbar = False
        platno.FormBorderStyle = FormBorderStyle.None
        platno.Opacity = 0
        platno.Show()
        platno.Bounds = control.Bounds()

        obraz.Bounds = platno.Bounds
        obraz.Dock = DockStyle.Fill
        platno.Controls.Add(obraz)

    End Sub

Jako parametr předávám "hlavní Form" aplikace, který mám roztažený po celé ploše primárního, nebo sekundárního monitoru.

Pak v dalším ještě nastavím Opacity na 1, aby to celé bylo vidět (přes opacity jedu jenom proto, aby mi to v průběhu nastavování neproblikávalo), no a pak v další části už jenom pustím video:

Private Sub dalsiFilm(ByVal sender As Object, ByVal e As System.EventArgs) Handles prehravac.Ending

        ' načteme další soubor pro přehrávání
        Dim dalsiVideo As String = soubory.soubor

        ' pokud je prázdný, ukončíme promítání
        If dalsiVideo = "" Then
            konecVidea()
            Exit Sub
        End If


        ' pokud není iniciován přehravač 
        If prehravac Is Nothing Then
            ' provedeme jeho iniciaci a spustíme přehrávání
            prehravac = New Microsoft.DirectX.AudioVideoPlayback.Video(dalsiVideo)
            prehravac.Owner = obraz
        Else
            ' v opačném případě pouze načteme nový videosoubor
            ' a spustíme přehrávání
            prehravac.Open(dalsiVideo)
        End If


      
        prehravac.Play()
    End Sub

Samozřejmě, na začátku celé třídy mám deklaraci

 Private WithEvents prehravac As Microsoft.DirectX.AudioVideoPlayback.Video

Noa to je právě ten problém - pokud mám aplikaci nastavenou na primáru, je to vše OK, pokud ale na sekundáru (do první metody vstupuje jako parametr Form roztažený na celou plochu sekundární obrazovky), pak video evidentně jede (zvuk je slyšet a fungují eventy), ale promítací plocha je černá.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback