QPicture类是一个记录和回放QPainter命令的绘制设备。
Header: | #include <QPicture> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Inherits: | <<< QPaintDevice |
【详细描述】
一张图片会以独立于平台的格式将 painter 命令序列化到 IO 设备上。它们有时被称为元文件。
Qt 图片使用一种专有的二进制格式,这与许多窗口系统上的原生图片(元文件)格式不同,Qt图片对其内容没有限制,可以在控件或像素图上绘制一切(例如: fonts, pixmaps, regions, transformed等),也可以存储在一张图片中。
QPicture与分辨率无关。一个QPicture可以显示在不同的设备上(例如svg、pdf、ps、打印机和屏幕),看起来都相同,这正是所见即所得的打印预览所必须的。QPicture在默认系统dpi中运行,并根据窗口系统缩放 painter 以匹配分辨率的差异。
- 以下是记录图片的示例:
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
请注意,在每次调用QPainter::begin() 函数时, painter 命令的列表都会被重置。
- 重播图片的示例:
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
图片也可以使用play()来绘制。一些关于图片的基本数据可用size(), isNull() and boundingRect()访问。
【公有函数】
QPicture::QPicture(int formatVersion = -1)
构造空图片。
格式版本参数可用于创建一个由使用Qt的早期版本编译的应用程序可以读取的Q图片。
默认格式版本是-1,它表示当前版本。
QPicture::QPicture(const QPicture &pic)
构造一个图片的副本。
由于隐式共享,这个构造函数非常快。
virtual QPicture::~QPicture()
QRect | boundingRect() const | 返回图片的边界矩形,如果图片不包含数据,则返回一个无效的矩形。 |
const char * | data() const | 返回一个指向图片数据的指针。该指针只有在在这张图上调用下一个非常量函数之前才有效。如果图片中不包含任何数据,则返回的指针为0。 |
bool | isNull() const | 如果图片不包含任何数据,则返回true;否则返回false。 |
bool | load(const QString &fileName) | 从文件名指定的文件中加载图片,如果成功则返回true;否则将使图片无效并返回false。 |
bool | load(QIODevice *dev) | 重载load函数,这里dev是用于加载的设备。 |
bool | play(QPainter *painter) | 使用Painter回放图片,如果成功则返回true;否则返回false。 这个函数与QPainter::drawPicture() 和 (x, y) = (0, 0) 完全相同。 注意:Painter的状态并没有被这个功能保存下来。 |
bool | save(const QString &fileName) | 将图片保存到文件名指定的文件中,成功后返回true,否则返回false。 |
bool | save(QIODevice *dev) | 重载save函数,这里dev是用于保存的设备。 |
void | setBoundingRect(const QRect &r) | 将图片的边界矩形设置为r,这将覆盖自动计算的值。 |
virtual void | setData(const char *data, uint size) | 直接设置图片尺寸。此函数将复制输入数据。 |
uint | size() const | 返回图片数据的大小。 |
void | swap(QPicture &other) | 用这张照片交换其他图片。这个操作非常快,而且永远不会失败。 |
QPicture & | operator=(const QPicture &p) | |
QPicture & | operator=(QPicture &&other) |
【非成员的相关函数】
QDataStream & | operator<<(QDataStream &s, const QPicture &r) |
QDataStream & | operator>>(QDataStream &s, QPicture &r) |