Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 10.02.05 17:32
Если мне не изменяет память, побитовые операции в VB реализованы через какую-то большую ж..., и поэтому следует использовать вариант с модулями. Но я не уверен, а VB запустить возможности нету, так что лучше проверить быстродействие обоих вариантов и опубликовать.

Ответить

Номер ответа: 5
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #8
Добавлено: 11.02.05 21:49
А фигушки

Ответить

Номер ответа: 9
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #9
Добавлено: 12.02.05 03:21
VB это рульный компиллер, и мусора сует много :) Т.ч. побитово - оно не светит :)

Ответить

Номер ответа: 10
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #14
Добавлено: 17.02.05 08:19
Можно удалить... :)

Ответить

Номер ответа: 15
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #15 Добавлено: 18.02.05 08:00
:)

А нельзя ли еще какой-нибудь компилятор использовать чтобы этот OBJ-файл
скомпиллить?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам