91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

一個簡單的小例子來看一看如何用Qt實現(xiàn)一個簡單的截圖功能,詳情見博客 http://blog.csdn.net/goforwardtostep/article/details/54099742

資源截圖

代碼片段和文件信息

#include?“capturescreen.h“
#include?
#include?
#include?

CaptureScreen::CaptureScreen(QWidget?*parent)
:?QWidget(parent)
?m_isMousePress(false)
{
initWindow();
loadBackgroundPixmap();
}

CaptureScreen::~CaptureScreen()
{

}

void?CaptureScreen::initWindow()
{
this->setMouseTracking(true);
this->setWindowFlags(Qt::framelessWindowHint);
setWindowState(Qt::WindowActive?|?Qt::WindowFullScreen);
}

void?CaptureScreen::loadBackgroundPixmap()
{
m_loadPixmap?=?QPixmap::grabWindow(QApplication::desktop()->winId());?//抓取當前屏幕的圖片;
m_screenwidth?=?m_loadPixmap.width();
m_screenheight?=?m_loadPixmap.height();
}

void?CaptureScreen::mousePressEvent(QMouseEvent?*event)
{
if?(event->button()?==?Qt::LeftButton)
{
m_isMousePress?=?true;
m_beginPoint?=?event->pos();
}

return?QWidget::mousePressEvent(event);
}

void?CaptureScreen::mouseMoveEvent(QMouseEvent*?event)
{
if?(m_isMousePress)
{
m_endPoint?=?event->pos();
update();
}
return?QWidget::mouseMoveEvent(event);
}

void?CaptureScreen::mouseReleaseEvent(QMouseEvent?*event)
{
m_endPoint?=?event->pos();
m_isMousePress?=?false;
return?QWidget::mouseReleaseEvent(event);
}

void?CaptureScreen::paintEvent(QPaintEvent?*event)
{
m_painter.begin(this);??????????//進行重繪;

QColor?shadowColor?=?QColor(0?0?0?100);??????????????????????//陰影顏色設(shè)置;
m_painter.setPen(QPen(Qt::blue?1?Qt::SolidLine?Qt::FlatCap));????//設(shè)置畫筆;
m_painter.drawPixmap(0?0?m_loadPixmap);???????????????????????//將背景圖片畫到窗體上;
m_painter.fillRect(m_loadPixmap.rect()?shadowColor);???????????//畫影罩效果;

if?(m_isMousePress)
{
QRect?selectedRect?=?getRect(m_beginPoint?m_endPoint);
m_capturePixmap?=?m_loadPixmap.copy(selectedRect);
m_painter.drawPixmap(selectedRect.topLeft()?m_capturePixmap);
m_painter.drawRect(selectedRect);
}


m_painter.end();??//重繪結(jié)束;
}

void?CaptureScreen::keyPressEvent(QKeyEvent?*event)
{
//?Esc?鍵退出截圖;
if?(event->key()?==?Qt::Key_Escape)
{
close();
}
//?Eeter鍵完成截圖;
if?(event->key()?==?Qt::Key_Return?||?event->key()?==?Qt::Key_Enter)
{
signalCompleteCature(m_capturePixmap);
close();
}
}

QRect?CaptureScreen::getRect(const?QPoint?&beginPoint?const?QPoint?&endPoint)
{
int?x?y?width?height;
width?=?qAbs(beginPoint.x()?-?endPoint.x());
height?=?qAbs(beginPoint.y()?-?endPoint.y());
x?=?beginPoint.x()? y?=?beginPoint.y()?
QRect?selectedRect?=?QRect(x?y?width?height);
//?避免寬或高為零時拷貝截圖有誤;
//?可以看QQ截圖,當選取截圖寬或高為零時默認為2;
if?(selectedRect.width()?==?0)
{
selectedRect.setWidth(1);
}
if?(selectedRect.height()?==?0)
{
selectedRect.setHeight(1);
}

return?selectedRect;
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????2930??2017-01-09?09:47??Qt?之?實現(xiàn)簡單截圖功能(一)\capturescreen.cpp

?????文件????????834??2017-01-09?09:48??Qt?之?實現(xiàn)簡單截圖功能(一)\capturescreen.h

?????目錄??????????0??2017-01-09?10:39??Qt?之?實現(xiàn)簡單截圖功能(一)

-----------?---------??----------?-----??----

?????????????????3764????????????????????3


評論

共有 條評論