我有一个自编码矩形(出于教育目的不使用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);
}
};
现在我想添加对图像的支持,因此块可以有颜色或图像(如果两者都提供,将使用图像)。
问题是,有太多的类来表示图像(QPixmap
,QImage
,QIcon
),我不知道应该使用哪一个。
有什么区别,哪一个最适合简单地将资源图像绘制成矩形?
答案 0 :(得分:3)
如果要在屏幕上显示图像,请使用QPixmap
。如果要修改图像,加载或将其保存到文件,请使用QImage
。
QIcon
基于QPixmap
,可根据请求的大小和状态选择众多像素图中的一种。 QIcon
可能不是你想要的。
Qt提供了四个用于处理图像数据的类:QImage,QPixmap,QBitmap和QPicture。 QImage专为I / O和直接像素访问和操作而设计和优化,而QPixmap则专为在屏幕上显示图像而设计和优化。 QBitmap只是一个继承QPixmap的便利类,确保深度为1.最后,QPicture类是一个记录和重放QPainter命令的绘图设备。
QIcon类提供不同模式和状态的可伸缩图标。 QIcon可以从给定的像素图集生成更小,更大,更活跃和禁用的像素图。 Qt小部件使用这样的像素图来显示代表特定动作的图标。