颜色拾遗器

    技术2022-05-20  44

    说明:

    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")来引入系统的库,或在工程属性里面添加依赖库。


    最新回复(0)