Win32 API - как узнать цвет точки в с++ ?

Ответить
Аватара пользователя
Turman

Win32 API - как узнать цвет точки в с++ ?

Сообщение Turman »

пытаюсь написать простенькую игрушку на visual с++ с использованием win api.

подскажите, а как узнать цвет точки с заданными координатами x,y?




Цитата:



это кусок программки- чтобы както обозначить поле деятельности)

LONG WINAPI WndProc(HWND, UINT, WPARAM,LPARAM);

int WINAPI WinMain (HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

HWND hwnd;

MSG msg;

WNDCLASS w;
Аватара пользователя
pva

Re: Win32 API - как узнать цвет точки в с++ ?

Сообщение pva »

Цвет точки на экране (DC) можно узнать функцией GetPixel, но для игрушки (где требуется быстродействие) я бы это не рекомендовал. Лучше держать самому в памяти картинку и брать цвет точки - элемент матрицы, содержащей пиксели (для 8-битного рисунка 1 пиксель - 1 байт). Картинку можно периодически копировать на экран функцией SetDIBitsToDevice. Заодним, если требуется длительная прорисовка, это всё будет работать как двойная буфферизация графики.
Аватара пользователя
Turman

Re: Win32 API - как узнать цвет точки в с++ ?

Сообщение Turman »

спасибо большое- с оптимизацией графики очень полезное сообщение- а то все мерцает..! попробую разобраться с картинкой..

пока только начинаю с этим знакомиться. и картинки надо еще научиться инициализировать и правильно коды цветов задавать и вообще с ними работать...

пс

нашел программу -фейверк. на применение этого метода.

https://www.planet-source-code.com/v...=6331&lngWId=3




если кто-нибудь найдет еще примеры простенькие- скиньте ссылки, сил вупле Изображение
Аватара пользователя
pva

Re: Win32 API - как узнать цвет точки в с++ ?

Сообщение pva »

пример с двойной буфферизацией:
Delphi - Помогите домыслить исходник!


в 8-битром рисунке коды цветов программируются в палитре. Структура BITMAPINFO должна быть дополнена массивом из 256 DWORD-ов, которые задают цвет (RGB). Индекс в массиве соответствует коду цвета на картинке.
Аватара пользователя
pva

Re: Win32 API - как узнать цвет точки в с++ ?

Сообщение pva »

Для Visual не знаю, если чем поможет, то:



C++ Builder: GetPixel(Canvas->Handle,x,y);



Либо по каналам:

TColor c1, c2, c3;

c1 = getRValue(GetPixel(Canvas->Handle,x,y));

c2 = getGValue(GetPixel(Canvas->Handle,x,y));

c3 = getBValue(GetPixel(Canvas->Handle,x,y));
Ответить

Вернуться в «Программирование и базы данных»