Qt源码分析--QImage(1)

本文介绍了QImage类的基本功能,包括其作为独立于硬件的图像表示形式,并提供了直接访问像素数据的能力。QImage还支持多种图像格式,如单色、8位、32位和alpha混合图像,并可通过QPainter进行绘图。文章还详细解析了QImage构造函数的工作原理及一些常用成员函数。

QImage 类提供独立于硬件的图像表示 (允许直接访问像素数据,且可以用作描绘设备)。

QImage 是为 I/O 和直接像素访问和操作而设计和优化的。

因为 QImage 是 QPaintDevice 的子类,所以 QPainter 可用于直接在图像上绘图。在 QImage 上使用 QPainter 时,可以在当前 GUI 线程之外的另一个线程中执行绘画。

QImage 类支持由 Format 枚举描述的几种图像格式。这些包括单色、8 位、32 位和 alpha 混合图像。

QImage 提供了一组函数,可用于获取有关图像的各种信息。还有几个函数可以转换图像。

QImage 对象可以通过值传递,因为 QImage 类使用隐式数据共享。 QImage 对象也可以流式传输和比较。

1.QImage(const QSize &size, Format format);

QImage::QImage(const QSize &size, Format format)
    : QPaintDevice()
{
    d = QImageData::create(size, format);
}



QImageData * QImageData::create(const QSize &size, QImage::Format format)
{
    if (size.isEmpty() || format <= QImage::Format_Invalid || format >= QImage::NImageFormats)
        return nullptr;                             // invalid parameter(s)
    Q_TRACE_SCOPE(QImageData_create, size, format);
    int width = size.width();
    int height = size.height();
    int depth = qt_depthForFormat(format);
    auto params = calculateImageParameters(width, height, depth);
    if (!params.isValid())
        return nullptr;
    QScopedPointer<QImageData> d(new QImage
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天进步2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值