Qt 图像类 QImage QPixmap QBitmap QPicture 之区别与用途

来源:互联网 发布:大学生最火话题知乎 编辑:程序博客网 时间:2024/05/14 19:20

 自己整理的,备忘录,参考Qt自带帮助:

qthelp://com.trolltech.qt.486/qdoc/qpixmap.html#details


Qt provides four classes for handlingimage data:QImage, Pixmap, QBitmapandQPicture.

继承关系:

QPaintDevice->QPixmap->QBitmap

 QPaintDevice->QImage

 QPaintDevice->QPicture

 

QPixmap:   is an off-screen image representation thatcan be used as a paint device

QBitmap:   provides monochrome (1-bit depth) pixmaps

QImage :   provides a hardware-independent imagerepresentation that allows direct access to the pixel data, and can be used asa paint device

QPicture:is a paint device that records and replays QPainter commands. 

 

QImage is designed and optimizedfor I/O, and for direct pixel access and manipulation,

QPixmap is designed and optimizedfor showing images on screen.

QBitmap is only a convenienceclass that inherits QPixmap, ensuring a depth of 1. The isQBitmap() functionreturns true if a QPixmap object is really a bitmap, otherwise returns false.

QPicture class is a paint devicethat records and replays QPainter commands.

 ------------------------------------QPixmap 说明-------------------------------------------------------

A QPixmapcan easily be displayed onthe screen using QLabel or one of QAbstractButton's subclasses (suchasQPushButton and QToolButton). QLabel has a pixmap property, whereasQAbstractButton has an icon property.

In addition to the ordinaryconstructors, a QPixmap can be constructed using the static grabWidget() andgrabWindow() functions which creates a QPixmap and paints the given widget, orwindow, into it.

QPixmap objects can be passed aroundby value since the QPixmap class uses implicit data sharing. For moreinformation, see the Implicit Data Sharing documentation. QPixmap objects canalso be streamed.

Note that the pixel data in a pixmapis internal and is managed by the underlying window system. Because QPixmap isaQPaintDevice subclass, QPainter can be used to draw directly onto pixmaps.Pixels can only be accessed through QPainterfunctions or by converting theQPixmap to a QImage. However, the fill() function is available for initializingthe entire pixmap with a given color.

There are functions to convert betweenQImage and QPixmap. Typically, the QImage class is used to load an image file,optionally manipulating the image data, before the QImage object is convertedinto a QPixmap to be shown on screen. Alternatively, if no manipulation isdesired, the image file can be loaded directly into a QPixmap. On Windows, theQPixmap class also supports conversion between HBITMAP and QPixmap. On Symbian,the QPixmap class also supports conversion between CFbsBitmap and QPixmap.

 ---------------------------------QPicture说明--------------------------------------------------------------------------------

 

//QPicture例子:         QPicture picture;        QPainter painter;         painter.begin(&picture);           // paint in picture         painter.drawEllipse(10,20, 80,70); //draw an ellipse         painter.end();                     // painting done        picture.save("drawing.pic");       //save picture          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


---------------------------------QImage说明-------------------------------------------------------------------------------------------


QImage读写  图像文件:

QImage provides several ways of loading an image file: 

The file can be loaded when constructing the QImage object, or by using theload()orloadFromData()functions later on. QImage also provides the staticfromData()function, constructing a QImage from the given data. When loading an image, the file name can either refer to an actual file on disk or to one of the application's embedded resources. See The Qt Resource System overview for details on how to embed images and other resource files in the application's executable.
Simply call the save() function to save a QImage object.


 QImage image(3, 3, QImage::Format_RGB32); QRgb value; value = qRgb(189, 149, 39); // 0xffbd9527 image.setPixel(1, 1, value); value = qRgb(122, 163, 39); // 0xff7aa327 image.setPixel(0, 1, value); image.setPixel(1, 0, value); value = qRgb(237, 187, 51); // 0xffedba31 image.setPixel(2, 1, value);



 

0 0
原创粉丝点击