AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Image über Mediaplayer-Fenster
Thema durchsuchen
Ansicht
Themen-Optionen

Image über Mediaplayer-Fenster

Ein Thema von DelphiN00b · begonnen am 8. Feb 2006 · letzter Beitrag vom 8. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
DelphiN00b

Registriert seit: 4. Jun 2005
Ort: Ottobrunn
11 Beiträge
 
#1

Image über Mediaplayer-Fenster

  Alt 8. Feb 2006, 18:57
Hm, trotz intensiver Suche (vielleicht ja auch einfach mit den falschen Begriffen) habe ich nichts gefunden was mir auch nur ansatzweise weitergeholfen hätte...

Ich möchte einen Film abspielen (kein Problem) - vor diesen Film möchte ich jedoch eine Maske legen (am Besten in Form eines Bitmaps bzw. transparenten Gifs). Das Ganze könnte dann Beispielsweise wie ein Video durch ein Fernglas betrachtet aussehen.
Leider scheiterten meine Versuche bisher daran, daß es anscheinend nicht möglich ist ein Bitmap VOR ein Mediaplayer Panel zu legen.
Die nächsten Versuche das Video anstelle eines Panels gleich in einem Shape abspielen zu lassen scheiterten ebenfalls kläglich. Buttons und einige andere Objekte kann man vor ein Video legen, leider hab ich da bisher keins gefunden, was ich in der Form verändern könnte und zudem noch wenigstens teilweise transparent gestalten könnte.

Für jegliche Anregungen bin ich sehr dankbar.

Gruß
Schönen Tag noch...
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Image über Mediaplayer-Fenster

  Alt 8. Feb 2006, 19:05
Also ein Panel ist schon eine gute Wahl um darauf ein Video wiederzugeben. Versuch doch einmal eine andere Form als CreateParented (oder mit SetParent) mit Transparenz darüberzulegen.
Ist jetzt nur eine Idee, kann aber nicht sagen ob sich das mit der Overlaydarstellung des Videos verträgt.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
DelphiN00b

Registriert seit: 4. Jun 2005
Ort: Ottobrunn
11 Beiträge
 
#3

Re: Image über Mediaplayer-Fenster

  Alt 8. Feb 2006, 20:09
Erstmal herzlichen Dank für die schnelle Antwort, hab es gleich mal ausprobiert, leider ist selbst die mit CreateParented erstellte Form nicht "über" dem eigentlichen Video-Panel, aufgefallen ist mir dabei jedoch, daß die Mediaplayer-Komponente, auch wenn außerhalb plaziert immer über dem eigentlichen Video liegt, jetzt müsste ich nur irgendwie die Komponente als Parent und das entsprechende Panel (Videofenster) als alignClient für meine Maske definieren können - wie das aber funktionieren soll weiß ich nicht
Schönen Tag noch...
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Image über Mediaplayer-Fenster

  Alt 8. Feb 2006, 20:17
So ein Video wird ja im Normalfall mit Overlay wiedergegeben; dazu wird eigentlich das Anzeige-Panel fast schwarz (eben nicht ganz schwarz) gefärbt und das Video auf diese Position gesetzt, d. h. in diesem Bereich dort angezeigt, wo das Panel diese fast schwarze Farbe hat. Jetzt könntest du dir das zu Nutzen machen und deine Maske, z. B. eine Bitmap in ein Panel darüber hineingeben und dieses Fast-Schwarz als deine "transparente" Farbe verwenden.
Es ist keine sehr elegante Methode, und sobald kein Overlay verwendet wird funktioniert sie nicht mehr, aber soweit sollte sie schon gehen...

LG, ich
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
DelphiN00b

Registriert seit: 4. Jun 2005
Ort: Ottobrunn
11 Beiträge
 
#5

Re: Image über Mediaplayer-Fenster

  Alt 8. Feb 2006, 20:26
Jetzt steh ich glaub ich auf dem Schlauch...

Versteh nicht ganz was das bringen soll - hab aber wahrscheinlich das Design dabei nicht begriffen...
Ich hab ein Panel in dem das Video läuft, mach ein neues Panel darüber, setze in das neue Panel eine Bitmap und mach die transparent. Wenn ich jetzt nicht ganz dumm bin sehe ich durch die Bitmap mein neues Panel, nicht jedoch mein Video, oder sehe ich da irgendwas falsch?! Denn ein Panel hat doch kein Alphablending...
Schönen Tag noch...
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Image über Mediaplayer-Fenster

  Alt 8. Feb 2006, 20:36
Das stimmt schon; ich meine auch nicht, dass du die Bitmap direkt transparent machst, sondern dass du in der Bitmap unter anderem dieses Fast-Schwarz verwendest, überall dort, wo du möchtest, dass das Video angezeigt wird.
Dazu probiert vlt. folgendes: Spiel ein Video so ab und pausiere es dann, mach einen Screenshot mit der Druck-Taste und öffne den z. B. in Paint; dein Programm mit dem pausierten Video ist noch immer offen. Jetzt wirst du im Paint wahrscheinlich dein Video sehen, vlt. etwas nach links und oben versetzt. Dann schließ dein Programm und im Paint siehst du dort, wo das Video ursprünglich war nur mehr eine fast schwarze Fläche.
Das bedeutet also, wenn man das Ganze etwas veranschaulicht: Dein Programm sagt der Grafikkarte, sie soll in diesem bestimmten Bereich das Video anzeigen, aber nur dort, wo die Pixel dieses Fast-Schwarz haben.

Ich hoffe, ich habe mich jetzt etwas besser verständlich ausgedrückt.

LG, ich
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
DelphiN00b

Registriert seit: 4. Jun 2005
Ort: Ottobrunn
11 Beiträge
 
#7

Re: Image über Mediaplayer-Fenster

  Alt 8. Feb 2006, 20:49
Ich habs zwar entweder immernoch nicht verstanden, aber ich hab's mal so gemacht wie beschrieben...

Videopanel <- Panel auf dem Video abgespielt wird

-> Panel1 = Panel, das auf dem Videopanel liegt
-> Image1 = TImage, das auf Panel1 liegt.

Bereich von Image1 Transparent gemacht, ok und was sehe ich? Panel1 und nicht das Videopanel, deshalb meinte ich vorhin das Panels kein Alphablending haben...


Oder hab ich doch was falsch verstanden?
Schönen Tag noch...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Image über Mediaplayer-Fenster

  Alt 8. Feb 2006, 20:55
Also da das ganze mit Overlay geht wird das mit über dem panel liegen nicht klappen. Was aber auf jeden fall funktioniert (gerade probiert) ist das du das Panel wo das Video drauf angezeigt wird mit "SetWindowRgn" entsprechend eine form zuweist.

So kannst du zum Beispiel ein kleines Viereck an der Oberseite rausschneiden. (und somit sieht man was unter dem Panel dort liegt:
Delphi-Quellcode:
var LReg: Cardinal;
    LPoints: Array of TPoint;
begin
  SetLength(LPoints, 9);
  LPoints[0] := Point(0, 0);
  LPoints[1] := Point(40, 0);
  LPoints[2] := Point(40, 40);
  LPoints[3] := Point(80, 40);
  LPoints[4] := Point(80, 0);
  LPoints[5] := Point(Panel1.Width, 0);
  LPoints[6] := Point(Panel1.Width, Panel1.Height);
  LPoints[7] := Point(0, Panel1.Height);
  LPoints[8] := Point(0, 0);
  LReg := CreatePolygonRgn(LPoints[0], Length(LPoints), WINDING);
  SetWindowRgn(Panel1.Handle, LReg, True);
  DeleteObject(LReg);
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
DelphiN00b

Registriert seit: 4. Jun 2005
Ort: Ottobrunn
11 Beiträge
 
#9

Re: Image über Mediaplayer-Fenster

  Alt 8. Feb 2006, 21:07
Wow, danke - eine echte Großmeister-Antwort

Funktioniert einwandfrei, jetzt mach ich mir noch ein Paar Gedanken wie ich das Ganze noch rund bekomme und schon bin ich zufrieden

Herzlichen dank!
Schönen Tag noch...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Image über Mediaplayer-Fenster

  Alt 8. Feb 2006, 21:09
rund gehts so:
Delphi-Quellcode:
var LReg1, LReg2: Cardinal;
begin
  LReg1 := CreateEllipticRgn(0, 0, Panel1.Width div 2, Panel1.Height);
  LReg2 := CreateEllipticRgn(Panel1.Width div 2, 0, Panel1.Width, Panel1.Height);
  CombineRgn(LReg1, LReg1, LReg2, RGN_OR);
  SetWindowRgn(Panel1.Handle, LReg1, True);
  DeleteObject(LReg1);
  DeleteObject(LReg2);
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz