2016-05-01 3 views
0

Ich möchte nur einen Teilbereich eines spielenden QMediaPlayer Videos zeigen, zum Beispiel wenn es ein 1280x720 Video ist, möchte ich vielleicht nur einen Bereich in der Mitte von QPoint(300,300) mit einem anzeigen Größe von QSize(200,200).Nur Teilbereich von QT QMediaPlayer Video (crop) anzeigen

Ich habe bereits versucht QGraphicsVideoItem() mit SETOFFSET mit und QTransform.translate Anwendung scheint jedoch setOffset nichts zu tun und mit Transformationen rotate funktioniert, aber translate scheint nichts zu tun.

Wie könnte ich das tun?

+0

können Sie den Kerncode anhängen? – suiwenfeng

Antwort

0

Es stellt sich heraus, dass Sie grundsätzlich alles zuschneiden können, indem Sie es einfach in ein übergeordnetes QWidget setzen und diese Widgets-Geometrie festlegen.

Wenn Sie x und y negativ setzen, können Sie die obere linke Ecke außerhalb des gerenderten Bereichs verschieben. Durch Einstellen von Breite und Höhe können Sie festlegen, wie viel angezeigt wird. So können Sie einen bestimmten Abschnitt des QWidgets-Inhalts anzeigen.

qw = QWidget() 
qw.setParent(self) 
qw.setGeometry(-150,-150,500,500) 

videoWidget = QVideoWidget() 
videoWidget.setParent(qw) 
videoWidget.show() 

mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) 
mediaPlayer.setVideoOutput(videoWidget) 

und Sie kann dann nur Nest, das QWidget in einer anderen noch in der Lage sein, um es wie gewohnt auf dem Bildschirm überall zu platzieren.