Qt颜色提取

这段代码用于获取鼠标光标位置的像素颜色,并将其转换为16进制格式。通过QCursor::pos()获取坐标,使用QWindow和QPixmap的grabWindow方法抓取像素,然后利用QImage处理像素数据,提取红色、绿色和蓝色分量,最后将这些颜色以16进制格式输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    int x = QCursor::pos().x();
    int y = QCursor::pos().y();
    QWindow window;
    QPixmap pixmap=window.screen()->grabWindow(QApplication::desktop()->winId(),x,y,1,1);

    qDebug()<<pixmap<<endl;
    int red, green, blue;
        if(!pixmap.isNull())
        {
            QImage image = pixmap.toImage();

            if(!image.isNull())
            {
                QColor color = image.pixel(0,0);
                red = color.red();
                green = color.green();
                blue = color.blue();

                //输出16进制的颜色
                //QString hRed = QString::number(red,16).toUpper();
                //QString hGreen = QString::number(green,16).toUpper();
                //QString hBlue = QString::number(blue,16).toUpper();
                
                //采用这种方式可以设置转换后16进制的位数:不足位数用0补充;
                QString hRed =  QString("%1").arg(red,2,16,QLatin1Char('0')).toUpper();//value为int型或char型都可
                QString hGreen =  QString("%1").arg(green,2,16,QLatin1Char('0')).toUpper();
                QString hBlue =  QString("%1").arg(blue,2,16,QLatin1Char('0')).toUpper();
                
                qDebug()<<red<<" "<<green<<" "<<blue<<endl;
                qDebug()<<hRed+hGreen+hBlue<<endl;
            }
        }

参考连接:心若十年
参考连接:blueshaw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值