ďťż

Ładny brzuch

Piszę prosty odtwarzacz video na DSPacku (D7). I nie wiem jak zrobić, żeby dstrackbar współpracował z filtergraphem. Wybrałem we właściwości FilterGraph TrackBaru filtergraph1, ale nadal nie działa. I nie są wykonywane polecenia z OnTimer. Jak temu zaradzić?

edit: (chodzi o to, żeby wskaźnik na TrackBarze się automatycznie przesuwał do przodu wraz z trwaniem filmu i żeby po zmienieniu pozycji wskaźnika myszką, film się odtwarzał w tym innym miejscu)

Tu gościu ma identyczny problem, niestety nie został rozwiązany. Nikt nie wiem jak to zrobić?
Użytkownik Bula i spula edytował ten post 14 styczeń 2007, 19:38


A moze by tak zajzec do demek? One nie gryza, a potrafia byc bardzo przydatne... :>

Już zajrzałem zanim to napisałeś, tak więc problem rozwiązany. Nie wiem co było źle, poprostu wszystko zrobiłem od nowa i teraz działa :).

edit1: Jeszcze jedna sprawa: chciałem zrobić fullscreen do tego odtwarzacza, więc do guzika przypisałem taką procedurkę:if form1.WindowState=wsMaximized then begin form1.Left:=polozenie_formy.X; form1.Top:=polozenie_formy.Y; form1.Width:=wymiary_formy.X; form1.Height:=wymiary_formy.Y; timer1.Enabled:=false; form1.BorderStyle:=bsSizeable; form1.WindowState:=wsNormal; statusbar1.Visible:=true; dstrackbar1.Visible:=true; dstrackbar2.Visible:=true; form1.Width:=640; form1.Height:=480; end else begin polozenie_formy.X:=form1.Left; polozenie_formy.Y:=form1.Top; wymiary_formy.X:=form1.Width; wymiary_formy.Y:=form1.Height; form1.BorderStyle:=bsNone; form1.WindowState:=wsMaximized; statusbar1.Visible:=false; timer1.Enabled:=true; end;Niestety - po zmaksymalizowaniu ekranu film odtwarza się nadal na tej samej powierzchni, tylko reszta jest czarna. Jak się spowrotem zmniejszy, to w ogóle jest obraz źle wcelowany w okienko i nie reaguje na zmianę rozmiaru okienka.

Dodam, że timer1 jest odpowiedzialny za schowanie wszystkiego oprócz DSVideoWindowEx2 po 2.5 sek. od włączenia fullscreen lub kliknięcia myszą.

ps. FullScreen w demonstracyjnej aplikacji niestety niedziała.
Użytkownik Bula i spula edytował ten post 14 styczeń 2007, 21:40

Już zajrzałem zanim to napisałeś, tak więc problem rozwiązany. Nie wiem co było źle, poprostu wszystko zrobiłem od nowa i teraz działa :) . To nie mozna tak bylo od razu, bez pisania na forum?


ps. FullScreen w demonstracyjnej aplikacji niestety niedziała. I tu sie mylisz. Demo PlayWin dziala bardzo dobrze i jest to nawet dosc praktyczny odtwarzacz.

Ustaw okno dspacka zeby zajmowalo cala forme /czy ile tam mu przeznaczysz, wazne zeby wlasciwosc chyba align byla na costamOwner, zeby sie sam rozciagal razem z forma/.
Przy przycisku fullscreen wylaczasz obwodke i Ty ustawiasz okno na maximized, a ja zwykle recznie ustalam polozenie i wymiary okna. Co kto lubi. Teoretycznie to jest wszystko. Aha, poszukaj czy dsvideowindowex nie ma gdzies opcji od skalowania, bo nie wiem czy domyslnie obraz skaluje czy nie.

A jak nie idzie, to przeca directshow nie gdyzie - przeczytaj dokladnie zrodla dspacka /nie trzeba nawet wszystkich plikow/, poszukaj troche innych przykladow i mozna zrobic wlasny silnik. :)



Ja klikam na guzik od pełnego okranu i nic się nie dzieje (tylko się wciska). A i tak ten program PlayWin jest na bazie VideoWindow, a na DSVideoWindowEx2. I tym drugim nie ma takiej opcji jak FullScreen. Ten obiekt mam ustawiony na AllClient i przy rozciąganiu formy obraz się automatycznie powiększa (ale nie traci proporcji). Zaraz spróbuję ręcznie zmienić rozmiar formy na 1024x768.

edit/Powodem okazało się polecenie Form1.BorderStyle:=bsNone. Wtedy wszystko się psuje. Jak temu zaradzić?
edit2/Jak się od początku wyłączy obramowanie, to działa, więc chyba poprostu zrezygnuję z tego obramowania. Temat nieaktualny, chyba że by ktoś wiedział, jak zrobić żeby po ukryciu obramowania nie psuł się obraz.
Użytkownik Bula i spula edytował ten post 15 styczeń 2007, 16:37

edit2/Jak się od początku wyłączy obramowanie, to działa, więc chyba poprostu zrezygnuję z tego obramowania. Temat nieaktualny, chyba że by ktoś wiedział, jak zrobić żeby po ukryciu obramowania nie psuł się obraz. A ja wiem. I tak jak pisalem w innym Twoim watku - za malo sie bawisz delphim i po prostu nie masz inwencji tworczej, za to masz lenia.
Powodem jest to, ze przy zmianie BorderStyle zmienia sie uchwyt okna. Ty tego nie zauwazasz, ale jakbys sobie drukowal w labelach uchwyty po uruchomieniu, po zmianie na bsNone i po powrocie do obwodki to bys wtedy to zobaczyl.
Ja nad tym sleczalem kiedys caly Bozy wieczor, Tobie napisalem gotowca, wiec to docen.

Dziękuję :). Ale co z tego wynika? Trzeba jakoś temu DSVideo przestawiać uchwyt, czy co?


Dziękuję :) . Ale co z tego wynika? Trzeba jakoś temu DSVideo przestawiać uchwyt, czy co? Mozliwe ze tak. Po wywolaniu bsNone sprobuj podac do dsvideowindow /jak zwal tak zwal/ nowy uchwyt okna.
Tylko nie pytaj jak. :P

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •