RGB16

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

RGB16

Сообщение xqz_me » 10.08.2006 (Чт) 16:22

Долго я думал как в 2 байта прописываются 3 цвета... Выяснилось, что это называется RGB16, всего 65К цветов. Объясните, пожалуйста как туда цвета прописываются и как это соответсвует привычному трёхбайтовому RGB?

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

Сообщение GSerg » 10.08.2006 (Чт) 16:25

Есть разные схемы.
Например, 5:6:5 (по битам).
Или там 5:5:5 (один бит не используется).
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 10.08.2006 (Чт) 16:32

Ну вроде мне 5:6:5 нужен... А как это в соотвествие с обычным RGB привести? Грубо говоря, есть некое устройство, которое принимает 2 байта и в соотвествии с этим заполняет свой экран соответствующим цветом. А на компьютере есть 3 ползунка (R, G, B) и shape с соответствующим цветом... Хочется чтобы по значениям этих ползунков формировались 2 байта с нужным цветом... Туманно как-то получилось объяснить...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.08.2006 (Чт) 16:37

2048&*R+32&*G+B
Изображение

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 10.08.2006 (Чт) 16:42

Не очень понял... Во-первых, какие значения теперь могут принимать ползунки (я так понимаю, что уже не от 0 до 255)... А во-врорый, можно чуть поподробней, что это за формула?

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 10.08.2006 (Чт) 16:45

32 на синий и красный и 64 на зелёный?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.08.2006 (Чт) 17:18

Верно.
Изображение

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 10.08.2006 (Чт) 17:38

Код: Выделить всё
Private Sub Command10_Click()
Shape3.FillColor = RGB(Slider1.value / 32 * 255, Slider2.value / 64 * 255, Slider3.value / 32 * 255)
Dim param(16) As Boolean
Dim sendit As String

If (Slider1.value And 2 ^ 0) > 0 Then param(0) = 1
If (Slider1.value And 2 ^ 1) > 0 Then param(1) = 1
If (Slider1.value And 2 ^ 2) > 0 Then param(2) = 1
If (Slider1.value And 2 ^ 3) > 0 Then param(3) = 1
If (Slider1.value And 2 ^ 4) > 0 Then param(4) = 1

If (Slider2.value And 2 ^ 0) > 0 Then param(5) = 1
If (Slider2.value And 2 ^ 1) > 0 Then param(6) = 1
If (Slider2.value And 2 ^ 2) > 0 Then param(7) = 1
If (Slider2.value And 2 ^ 3) > 0 Then param(8) = 1
If (Slider2.value And 2 ^ 4) > 0 Then param(9) = 1
If (Slider2.value And 2 ^ 5) > 0 Then param(10) = 1

If (Slider3.value And 2 ^ 0) > 0 Then param(11) = 1
If (Slider3.value And 2 ^ 1) > 0 Then param(12) = 1
If (Slider3.value And 2 ^ 2) > 0 Then param(13) = 1
If (Slider3.value And 2 ^ 3) > 0 Then param(14) = 1
If (Slider3.value And 2 ^ 4) > 0 Then param(15) = 1

Dim byte1 As Byte
Dim byte2 As Byte

If param(0) = 1 Then byte1 = byte1 Or 2 ^ 0
If param(1) = 1 Then byte1 = byte1 Or 2 ^ 1
If param(2) = 1 Then byte1 = byte1 Or 2 ^ 2
If param(3) = 1 Then byte1 = byte1 Or 2 ^ 3
If param(4) = 1 Then byte1 = byte1 Or 2 ^ 4
If param(5) = 1 Then byte1 = byte1 Or 2 ^ 5
If param(6) = 1 Then byte1 = byte1 Or 2 ^ 6
If param(7) = 1 Then byte1 = byte1 Or 2 ^ 7

If param(8) = 1 Then byte2 = byte2 Or 2 ^ 0
If param(9) = 1 Then byte2 = byte2 Or 2 ^ 1
If param(10) = 1 Then byte2 = byte2 Or 2 ^ 2
If param(11) = 1 Then byte2 = byte2 Or 2 ^ 3
If param(12) = 1 Then byte2 = byte2 Or 2 ^ 4
If param(13) = 1 Then byte2 = byte2 Or 2 ^ 5
If param(14) = 1 Then byte2 = byte2 Or 2 ^ 6
If param(15) = 1 Then byte2 = byte2 Or 2 ^ 7

sendit =  CStr(Hex(byte1)) + CStr(Hex(byte1))

End Sub


Вообщем, ничего умней этого я не придумал, не смейтесь сильно, только непохоже, что это работает... Вопрос звучит так: как имея три ползунка сформировать 2 байта с RGB цветом? :oops:

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 10.08.2006 (Чт) 17:44

Нашёл докуметтацию, как по битам цвета раскладываются

2Bytes:
D15-D11 : Red
D10-D05 : Green
D4-D0 : Blue

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.08.2006 (Чт) 17:46

Чем формула-то не устроила? Вместо всего этого чудища?
Изображение

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 10.08.2006 (Чт) 17:50

Отличительная особенность этого чудища, что оно не работает. :) Можешь объяснить, что в ней (формуле) к чему?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.08.2006 (Чт) 18:50

Арифметику в школе учил? действия "сложение" и "умножение" знаешь?
Ну ей-богу, не понимаю, что в этой формуле можно объяснять.
Изображение

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 10.08.2006 (Чт) 19:13

Всё-всё, извиняюсь за тупость, всё работает, огромное спасибо. :)


Вернуться в Народный треп

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 100

    TopList