Russian Qt Forum
Сентябрь 30, 2024, 12:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: GetPixel(); - нужна скорость  (Прочитано 3069 раз)
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(), которые работают быстрее или как ускорить этот способ? Желательно с примером.
Записан
Fat-Zer
Гость
« Ответ #1 : Март 04, 2015, 17:49 »

получи скриншот и бери столько пикселей, сколько захочешь...
Qt'шными средствами как-то так: QPixmap::grabWindow(QApplication::desktop()->winId()); (из Screenshot Example'а)
виндовыми — хз как...
Записан
Hrundel
Гость
« Ответ #2 : Март 04, 2015, 17:54 »

Можно сначала тупо получить весь экран, вот так:

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

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

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Март 04, 2015, 17:58 »

При желании залить данные в QBitmapArray и тягать оттуда, или прямо из QPixmap.
Дожно быть быстрее.
В QImage и там bits()
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.152 секунд. Запросов: 22.