我应该使用哪个Qt类来表示矩形上的图像

Which Qt class should I use to represent an image on a rectangle?

本文关键字:表示 图像 Qt 我应该      更新时间:2023-10-16

我有一个自编码的矩形(不使用QRect进行教育),看起来是这样的:

class Block {
private: // also has getters and setters for this stuff
    int m_x;
    int m_y;
    uint m_width;
    uint m_height;
    QColor m_color;
public:
    Block(int x = 0, int y = 0, uint w = 64, uint h = 64);
    Block(const QColor &color, int x = 0, int y = 0, uint w = 64, uint h = 64);
    void paint(QPainter &painter) const
    {
        painter.fillRect(m_x, m_y, m_width, m_height, m_color);
    }
};

现在我想添加对图像的支持,这样块就可以有颜色或图像(如果两者都提供,则使用图像)。问题是,有太多的类来表示图像(QPixmapQImageQIcon),我不知道应该使用哪一个。区别是什么,哪一个最适合简单地将资源图像绘制成矩形?

如果要在屏幕上显示图像,请使用QPixmap。如果要修改图像、加载图像或将其保存到文件中,请使用QImage

CCD_ 7基于CCD_ 8并且提供基于所请求的大小和状态来选择多个像素图中的一个的能力。QIcon可能不是您想要的。

来自文件:

Qt提供了四个处理图像数据的类:QImage、QPixmap、QBitmap和QPicture。QImage是为I/O、直接像素访问和操作而设计和优化的,而QPixmap是为在屏幕上显示图像而设计和最优化的。QBitmap只是一个继承QPixmap的便利类,确保深度为1。最后,QPicture类是一个绘制设备,用于记录和回放QPainter命令。

QIcon类提供不同模式和状态的可扩展图标。QIcon可以从给定的一组像素图中生成更小、更大、活动和禁用的像素图。Qt小部件使用这样的像素图来显示表示特定动作的图标。