2013-07-12 77 views
0

我有一個自我矩形編碼(不使用QRect教育目的),它看起來像這樣:我應該使用哪個Qt類來表示矩形上的圖像?

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),我不知道應該使用哪一個。 有什麼區別,哪一個最適合簡單地將資源圖像繪製成矩形?

回答

3

如果要在屏幕上顯示圖像,請使用QPixmap。如果要修改圖像,請將其加載或保存到文件中,請使用QImage

QIcon基於QPixmap,並提供根據請求的大小和狀態選擇許多像素圖之一的能力。 QIcon可能不是你想要的。

documentation

Qt提供用於處理圖像數據四類:QImage的,QPixmap就QBitmap和QPicture。 QImage是爲I/O設計和優化的,並且可以直接進行像素訪問和操作,而QPixmap則是爲了在屏幕上顯示圖像而設計和優化的。 QBitmap只是一個繼承QPixmap的便利類,確保深度爲1.最後,QPicture類是一個記錄和重放QPainter命令的繪圖設備。

QIcon類提供了不同模式和狀態下的可縮放圖標。 QIcon可以從它給出的一組像素圖中生成更小,更大,活動和禁用的像素圖。 Qt窗口小部件使用這些像素映射來顯示錶示特定動作的圖標。

相關問題