|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.08.2011, 09:32 | #1 |
Delphi, учу С
Форумчанин
Регистрация: 20.10.2010
Сообщений: 178
|
Неверно распознается цвет пикселя
Есть картинка, загруженная в TImage, изначальный формат .bmp.
Требуется вычислить код определенного пикселя, в моем случае по координатам [684, 6]. Код:
А пиксель на самом деле синий, с кодом #0008CD (определено в фотошопе), а красного на картинке нет вообще. Почему так? |
30.08.2011, 11:18 | #2 |
Форумчанин
Регистрация: 01.12.2009
Сообщений: 569
|
Бывает штука DIB, где порядок цвета не RGB а BGR. И исчо может руки такие.
|
30.08.2011, 11:27 | #3 |
Delphi, учу С
Форумчанин
Регистрация: 20.10.2010
Сообщений: 178
|
Была мысль, что порядок BGR, и получается тоже синий, но не точно такой же, что странно. Но очень близкий.
В принципе делфи воспринимает его как синий, так что если не вдаваться в дизайнерские подробности, то всё ок )) Но всё-равно интересно. |
02.09.2011, 20:09 | #4 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
мне вот еще интересно, если цвет задается с помощью FF FF FF, то какого "$00 EC 0E 01" ?
допустим три из этих пар символов задают цвет RGB (BGR), зачем тогда четвертая пара? не прозрачность же она задает... |
02.09.2011, 20:13 | #5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
если битмап 24-битный то она вообще откидывается.
а если 32-битный формата RGBX то просто не используется. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
02.09.2011, 20:14 | #6 |
Форумчанин
Регистрация: 01.12.2009
Сообщений: 569
|
Именно прозрачность. Так сказать Альфа-канал. Даже если не нужен альфа-канал, то всё равно 24 битный цвет пакуется в 32 бита, где старший байт ничего не значит.
Таково устройство процессоров x86 (32 битных), которые шустрее работают с 32 битными данными чем, скажем, с 8 битными. Последний раз редактировалось notHaker; 02.09.2011 в 20:17. |
02.09.2011, 20:28 | #7 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
никогда не поверю, что у цвета может быть прозрачность о_О
у пикселя - да, но не у цвета... "откидывается", "не используется", "Таково устройство процессоров"... я понял. проще умножить на 10, чем на 9, да? кстати, про 32-битный битмап... на каждый пиксел такого битмапа приходится 4 byte по логике, 3 из них - это RGB, а четвертый - Alpha. (или нет?) но на практике у меня среднее значение альфы не приводило к полупрозрачности пиксела битмапа... pf32bit. изменял через ScanLine. измененный битмап отрисовывал на форме - Cnvas.Draw . что не так? |
02.09.2011, 20:57 | #8 | |
Форумчанин
Регистрация: 01.12.2009
Сообщений: 569
|
Цитата:
|
|
02.09.2011, 23:33 | #9 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
да ну?
а почему я тогда на Canvas.Draw PNG спокойно отрисовываю с любой прозрачностью? PNG с прозрачностью рисует, а Bitmap - нет. |
03.09.2011, 00:13 | #10 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
ну PNGImage на это рассчитано естественно.
битмапы в GDI считаются(если 32 бита) как RGBX. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как определить цвет пикселя? | prw07 | Мультимедиа в Delphi | 1 | 31.08.2010 13:06 |
Узнать цвет пикселя. | sergeyrulit | Общие вопросы Delphi | 6 | 02.07.2010 11:55 |
Как определить цвет пикселя? | zotox | Общие вопросы Delphi | 2 | 15.11.2009 19:05 |
Цвет пикселя неактивного окна. | GrindeX | Общие вопросы Delphi | 2 | 08.11.2009 16:10 |
определить цвет каждого пикселя | Dimarik | Общие вопросы C/C++ | 4 | 17.08.2009 16:21 |