说明:
print()使用的是Qt的接口print2()使用的是Windows API,需要包含windows.h,以及 LIBS += "D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Lib/Gdi32.Lib" //根据自己电脑上的Gdi32.Lib地址
QT += core gui
TARGET = ColorSnapTest TEMPLATE = app
SOURCES += main.cpp/ MainWindow.cpp
HEADERS += MainWindow.h
LIBS += "D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Lib/Gdi32.Lib"
#include <QtGui> #include <windows.h> #include "MainWindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { label = new QLabel; label->setAlignment(Qt::AlignVCenter); label->setFont(QFont("Verdana", 16, -1)); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(label, 0, Qt::AlignCenter); QWidget *widget = new QWidget; widget->setLayout(mainLayout); setCentralWidget(widget); //print(); print2(); } MainWindow::~MainWindow() { } void MainWindow::print() { int x = QCursor::pos().x(); int y = QCursor::pos().y(); QString text = QString("POS: %1, %2/n").arg(x).arg(y); QPixmap pixmap = QPixmap::grabWindow(QApplication::desktop()->winId(), x, y, 1, 1); if (!pixmap.isNull()) { QImage image = pixmap.toImage(); if (!image.isNull()) { if (image.valid(0, 0)) { QColor color = image.pixel(0, 0); text += QString("RGB: %1, %2, %3").arg(color.red()).arg(color.green()).arg(color.blue()); } } } label->setText(text); QTimer::singleShot(50, this, SLOT(print())); } void MainWindow::print2() { POINT pt; GetCursorPos(&pt); HDC hDC = GetDC(NULL); COLORREF color = GetPixel(hDC, pt.x, pt.y); ReleaseDC(NULL, hDC); BYTE r = GetRValue(color); BYTE g = GetGValue(color); BYTE b = GetBValue(color); QString text = QString("%1,%2,%3").arg(r).arg(g).arg(b); label->setText(text); QTimer::singleShot(50, this, SLOT(print2())); }
------------------------
如果是在vs编辑器中,也可以使用#pragma comment(lib, "Gdi32.Lib")来引入系统的库,或在工程属性里面添加依赖库。