Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2011, 21:40   #1
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию GetPixel,SetPixel

Здравстуйте форумчане.
Я хочу узнать или задать цвет пикселя на экране.
Код:
COLORREF GetPixel(
  __in  HDC hdc,
  __in  int nXPos,
  __in  int nYPos
);

COLORREF SetPixel(
  __in  HDC hdc,
  __in  int X,
  __in  int Y,
  __in  COLORREF crColor
);
Указател на что HDC, и как его получить?
Код:
cout<<GetPixel(NULL,40000,40000)<<endl;
На экран печатаеся десятизначная цифра.Как это цифру преобразовать в цвет.
Код:
	for(int i = 0; i < 400; i++)
	{
		for(int y = 0; y < 400; y++)
		{
			SetPixel(NULL,i,y,0);
		}
	}
Почему после этого ничего не случается?
Помогите пожалуйста.
Акоб вне форума Ответить с цитированием
Старый 09.04.2011, 01:08   #2
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Я не понял,никто не знает?
Акоб вне форума Ответить с цитированием
Старый 09.04.2011, 02:02   #3
MasterSporta
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 56
По умолчанию

HDC - это описатель контекста устройтсва.
Получить его можно двумя способами:
1. При обработке сообщения WM_PAINT в оконной процедуре:
hdc = BeginPaint(hwnd, &ps);
где hwnd - описатель окна, ps - структура типа PAINTSTRUCT:
2. При обработке сообщения, отличного от WM_PAINT:
hdc = GetDC(hwnd);
где hwnd - описатель окна
MasterSporta вне форума Ответить с цитированием
Старый 09.04.2011, 15:42   #4
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Так что ли?
Код:
hdc = GetDC(GetDesktopWindow());
Опять ничего не получается.
Акоб вне форума Ответить с цитированием
Старый 10.04.2011, 11:04   #5
MasterSporta
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 56
По умолчанию

в скобках GetDC должен быть описатель окна, который можно получить, вызвав функцию CreateWindow():
HWND hwnd;
hwnd = CreateWindow(...)
HDC hdc;
hdc = GetDC(hwnd);
MasterSporta вне форума Ответить с цитированием
Старый 11.04.2011, 12:04   #6
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

hwnd = GetDesktopWindow()......
Акоб вне форума Ответить с цитированием
Старый 11.04.2011, 23:28   #7
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Код:
hdc = GetDC(hwnd);
hwnd у тебя и так должен быть
если хочешь рисовать прямо на экране, то
Код:
hdc = GetDC(0);
насчет цвета: GetPixel возвращает цвет в int'е
int - 4 байта RGBA, т.е. первый байт - красная составляющая, второй байт - зеленая и т.д.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 12.04.2011, 01:16   #8
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Spasibo,vse rabotaet,a kak sdelat' dlya konkretnogo okna?
Pochemu ne rabotaet hdc = GetDC(GetDesktopWindow())?
Акоб вне форума Ответить с цитированием
Старый 12.04.2011, 16:33   #9
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Код:
hdc = GetDC(hwnd);
это и есть для конкретного окна
не знаю, в msdn'е написано что должно работать
всегда делал GetDC(0) :D
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос про getpixel Karyuudo Общие вопросы Delphi 7 16.01.2018 14:11
не правильно работает GetPixel Yokka Общие вопросы .NET 2 17.02.2011 01:08
Нужно ускорить GetPixel snow_max Общие вопросы C/C++ 3 06.02.2010 18:18
Pixels[][] или GetPixel(hdc,x,y) Nick0 C++ Builder 5 12.12.2009 16:09