15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|
1 | |
Работа с отдельными пикселями22.01.2013, 03:08. Показов 5661. Ответов 7
Метки нет (Все метки)
Имеется область на hdc. Надо что-то с Каждым пикселем сделать и вернуть измененный пиксель назад или на другой hdc.
Я могу написать код по схеме - в двойном цикле берешь каждый пиксель, читаешь GetPixel , раскодируешь в цвета, что хочешь делаешь, записываешь назад или на другой SetPixel . Кое-что рабочее так уже написал, НО! попиксельная обработка такая, точнее Чтение и Запись - несравнимо медленнее стандартных функций. Как можно лучше? Скорее всего из указателя на hdc можно как-то "выдрать" где именно в памяти все лежит и "лезть" туда напрямую, но как именно?
0
|
22.01.2013, 03:08 | |
Ответы с готовыми решениями:
7
Как работать с отдельными пикселями на изображении c# работа с пикселями. Работа с пикселями Работа с пикселями |
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|||||||||||
22.01.2013, 15:47 [ТС] | 3 | ||||||||||
Вроде мощная вещь, но что неправильно в таком фрагменте кода?
1. По идее то, что я написал - должно создать секцию на основе куска экрана, часть закрасить в один цвет, часть оставить как есть и снова вывести на экран. 2. На практике - создается секция заполненная нулями (черная), часть таки красится и так выводится. Добавлено через 21 минуту А в gdi+ есть высокоуровневые обертки для таких действий? Это же вроде gdi, так как потребовалась либа gdi32.dll чтобы откомпилить Добавлено через 7 часов 10 минут Попробовал создать достаточно серьезный пример
Если функциям приписать режим 0 (без обработки) то все летает, но картинки исходного цвета Если режим 2 - то по идее должны быть исходные картинки, но на практике - черные области....
0
|
8 / 8 / 1
Регистрация: 11.08.2012
Сообщений: 112
|
|
22.01.2013, 18:24 | 4 |
Если интересно, в соседней теме только что запустил программу, для получения скриншота рабочего стола при помощи directX. Собственно полученную поверхность можно не сохранять в качестве .bmp файла, а крутить как вам заблагорассудится (примеры есть в посте выше, той же темы)
1
|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|
22.01.2013, 19:19 [ТС] | 5 |
Спасибо. Но у меня мой MinGW почему-то не знает библиотеку #include <d3dx9tex.h> (#include <d3d9.h> нормально принял). Что делать?
0
|
8 / 8 / 1
Регистрация: 11.08.2012
Сообщений: 112
|
|
22.01.2013, 19:28 | 6 |
Хм.... d3dx9tex.h отвечает за работу D3DXSaveSurfaceToFile() т.е. за сохранение поверхности в .bmp файл, если эта функция не нужна - то ее можно выбросить, и библиотеку не юзать (сам использовал только для проверки работоспособности). У меня VS2010, библиотек d3d вообще не было, качал откуда то со стороннего источника (возможно есть даже на сайте майкрософта).
1
|
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
|
|
22.01.2013, 19:53 [ТС] | 7 |
Хорошо, буду дальше разбираться
Добавлено через 6 минут Гм. Осталась только одна ошибка Компиляции. Компилятор не знает GetConsoleWindow(); хотя вроде это из элементарной windows.h
0
|
8 / 8 / 1
Регистрация: 11.08.2012
Сообщений: 112
|
||||||
23.01.2013, 17:39 | 8 | |||||
В принципе прога работает и без GetConsoleWindow(), главное дать CreateDevice переменную типа HWND (насколько я понял, дескриптор окна нужен для вывода графики, а тут ничего выводить не надо, да и в консоль ее не вывести по определению )
Добавлено через 21 час 12 минут Программа создает скриншот рабочего стола, редактирует его (в данном примере все закрашивается красным цветом) а потом сохраняет его в файл.
0
|
23.01.2013, 17:39 | |
23.01.2013, 17:39 | |
Помогаю со студенческими работами здесь
8
Работа с пикселями в C# Работа с пикселями Работа с пикселями работа с пикселями Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |