开发笔记

  • 首页
  • 工具箱
三味线的博客
  1. 首页
  2. Qt
  3. 正文

Qt多显示器截屏

2021-07-14 816点热度 0人点赞 0条评论

1. 拼接多个显示器上的图像

QPixmap MainWindow::grabWindow1()
{
    QList<QScreen*> screens = QGuiApplication::screens();
    QList<QPixmap> scrs;
    int w = 0, h = 0, p = 0;

    for (QScreen *scr: screens) {
        QRect g = scr->geometry();
        QPixmap pix = scr->grabWindow(0, g.x(), g.y(), g.width(), g.height());
        w += pix.width();
        if (pix.height() > h) {
            h = pix.height();
        }
        scrs.append(pix);
    }

    QPixmap retpix(w, h);
    QPainter painter(&retpix);
    retpix.fill(Qt::white);
    for (QPixmap &scr: scrs) {
        painter.drawPixmap(QPoint(p, 0), scr);
        p += scr.width();
    }

    return retpix;
}

2.在主屏幕用虚拟屏幕的尺寸截图

QPixmap MainWindow::grabWindow2()
{
    QScreen *screen = QGuiApplication::primaryScreen();
    QRect scg = screen->virtualGeometry();
    QPixmap retpix = screen->grabWindow(QApplication::desktop()->winId(), scg.x(), scg.y(), scg.width(), scg.height());
    return retpix;
}

两种方式效果相同:

QPixmap pix1 = this->grabWindow1();
QPixmap pix2 = this->grabWindow2();
pix1.save("D:/1.png");
pix2.save("D:/2.png");

c++ - Screenshot capture of dual monitor in Qt 5 - Stack Overflow

标签: Qt
最后更新:2021-07-14

三味线

不吃咸鱼的喵

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

Captcha Code

COPYRIGHT © 2022 voidcat.cn. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备18010095号-1