【问题标题】:How to mask video in Qgraphicsvideoitem of any shape如何在任何形状的 Qgraphicsvideoitem 中屏蔽视频
【发布时间】:2015-03-11 11:58:34
【问题描述】:

我正在使用 Qgraphicsvideoitem 使用 Qmediaplayer 显示视频。 现在,如果我有圆形物品,我该如何将视频遮住。

这是我的代码,图片是:

VideoClass::VideoClass(QGraphicsVideoItem *parent):QGraphicsVideoItem(parent)
{
    QMediaPlayer *player = new QMediaPlayer(this, QMediaPlayer::VideoSurface);
    QMediaPlaylist *playlist = new QMediaPlaylist;
    playlist->addMedia(QUrl::fromLocalFile("/root/Desktop/Content/Robotica_1080.wmv"));
    playlist->setPlaybackMode(QMediaPlaylist::Loop);
    player->setPlaylist(playlist);
    player->play();
    player->setVideoOutput(this);
}

void VideoClass::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    QGraphicsVideoItem::paint(painter, option, widget);
    painter->drawEllipse(0, 0, 400, 400);
}

QRectF VideoClass::boundingRect() const
{
    return QRectF(0,0,400,400);}

【问题讨论】:

    标签: c++ qt qgraphicsitem qmediaplayer


    【解决方案1】:

    我认为您想将视频裁剪成您正在绘制的路径。如果是这样,请使用 shape 和 opaqueArea 虚拟函数来执行此操作。并且不要忘记设置标志 QGraphicsItem::ItemClipsToShape。

    【讨论】:

    • 感谢 Zing 我正在努力实现同样的目标
    猜你喜欢
    • 2014-09-20
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多