QImage和QPixmap的使用

本文介绍了QImage和QPixmap在Qt库中的作用和优化方向,QImage适用于图像I/O和像素操作,而QPixmap则专注于屏幕显示。通过一个示例展示了如何在点击事件中加载和显示图像,包括从文件选择器加载图片,缩放图像,并使用QPixmap进行屏幕抓取。代码中包含了QFileDialog、QPixmap::grabWindow等关键函数的使用。
摘要由CSDN通过智能技术生成

QImage 是为 I/O 以及直接像素访问和操作而设计和优化的,而 QPixmap 是为在屏幕上显示图像而设计和优化的。

 源码分享:

void Widget::OnloadClicked()
{
    QFileDialog dialog(this);
    
    dialog.setAcceptMode(QFileDialog::AcceptOpen);
    dialog.setFileMode(QFileDialog::ExistingFile);
    
    if(QFileDialog::Accepted == dialog.exec())
    {
        bool ret = m_image.load(dialog.selectedFiles()[0]);
        
        if(ret)
        {
            m_image = m_image.scaled(width(), height(), Qt::KeepAspectRatio);
            m_pixmap = QPixmap::fromImage(m_image);
            update();//更新
        }
    }
    else
    {
        QMessageBox::critical(this, "Error", "Invalid Image file");
    }
}

void Widget::OnshotClicked()
{
    m_pixmap = QPixmap::grabWindow(QApplication::desktop()->winId());
    
    update();
}

void Widget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    
    QPainter painter;
    
    painter.begin(this);
    
    painter.drawPixmap(0, 0, width(), height(), m_pixmap);
    painter.end();
    
}

工程链接:https://download.csdn.net/download/weixin_41937297/37950109

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值