Страница: 1 |
Страница: 1 |
Вопрос: Как получить RGB цвет пикселя?
Добавлено: 09.02.05 18:29
Автор вопроса: KAM | ICQ: 190197618
Имееться три переменных:
R,G и B.
Как мне записать в переменную R значение красного цвета пикселя, в переменную G значение зеленого цвета того же пикселя, а в переменную B значение синего цвета этого же пикселя. Значения должны соответстовать значениям RGB палитры.
Не уверен, что я все понятно обьснил, но думаю принцип вы поняли :)
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 09.02.05 19:21
Пусть c - цвет пиксела, тогда
r = c mod 256
g = (c\256) mod 256
b = c\65536
Номер ответа: 2
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #2
Добавлено: 10.02.05 14:28
Лучше так:
R = C And &HFF
G = (C And &HFF00) \ 256
B = (C And &HFF0000) \ 65536
А еще лучше вместо целочисленного деления применить побитовый сдвиг, если бы можно было.
Номер ответа: 3
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #3
Добавлено: 10.02.05 15:52
Побитовый сдвиг - это и есть целочисленное деление. На степени двойки. Что в лоб, что по лбу
Номер ответа: 4
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #4
Добавлено: 10.02.05 17:32
Если мне не изменяет память, побитовые операции в VB реализованы через какую-то большую ж..., и поэтому следует использовать вариант с модулями. Но я не уверен, а VB запустить возможности нету, так что лучше проверить быстродействие обоих вариантов и опубликовать.
Номер ответа: 5
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #5
Добавлено: 10.02.05 17:34
Если нужно быстродействие, лучше просто на ассемблере копировать 3 байта из соответствующих мест цвета непосредственно по адресам результатов. Типа
ParseRGB(ByRef c As Long, ByRef r As Byte, ByRef g As Byte, ByRef b As Byte)
Номер ответа: 6
Автор ответа:
KAM
ICQ: 190197618
Вопросов: 25
Ответов: 97
Профиль | | #6
Добавлено: 11.02.05 20:35
Всем большое спасибо.
Номер ответа: 7
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #7
Добавлено: 11.02.05 20:41
Думаю, что заменить целочисленное деление и умножение на степень двойки на побитовый сдвиг должен компилятор. Оптимизация такая.
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #8
Добавлено: 11.02.05 21:49
А фигушки
Номер ответа: 9
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #9
Добавлено: 12.02.05 03:21
VB это рульный компиллер, и мусора сует много Т.ч. побитово - оно не светит
Номер ответа: 10
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #10
Добавлено: 12.02.05 04:25
Что самое обидное-то, что компилятор от Си, но степень, в которой он ничего не желает оптимизировать, просто удручает. Маза посмотреть каким нибудь WinSpyем, какие API используют для общения vb6.exe и c2.exe, перехватить оттранслированный код и компилять на нормальном компиляторе, вот бы было бы здорово!
Номер ответа: 11
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #11
Добавлено: 12.02.05 12:20
А че, других компиляторов нету? Ну типа есть у меня прога VB6, нужно скомпилить на нормальном компиляторе. Не из VB, а из специализированной проги.
Номер ответа: 12
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 12.02.05 13:31
Ну да чтобы VB6 программу откомпилить - такого чуда не наблюдал...
Номер ответа: 13
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #13
Добавлено: 17.02.05 07:54
люди, можно ль чего-нибудь хорошего сделать с OBJ файлом программы
написанной на VB6?
Т. е. я получил его, но тем же MASM32 он не компилится
Если можно, то скажу как это сделать без лишнего гимора
Номер ответа: 14
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #14
Добавлено: 17.02.05 08:19
Можно удалить...
Номер ответа: 15
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #15
Добавлено: 18.02.05 08:00
А нельзя ли еще какой-нибудь компилятор использовать чтобы этот OBJ-файл
скомпиллить?