| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > getpixel не работает так, как надо |
| Автор: Мозгвыиграл 1.5.2009, 16:17 | ||||||
| Пишу в Borland C++ 3.1 Рисую на экране поле для игры в морской бой с помощью функции. Получаются 2 квадрата цвета 1, разлинованные линиями цвета 3 на клетки 10х10. Далее пытаюсь получить цвет с помощью getpixel, где х,у - координаты курсора мыши, которые я запросил ранее. Проблема в том, что col постоянно принимает значение 0
если сделать так:
при таком действии:
цвет считывается именно такой,какой задан в putpixel |
| Автор: mes 1.5.2009, 16:26 |
| ну так для начала убедитесь, какие координаты у Вас на руках, т.е сравните получаемые координаты мыши, с диапазоном координат сетки. Добавлено через 4 минуты и 21 секунду Ну а вобще такой подход (узнавать цвет с помощью getpixel) не очень красивый. Размер Вашего поля Вам известен, начальные его координаты тоже (иначе как бы смогли нарисовать так что на какую клетку поля указывает мышь, можно легко расчитать и будет намного удобнее, чем зависить от возможностей системы вывода |
| Автор: Мозгвыиграл 1.5.2009, 16:42 |
| координаты я сравнивал - они верные. я думал о таком способе, его я тоже буду использовать но для некоторых задач getpixel все же попроще. да и хочется разобраться, почему работает не так, как надо. |
| Автор: Мозгвыиграл 1.5.2009, 17:52 |
| значение getpixel не зависит от того, каким образом закрашена область экрана? |
| Автор: bsa 1.5.2009, 18:19 |
| Мозгвыиграл, скорее всего, проблема не getpixel, а в координатах, как сказал mes. Поставь перед getpixel функцию putpixel и увидишь, где на самом деле находится курсор. |
| Автор: math64 1.5.2009, 18:28 |
| Если во время вызова getpixel() курсор мыши находится на экране, Вы получаете цвет чёрного кончика указателя мыши. |
| Автор: mes 1.5.2009, 18:32 | ||
"А слона-то и не заметили" © чья то т.е про мышь то и не подумал !! Добавлено через 3 минуты и 21 секунду если причина именно в этом, то вот еще один небезосновательный повод сделать по человечески, расчитывать, основываясь на коордиатах, а не на цвете. |
| Автор: Мозгвыиграл 1.5.2009, 20:16 | ||||||
640*480*16 цветов
вот блин... спасибо, попробую!
вообще, думаю, что куда человечнее было бы делать не в boland c 3.1 |
| Автор: math64 1.5.2009, 20:34 | ||||
Borland C++ 3.1 здесь не помеха:
|
| Автор: Мозгвыиграл 1.5.2009, 21:04 | ||
в принципе да, но тем не менее)
а вот такого нам нельзя делать, ибо не проходили, а если не проходили, значит нельзя использовать. но за код спасибо, интересно) |
| Автор: math64 1.5.2009, 22:14 |
| Вместо enum можно использовать константы, вместо класса - структуру. |