Блин… как узнать каждую из составляющих RGB-цыета?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
TNT
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 16.03.2002 (Сб) 19:07
Откуда: Russia

Блин… как узнать каждую из составляющих RGB-цыета?

Сообщение TNT » 29.04.2003 (Вт) 15:36

Я знаю шестнадцатиричое число, как мне из него узнать каждый из цыетов (красный/зелёный/синий)? Подскажите, пожалуйста, какую функцию необходимо использовать…

p.s. Что-то совсем Бэйсик забыл...

Партизан
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 29.04.2003 (Вт) 13:39
Откуда: Дзержинск, Нижегородской обл.

Сообщение Партизан » 29.04.2003 (Вт) 15:46

Функция RGB, подробнее можешь посмотреть в справке....

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.04.2003 (Вт) 15:57

? hex$((&hf655cc) / 65535)
F6
? hex$((((&hf655cc) / 256) and &hff)-1)
55
? hex$(&hf655cc and &hff)
CC
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 29.04.2003 (Вт) 16:00

Код: Выделить всё
Public Function GetByte(ByVal Value As Long, ByVal ByteNr As Long) As Long
    GetByte = Value / 2 ^ ((ByteNr - 1) * 8) And &HFF
End Function


?GetByte(rgb(50,100,200), 3)
200
?GetByte(rgb(50,100,200), 2)
100
?GetByte(rgb(50,100,200), 1)
50

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 29.04.2003 (Вт) 16:50

Код: Выделить всё
Public Function GetRGB(Color As OLE_COLOR, Red, Green, Blue)
    'gets Red, Green, and Blue values of a c
    '     olor
    'I think i saw this on www.PlanetSourceC
    '     ode.com
    TranslateColor Color, 0, Color
    Red = Color And &HFF
    Green = (Color And &HFF00&) / 255
    Blue = (Color And &HFF0000) / 65536
End Function

значения возвращаются в Red, Green, Blue соответственно
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 29.04.2003 (Вт) 18:30

Только что понадобилось...

Код: Выделить всё
Function GetRGB(Color, R,G,B)
    R = Color And &Hff
    G = (Color / &h100) And &hFF
    B = (Color / &h10000) And &hFF
End Function

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 29.04.2003 (Вт) 18:31

Уважаемые!!!

Что ж вы одно и то же тут излагаете каждый на свой лад :) Ну прямо Камасутра какая то получается :)

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 29.04.2003 (Вт) 18:34

RayShade писал(а):Уважаемые!!!
Что ж вы одно и то же тут излагаете каждый на свой лад :) Ну прямо Камасутра какая то получается :)

Да пока я писал, да проверял уже GSerg с опережением в три минуты справился. Не удалять же.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 29.04.2003 (Вт) 18:36

Ну да, а все остальные тоже, значит все это дело писали и с разницей всего в 3 часа запостили? ;) Про тебя то как раз речь не идет :)

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 29.04.2003 (Вт) 18:55

Забей, они так самовыражаются. надо же хоть что-то, что знают сюда запостить.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 07.06.2003 (Сб) 4:21

Код: Выделить всё
Function TakeRGB(ByVal Colors As Long, ByVal Index As Byte) As Long
    IndexColor = Colors
    Red = IndexColor - Int(IndexColor / 256) * 256: IndexColor = (IndexColor - Red) / 256
    Green = IndexColor - Int(IndexColor / 256) * 256: IndexColor = (IndexColor - Green) / 256
    Blue = IndexColor
    If Index = 0 Then TakeRGB = Red
    If Index = 1 Then TakeRGB = Green
    If Index = 2 Then TakeRGB = Blue
End Function

Все понятно?
Не так страшен русский танк, как его пьяный экипаж

Terarist
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 03.02.2003 (Пн) 18:28
Откуда: Russia

Сообщение Terarist » 10.06.2003 (Вт) 17:27

Самый простой и гениальный способ всех времян и народо, метод "тыка"... :)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 100

    TopList  
cron