QWidget获取窗口某点的颜色

从 QColorDialog 的源码中翻出来并整理了一下:

        QScreen *screen = QGuiApplication::screenAt(pressPos);
        if (!screen)
            screen = QGuiApplication::primaryScreen();
        auto gpos = mapToGlobal(pressPos);
        const QPixmap pixmap2 = screen->grabWindow(0, gpos.x(), gpos.y(), 1, 1);
        const QImage i = pixmap2.toImage();
        QColor color = i.pixel(0, 0);
//-------------------------------------------------------------------------------------
        int red = color.red();
        int green = color.green();
        int blue = color.blue();
        QString strDecimalValue = QString("%1, %2, %3").arg(red).arg(green).arg(blue);
        QString strHex = QString("#%1%2%3").arg(QString("%1").arg(red&0xFF,2,16,QLatin1Char('0')).toUpper())    //red&0xFF 数字转成16进制
                                           .arg(QString("%1").arg(green&0xFF,2,16,QLatin1Char('0')).toUpper())
                                           .arg(QString("%1").arg(blue&0xFF,2,16,QLatin1Char('0')).toUpper());
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值