【发布时间】:2013-10-27 13:51:41
【问题描述】:
我希望能够截取我的程序的屏幕截图并将它们保存为 png(或者如果可以保存为 pdf)。我已经从 Qt 中获取了屏幕截图示例。这会从整个显示中截取屏幕截图。但我想只从我的窗口的一部分截取屏幕截图,即使它位于显示器的另一个位置。我怎样才能做到这一点。有功能吗?
【问题讨论】:
标签: qt screenshot
我希望能够截取我的程序的屏幕截图并将它们保存为 png(或者如果可以保存为 pdf)。我已经从 Qt 中获取了屏幕截图示例。这会从整个显示中截取屏幕截图。但我想只从我的窗口的一部分截取屏幕截图,即使它位于显示器的另一个位置。我怎样才能做到这一点。有功能吗?
【问题讨论】:
标签: qt screenshot
QPixmap 的 static 函数 grabWidget 是你的朋友。您可以轻松获取所提供小部件的像素图,然后将其保存为您想要的任何格式:
QPixmap p = QPixmap::grabWidget(widget);
p.save("p.png");
【讨论】:
QWidget::render (http://doc.qt.nokia.com/4.7-snapshot/qwidget.html#render) 呢?
【讨论】:
检查窗口以获取它的位置和大小。如果您想在屏幕截图中看到任何特定元素,您可以获取它的位置和大小。否则,您将不得不使用窗口位置的偏移量,这可能会导致问题(例如,在调整窗口大小时)。
获取屏幕截图,然后使用之前的位置/大小制作像素图。
有一个缺点:拍摄整个桌面的快照有点慢。
因此,更好的解决方案可能是更改您的应用程序:在屏幕外缓冲区中渲染您想要保存的部分。然后,您可以使用此缓冲区来呈现 UI 并同时保存屏幕截图。
【讨论】: