Russian Qt Forum

Qt => Вопросы новичков => Тема начата: mercy от Март 04, 2015, 16:24



Название: GetPixel(); - нужна скорость
Отправлено: mercy от Март 04, 2015, 16:24
Мне нужно получить цвет пикселя с экрана. Есть простой способ:
Код:
#include <QCoreApplication>
#include <windows.h>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    HDC hdc;
    hdc = GetDC(0);
    cout << GetPixel(hdc,10,10) << endl;
    return a.exec();
}
И тем самым я получаю цвет пикселя по координатам (10,10).
Но этот метод уж ооочень медленный, если обрабатывать большое кол-во пикселей, то затрачивается огромное кол-во времени, а в моей задачи время очень важно.
Какие есть аналоги GetPixel(), которые работают быстрее или как ускорить этот способ? Желательно с примером.


Название: Re: GetPixel(); - нужна скорость
Отправлено: Fat-Zer от Март 04, 2015, 17:49
получи скриншот и бери столько пикселей, сколько захочешь...
Qt'шными средствами как-то так: QPixmap::grabWindow(QApplication::desktop()->winId()); (из Screenshot Example'а)
виндовыми — хз как...


Название: Re: GetPixel(); - нужна скорость
Отправлено: Hrundel от Март 04, 2015, 17:54
Можно сначала тупо получить весь экран, вот так:

Код
C++ (Qt)
public slots:
   void prntScr();
 
void MainWindow::prntScr()
{
   QPixmap p = QPixmap::grabWindow(QApplication::desktop()->winId());
}

При желании залить данные в QBitmapArray и тягать оттуда, или прямо из QPixmap.
Дожно быть быстрее.



Название: Re: GetPixel(); - нужна скорость
Отправлено: Igors от Март 04, 2015, 17:58
При желании залить данные в QBitmapArray и тягать оттуда, или прямо из QPixmap.
Дожно быть быстрее.
В QImage и там bits()