QT中提供了四個處理圖像數據的類:QImage、QPixmap、QBitmap、QPicture。服務器
QImage提供了容許直接訪問像素數據的硬件無關的圖像顯示方案,可以用做繪圖設備。數據結構
QImage專門爲I/O、直接像素訪問操做而設計,並進行了優化。訪問圖片的像素或是修改圖片像素,則須要使用QImage,或者藉助於QPainter來操做像素。框架
因爲QImage繼承自QPaintDevice,QPainter能夠直接在QImage上繪圖。當在QImage上使用QPainter時,繪製能夠在另外一個線程中進行,而不是當前的GUI線程。ide
QImage可經過setPixpel()和pixel()等方法直接存取指定的像素。函數
QImage::QImage(const QSize & size, Format format)優化
QImage::QImage(int width, int height, Format format)動畫
QImage::QImage(uchar * data, int width, int height, Format format)ui
QImage::QImage(const uchar * data, int width, int height, Format format)this
QImage::QImage(uchar * data, int width, int height, int bytesPerLine, Format format)spa
QImage::QImage(const uchar * data, int width, int height, int bytesPerLine, Format format)
QImage::QImage(const char * const[] xpm)
QImage::QImage(const QString & fileName, const char * format = 0)
QImage::QImage(const char * fileName, const char * format = 0)
QImage::QImage(const QImage & p_w_picpath)
構造函數
uchar * QImage::bits ()
const uchar * QImage::bits () const
返回指向第一個像素數據的指針
int QImage::byteCount () const
返回圖像數據佔據的字節數
QImage QImage::copy ( const QRect & rectangle = QRect() ) const
拷貝圖像中的某個區域做爲新的圖像
QImage QImage::copy ( int x, int y, int width, int height ) const
拷貝(x,y)點開始(width,heith)的矩形區域做爲新的圖像
QRgb QImage::pixel ( const QPoint & position ) const
QRgb QImage::pixel ( int x, int y ) const
返回某點的像素的顏色
QSize QImage::size () const
返回圖像的尺寸大小
int QImage::width () const
返回圖像的寬
int QImage::height () const
返回圖像的高
QImage QImage::fromData(const uchar * data, int size, const char * format = 0) [static]
將給定的二進制數據data的前size字節數據按指定的圖像格式format構造圖像
QImage QImage::fromData(const QByteArray & data, const char * format = 0) [static]
從給定的數據data中加載圖像
bool QImage::loadFromData(const uchar * data, int len, const char * format = 0)
bool QImage::loadFromData(const QByteArray & data, const char * format = 0)
從給定數據data中加載圖像
QImage::operator QVariant() const
返回變體類型的圖像
QPixmap是用於繪製設備的屏幕圖像顯示。
QPixmap使用標籤或按鈕能夠很容易在屏幕顯示。
QPixmap跟硬件是相關的,如X11, Mac 以及Symbian平臺上,QPixmap是存儲在服務器端,而QImage則是存儲在客戶端,在Windows平臺上,QPixmap和QImage都是存儲在客戶端,並不使用任何的GDI資源。
QPixmap::QPixmap ()
QPixmap::QPixmap ( int width, int height )
QPixmap::QPixmap ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )
QPixmap::QPixmap ( const char * const[] xpm )
QPixmap::QPixmap ( const QPixmap & pixmap )
QPixmap::QPixmap ( const QSize & size )
構造函數
int QPixmap::depth () const
返回圖像的深度
bool QPixmap::load ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )
加載fileName圖像
bool QPixmap::loadFromData ( const uchar * data, uint len, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )
bool QPixmap::loadFromData ( const QByteArray & data, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )
從給定的二進制數據加載圖像
QBitmap是繼承自QPixmap的一個輔助類,確保圖像深度爲1,提供單×××像。
QBitmap::QBitmap(const QString &fileName, const char *format = Q_NULLPTR)
使用指定文件fileName構建QBitmap對象
[static] QBitmap QBitmap::fromData(const QSize &size, const uchar *bits, QImage::Format monoFormat = QImage::Format_MonoLSB)
構建大小爲size,內容爲bits的QBitmap對象
[static] QBitmap QBitmap::fromImage(const QImage &p_w_picpath, Qt::ImageConversionFlags flags = Qt::AutoColor)
將p_w_picpath轉換爲QBitmap對象後返回QBitmap對象副本
QPainterpainter(this);
QPixmappixmap("Cat.png");
QBitmapbitmap("Cat.png");
painter.drawPixmap(10,10,128,128,pixmap);
painter.drawPixmap(140,10,128,128,bitmap);
QPixmappixmap2("Cat2.png");
QBitmapbitmap2("Cat2.png");
painter.drawPixmap(10,140,128,128,pixmap2);
painter.drawPixmap(140,140,128,128,bitmap2);
QPicture是記錄和重現QPainter命令的繪圖設備。
QPicture picture;
picture.load("drawing.pic"); // load picture
QPainter painter;
painter.begin(&myImage); // paint in myImage
painter.drawPicture(0, 0, picture); // draw the picture at (0,0)
painter.end(); // painting done
QPicture::QPicture(int formatVersion = -1)
QPicture::QPicture(const QPicture &pic)
構造函數
QRect QPicture::boundingRect() const
返回圖像的邊界矩形
const char *QPicture::data() const
返回指向圖像數據的指針
bool QPicture::load(const QString &fileName, const char *format = Q_NULLPTR)
加載指定文件fileName爲圖像,成功返回true
bool QPicture::load(QIODevice *dev, const char *format = Q_NULLPTR)
bool QPicture::play(QPainter *painter)
使用painter重繪圖像,成功返回true
bool QPicture::save(QIODevice *dev, const char *format = Q_NULLPTR)
bool QPicture::save(const QString &fileName, const char *format = Q_NULLPTR)
保存圖像
void QPicture::setBoundingRect(const QRect &r)
設置圖像的邊界矩形爲r
[virtual] void QPicture::setData(const char *data, uint size)
設置圖像的數據爲data,大小爲size
uint QPicture::size() const
返回圖像的大小
QLibrary用於加載運行時共享庫。
QLibrary主要成員函數以下:
QLibrary::QLibrary ( QObject * parent = 0 )
QLibrary::QLibrary ( const QString & fileName, QObject * parent = 0 )
QLibrary::QLibrary ( const QString & fileName, int verNum, QObject * parent = 0 )
QLibrary::QLibrary ( const QString & fileName, const QString & version, QObject * parent = 0 )
構造函數
QString QLibrary::errorString () const
返回最近發生的錯誤描述的文本字符串
bool QLibrary::isLibrary ( const QString & fileName ) [static]
若是文件fileName有加載庫文件的有效後綴,返回true
bool QLibrary::isLoaded () const
若是庫文件已經被加載,返回true
bool QLibrary::load ()
加載庫,成功返回true
void * QLibrary::resolve ( const char * symbol )
void * QLibrary::resolve(const QString & fileName, const char * symbol) [static]
void * QLibrary::resolve ( const QString & fileName, int verNum, const char * symbol ) [static]
void * QLibrary::resolve ( const QString & fileName, const QString & version, const char * symbol ) [static]
返回庫中被導出符號表的地址
void QLibrary::setFileNameAndVersion ( const QString & fileName, int versionNumber )
void QLibrary::setFileNameAndVersion ( const QString & fileName, const QString & version )
設置文件名和版本號
bool QLibrary::unload ()
卸載庫
QMovie是使用QImageReader播放動畫的輔助類,用於顯示簡單的無聲音動畫。若是要播放音頻和多媒體內容,請使用Phonon框架。
QMovie使用方法以下:
A、經過構造函數建立一個QMovie對象。
B、調用start()函數啓動動畫播放,QMovie對象將會進入運行態,發送started()和statechanged()信號。
使用實例以下:
QLabel label;
QMovie *movie = new QMovie("animations/fire.gif");
label.setMovie(movie);
movie->start();
QMovie主要成員函數以下:
QMovie::QMovie ( QObject * parent = 0 )
QMovie::QMovie ( QIODevice * device, const QByteArray & format = QByteArray(), QObject * parent = 0 )
QMovie::QMovie ( const QString & fileName, const QByteArray & format = QByteArray(), QObject * parent = 0 )
構造函數
QColor QMovie::backgroundColor () const
返回動畫背景色顏色
int QMovie::currentFrameNumber () const
返回當前幀的序列號,第一幀序列號爲0
QImage QMovie::currentImage () const
返回當前幀的圖像
QPixmap QMovie::currentPixmap () const
返回當前幀的位圖
QIODevice * QMovie::device () const
返回動畫讀取圖像數據的設備
QString QMovie::fileName () const
返回動畫讀取圖像數據的文件的名稱
void QMovie::finished () [signal]
信號,動畫播放完成時發射
void QMovie::updated ( const QRect & rect ) [signal]
信號,當前幀的rect區域更新時發射
QList<QByteArray> QMovie::supportedFormats () [static]
返回QMovie支持的圖像格式鏈表
void QMovie::stop () [slot]
中止動畫,動畫進入非運行態,中止發射updated()和resize()信號
void QMovie::stateChanged ( QMovie::MovieState state ) [signal]
信號,每次動畫的狀態改變時發射
MovieState QMovie::state () const
返回動畫當前狀態
void QMovie::started () [signal]
信號,QMovie::start()函數調用後發射,動畫進入運行態
void QMovie::start () [slot]
啓動動畫播放
void QMovie::setScaledSize ( const QSize & size )
設置縮放幀大小到size
void QMovie::setPaused ( bool paused ) [slot]
設置動畫暫停
void QMovie::setFormat ( const QByteArray & format )
設置動畫解碼圖像數據的格式
void QMovie::setFileName ( const QString & fileName )
設置動畫讀取圖像數據的文件的文件名
void QMovie::setDevice ( QIODevice * device )
設置動畫播放時讀取圖像數據的設備
void QMovie::setBackgroundColor ( const QColor & color )
設置動畫背景色
int QMovie::frameCount () const
返回動畫的幀數
QPalette類包含了組件狀態的顏色組,QPalette是存儲組件顏色信息的數據結構,組件外觀所使用的顏色都定義於QPalette調色板中。
QPalette類對象包含了三個狀態的顏色描述,分別以下:
A、激活顏色組(Active)
組件得到焦點使用的顏色搭配方案
B、非激活顏色組(Inactive)
組件失去焦點使用的顏色方案
C、失效顏色組(Disabled)
組件處於不可用狀態使用的顏色方案
QPalette調色板的使用
QPalette::QPalette()
QPalette::QPalette(const QColor &button)
QPalette::QPalette(Qt::GlobalColor button)
QPalette::QPalette(const QColor &button, const QColor &window)
QPalette::QPalette(const QPalette &p)
構造函數
void QPalette::setBrush(ColorRole role, const QBrush &brush)
設置指定的顏色role到brush
void QPalette::setBrush(ColorGroup group, ColorRole role, const QBrush &brush)
設置指定顏色組group中的顏色role到brush
void QPalette::setColor(ColorGroup group, ColorRole role, const QColor &color)
設置顏色組group中的顏色role到color
void QPalette::setColor(ColorRole role, const QColor &color)
設置顏色role到color
const QBrush &QPalette::shadow() const
返回當前顏色組的影子brush
const QBrush &QPalette::text() const
返回當前顏色組的文本前景色brush
const QBrush &QPalette::window() const
返回當前顏色組的窗口背景brush
const QBrush &QPalette::windowText() const
返回當前顏色組的窗體文本前景色的brush
QPalette p = m_button.palette();
p.setColor(QPalette::Active, QPalette::ButtonText, Qt::red);
p.setColor(QPalette::Inactive, QPalette::ButtonText, Qt::red);
m_button.setPalette(p);
p = m_edit.palette();
p.setColor(QPalette::Inactive, QPalette::Highlight, Qt::blue);
p.setColor(QPalette::Inactive, QPalette::HighlightedText, Qt::white);
m_edit.setPalette(p);