Qt解决在windows平台下高DPI屏幕异常显示的问题,及全屏截图问题

https://blog.csdn.net/startl/article/details/105862817
https://blog.csdn.net/u014410266/article/details/107488789

截图问题
假如windows开启了125%,150%的缩放,Qt调用grabWindow进行全屏截图就会出问题,因此,需要获取到这个125%。(其实最佳的方式是调用windows的api,但是我出于跨平台的考虑,暂时没选择系统api)

        double baseDPI = 141.951; //这个是在我自己的电脑100%缩放时测试的结果,不保证其他电脑也一样
        double curDPI = QGuiApplication::primaryScreen()->physicalDotsPerInch();
        double dpiRatio = baseDPI / curDPI;

        QScreen *screen = qApp->primaryScreen();
//        QPixmap pixmap = screen->grabWindow(0);
//        QPixmap pixmap = screen->grabWindow(0, 0, 0, QApplication::desktop()->width(),  QApplication::desktop()->height());
        QPixmap pixmap = screen->grabWindow(0,
                                            0, 0,
                                            QApplication::desktop()->width() * dpiRatio,
                                            QApplication::desktop()->height() * dpiRatio);


        QDir dir;
        QString screenDir = "./screenShot";
        if(dir.exists(screenDir) == false)
        {
            dir.mkpath(screenDir);
        }
        pixmap.save(screenDir + "/" + QDateTime::currentDateTime().toString("yyyyMMdd hhmmss.zzz.png"));
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值