Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 2
Регистрация: 22.04.2015
Сообщений: 27
1

Скопировать в переменную заданный прямоугольник пикселей с экрана

25.04.2015, 21:11. Показов 774. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно скопировать в переменную заданный прямоугольник пикселей с экрана и затем тянуть из нее поштучно цвета пикселей. Простое использование GetPixel и hdc всего экрана занимает пару минут (что оч долго), область 370х55 пикселей. Читал много инфы про то, как сделать скриншот, но нигде не смог найти как вытягивать цвет пикселя.
Вот, к примеру, есть такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Void CaptureScreen()
{
    int nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
    int nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
    HWND hDesktopWnd = GetDesktopWindow();
    HDC hDesktopDC = GetDC(hDesktopWnd);
    HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);
    HBITMAP hCaptureBitmap =CreateCompatibleBitmap(hDesktopDC, 
                            nScreenWidth, nScreenHeight);
    SelectObject(hCaptureDC,hCaptureBitmap); 
    BitBlt(hCaptureDC,0,0,nScreenWidth,nScreenHeight,
           hDesktopDC,0,0,SRCCOPY|CAPTUREBLT); 
    SaveCapturedBitmap(hCaptureBitmap); //Place holder - Put your code
                                //here to save the captured image to disk
    ReleaseDC(hDesktopWnd,hDesktopDC);
    DeleteDC(hCaptureDC);
    DeleteObject(hCaptureBitmap);
}
Я так понял, скрин записывается в hCaptureBitmap, но мне его сохранять не нужно, нужно обращаться к пикселям в нем. Если данный код можно использовать в моей задаче, то как вытаскивать пиксели из hCaptureBitmap? Если нет - то предложите свой вариант.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2015, 21:11
Ответы с готовыми решениями:

Нарисовать прямоугольник со сторонами 20 и 30 пикселей, который движется по кругу
Прямоугольник со сторонами 20 и 30 пикселей движется по кругу диаметром 220 пикселей, не меняя...

Сколько пикселей у экрана по ширине/высоте?
Доброго времени суток! Задался я вопросом (может и дилетантским), как определить сколько пикселей...

скопировать прямоугольник
помогите пожалуйста разбить картинку на 9 частей и скопировать каждую часть в отведенную для этого...

Возможно ли считать 2000 пикселей с экрана, очень быстро?
Возникла задача, сделать программу для перевода текста из картинки, но столкнулся с проблемой, что...

3
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
26.04.2015, 13:50 2
Если не нравится GetPixel, попробуй GetDIBits
0
1 / 1 / 2
Регистрация: 22.04.2015
Сообщений: 27
26.04.2015, 15:35  [ТС] 3
Ну вот покажи мне, пожалуйста, пример кода: вызвать GetDIBits, а потом в цикле определять цвета пикселей
0
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
27.04.2015, 19:03 4
Ссылка на пример есть в разделе Examples: Capturing an Image.
0
27.04.2015, 19:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2015, 19:03
Помогаю со студенческими работами здесь

Определить попадает ли заданная точка в заданный прямоугольник
Сроочно помогите с этой задачей, не могу никак решить, а завтра дэдлайн. Описание: Напишите...

Напишите программу, выводящую на экран заданный прямоугольник
Напишите программу, выводящую на экран заданный прямоугольник n*m из символов «*». Целые числа «n»...

Как получить количество пикселей определённого цвета в области экрана?
Помогите решить задачу. Надо в определённой области экрана получить количество пикселей раннее...

Определите, на сколько квадратов можно разрезать заданный прямоугольник
Стороны прямоугольника заданы натуральными числами A и B Определите, на сколько квадратов, стороны...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru