![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]() Цитата:
Ваше желание перенять у кого-то опыт - понятно, но Вы для этого выбрали неподходящий объект. |
|
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
![]()
Не получается сменить часть битмапа корректно.
Код:
alextrof94$gmail.com
|
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
![]()
Так. Немного разобрался... Я присваиваю байту определенное десятичное число, а надо двоичное...т.е. если х=30, то я присваиваю (30%8) 3 (00000011) or row[3](01110000) = (01110011), а надо (00000100 or 01110000 = 01110100), да еще и номер байта неверный.
alextrof94$gmail.com
|
![]() |
![]() |
![]() |
#14 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]() Код:
Номер бита нужно не записывать в битмап, а использовать для сдвига нужного бита, записываемого в битмап. |
![]() |
![]() |
![]() |
#15 |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
![]()
сдвиг? откуда? куда? вот чего я не понимаю.
alextrof94$gmail.com
|
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
![]() Код:
alextrof94$gmail.com
|
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
А Вы нарисуйте на бумаге, как выглядит строка экрана.
По сути - 1 бит на 1 пиксел. Если, скажем, длина строки 640 пискелей, значит, это будет 80 байтов. Грубо изображу приметно так: |bbbbbbbb|bbbbbbbb|bbbbbbbb|bbbbbbb b|bb.... здесь я обозначил буквой b биты, а вертикальная черта - граница между байтами. Всего до многоточия уместилось 4.25 байт, 34 бита-пикселя. Допустим, у нас есть строка изображения: |00101100|00001000|10001001|0001000 0|10.... пусть здесь для определенности 0 - черный, а 1 - белый. и нам нужно закрасить белым 12-й пиксель. Вычисляем 12 div 8 = 1, т.е. нам нужен 1-й байт (байты считаем с 0) |00001000| из этого байта нужен 12 mod 8 = 4, т.е. 4-й бит: |00001000| берем 1, (в двоичном коде 00000001) вдвигаем ее влево на 4, чтобы получить 4-й бит: 00010000, после чего нам нужно совместить новый пиксель с исходным изображением, для чего используем операцию or: |00001000| or |00010000| = |00011000| Я привел только часть формулы, убирать из нее исходный байт нельзя, т.к. мы должны изменить только 1 бит, а остальные 7 должны остаться неизменными. Код:
Последний раз редактировалось s-andriano; 26.05.2013 в 19:19. |
![]() |
![]() |
![]() |
#18 | |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
![]() Цитата:
alextrof94$gmail.com
|
|
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
Честно говоря, не понимаю, что на рисунке.
Я обычно для отладки рисую наклонную линию из точек. Сейчас не помню, давно не имел дела с монохромными изображениями, но, возможно, пиксели нумеруются не с права налево, с а лова направо. На примере наклонной линии это сразу будет заметно. |
![]() |
![]() |
![]() |
#20 | |
Форумчанин
Регистрация: 16.03.2013
Сообщений: 599
|
![]() Цитата:
alextrof94$gmail.com
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск пути в массиве | Niken | Помощь студентам | 9 | 14.03.2013 22:01 |
Поиск пути | Alexandr555 | Общие вопросы C/C++ | 5 | 29.01.2013 20:00 |
поиск пути | Nikita1111 | Visual C++ | 1 | 09.02.2012 00:44 |
Поиск пути | Federal | Помощь студентам | 1 | 19.06.2011 12:24 |
поиск пути | NiCola999 | Общие вопросы C/C++ | 19 | 16.11.2009 09:25 |