#include <QApplication>
#include <QDesktopWidget>
#include <QScreen>
#include <QPixmap>
#include <QDebug>
#include <QBuffer>
#define IMAGEPNG "PNG"
#define IMAGEBMP "BMP"
// nDesktop 0 开始
bool desktopGeometry(int nDesktop, int * nWidth, int *nHeight)
{
bool ret = false;
QDesktopWidget * desk = QApplication::desktop();
int screenCount = desk->screenCount();
if(nDesktop >= 0 && nDesktop < screenCount){
QScreen* qScreen = QGuiApplication::screens().at(nDesktop);
QRect rect = qScreen->geometry();
*nWidth = rect.width();
*nHeight = rect.height();
ret = true;
}
return ret;
}
// nWidth = -1 nHeight = -1 不进行缩放
QByteArray desktopScale(int nDesktop, int nWidth = -1, int nHeight = -1, const char* format = IMAGEBMP)
{
QByteArray byteArray;
QDesktopWidget * desk = QApplication::desktop();
int screenCount = desk->screenCount();
for (int nscreen = 0; nscreen < screenCount; ++nscreen) {
if(nDesktop == nscreen){
//QString filePath = QString("screen%1.%2").arg(nscreen).arg(format);
QScreen* qScreen = QGuiApplication::screens().at(nscreen);
QPixmap screenPixmap = qScreen->grabWindow(0);
QBuffer buffer(&byteArray);
buffer.open(QIODevice::WriteOnly);
if(!(nWidth == -1 && nHeight == -1)){
QPixmap scaledPixmap = screenPixmap.scaled(nWidth, nHeight);
scaledPixmap.save(&buffer, format);
//scaledPixmap.save(filePath, format);
}
else{
screenPixmap.save(&buffer, format);
//screenPixmap.save(filePath, format);
}
break;
}
}
return byteArray;
}
09-27
540