基于Qt的截图工具


用Qt写的截图工具,实现了点击按钮背景色变暗,可用鼠标框选要截图的区域,并保存至本地文件。内含完整的工程文件。
资源截图
代码片段和文件信息
#include “capturescreen.h“

CaptureScreen::CaptureScreen(QWidget *parent Qt::WFlags flags)
: QMainWindow(parent flags)
{
ui.setupUi(this);

InitWindow();
}

CaptureScreen::~CaptureScreen()
{

}
void CaptureScreen::InitWindow()
{

Rubber = NULL;
ScreenHeight = 0;
ScreenWidth = 0;
info = new QImage(“infoa.png“);
GImage = QPixmap();
MouseStart = QPoint(00);
MouseEnd =QPoint(00);
//this->setMouseTracking(true);
//setWindowState(Qt::WindowActive | Qt::WindowFullScreen);

WholeWindow = QPixmap::grabWindow(QApplication::desktop()->winId());
WholeWindow.save(“tmp.png“);
bg = QImage(“tmp.png“);

QFile *tmp = new QFile(“tmp.png“);
tmp->remove();

ChangeLight(00bg.width() bg.height() 0.6);

//获取桌面尺寸
QDesktopWidget *desktop = QApplication::desktop();
QRect DesktopRect = desktop->screenGeometry();
ScreenWidth = DesktopRect.width();
ScreenHeight = DesktopRect.height();
this->resize(ScreenWidth ScreenHeight);
//按钮 点击之后就消失
BtnPress = new QPushButton(tr(“截图“) this);
BtnPress->setWindowFlags(Qt::framelessWindowHint | Qt::WindowStaysOnTopHint);
BtnPress->setGeometry(ScreenWidth/2 -100ScreenHeight/2 -2520050);
BtnPress->show();
connect(BtnPress SIGNAL(clicked()) BtnPress SLOT(close()));

Label = new QLabel(““this);
InfoLabel = new QLabel(““this);
Label->setWindowFlags(Qt::framelessWindowHint | Qt::WindowStaysOnTopHint);
this->setWindowFlags(Qt::framelessWindowHint);


}
void CaptureScreen::ChangeLight(int x int y int width int height double bright)
{
int redbluegreen;
for (int i=0; i {
for (int j=0; j {
red = qRed(bg.pixel(ij)) * bright;
green = qGreen(bg.pixel(ij)) * bright;
blue = qBlue(bg.pixel(ij)) * bright;
bg.setPixel(ijqRgb(red green blue));
}
}
}
void CaptureScreen::mousePressEvent(QMouseEvent *e)
{
if(e->button() == Qt::LeftButton)
{
InfoLabel->setPixmap(QPixmap::fromImage(*info));
InfoLabel->setWindowFlags(Qt::framelessWindowHint);
InfoLabel->move(QPoint(e->pos().x() + 30 e->pos().y()+30));
InfoLabel->show();

BtnPress->close();

//初始化框
if (!Rubber)
{
Rubber = new QRubberBand(QRubberBand::Line this);
}
Rubber->show();

//记录鼠标起始位置
MouseStart = e->pos();
//将框放置于起始位置
Rubber->setGeometry(MouseStart.x() MouseStart.y() 0 0);

//显示坐标
SetLabel();
}
else if (e->button() == Qt::RightButton)
{
BtnPress->close();
InfoLabel->close();
this->close();
}
}
void CaptureScreen::mouseDoubleClickEvent(QMouseEvent *e)
{
//截取全屏
if (e->button() == Qt::LeftButton)
{
BtnPress->close();
QString filename = QFileDialog::getSaveFileName(this tr(“save picture“) “.“ tr(“Image Files(*.png)“));

WholeWindow.save(filename);
InfoLabel->close();
this->close();
}
}
void CaptureScreen::mouseMoveEvent(QMouseEvent *e)
{
if (Rubber)
{
InfoLabel->move(QPoint(e->pos().x()+30 e->pos().y() +30));

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5433  2018-11-22 09:41  CaptureScreenCaptureScreencapturescreen.cpp

     文件       1029  2018-11-22 09:41  CaptureScreenCaptureScreencapturescreen.h

     文件         73  2018-11-22 09:41  CaptureScreenCaptureScreencapturescreen.qrc

     文件        820  2018-11-22 09:41  CaptureScreenCaptureScreencapturescreen.ui

     文件      10209  2018-11-22 09:41  CaptureScreenCaptureScreenCaptureScreen.vcproj

     文件       2455  2018-11-22 09:41  CaptureScreenCaptureScreenGeneratedFilesDebugmoc_capturescreen.cpp

     文件        739  2018-11-22 09:41  CaptureScreenCaptureScreenGeneratedFilesqrc_capturescreen.cpp

     文件       2455  2018-11-22 09:41  CaptureScreenCaptureScreenGeneratedFilesReleasemoc_capturescreen.cpp

     文件       2416  2018-11-22 09:41  CaptureScreenCaptureScreenGeneratedFilesui_capturescreen.h

     文件        309  2018-11-22 09:41  CaptureScreenCaptureScreenmain.cpp

     文件    9784320  2018-11-22 09:41  CaptureScreenCaptureScreen.ncb

     文件        905  2018-11-22 09:41  CaptureScreenCaptureScreen.sln

     文件      10240  2018-11-22 09:41  CaptureScreenCaptureScreen.suo

     目录          0  2018-11-22 09:49  CaptureScreenCaptureScreenGeneratedFilesDebug

     目录          0  2018-11-22 09:49  CaptureScreenCaptureScreenGeneratedFilesRelease

     目录          0  2018-11-22 09:49  CaptureScreenCaptureScreenGeneratedFiles

     目录          0  2018-11-22 09:41  CaptureScreenCaptureScreenResources

     目录          0  2018-12-03 21:46  CaptureScreenCaptureScreen

     目录          0  2018-12-03 21:45  CaptureScreen

----------- ---------  ---------- -----  ----

              9821403                    19


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)