Рульное деление R G B vs нечитаемые области мозга

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Рульное деление R G B vs нечитаемые области мозга

Сообщение Proxy » 22.09.2008 (Пн) 21:09

Поискал на форуме, нашёл только тупое разделение с помощью целочисленного деления и остатка. Это очень тормозно.
Вот примерно то, что я применял ранее:

Код: Выделить всё
Type userColortype
red as byte
green as byte
blue as byte
End Type
Dim userColor as userColortype


или просто массив userColor() as byte, не помню точно,
НО забытость далее:
далее я точно помню, что каким-то образом в одно действие присваивал переменной (ну или массиву, не помню) userColor long`овое значение цвета и далее оставалось только прямо к байтовым компанентам цвета обращаться. Вот только непомню, каким образом побайтно копировал цвет из переменной Long`ового типа в переменную моего типа (ну или массив, не помню).
Напомните, кто догадывается о чём я.
Follow the white rabbit.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Рульное деление R G B vs нечитаемые области мозга

Сообщение Хакер » 23.09.2008 (Вт) 0:15

Ты о And, Or и битовых свдигах, эмулируемых делением и умножением.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Рульное деление R G B vs нечитаемые области мозга

Сообщение pronto » 23.09.2008 (Вт) 2:02

Код: Выделить всё
Private Type UserColor
   r As Byte
   g As Byte
   b As Byte
   a As Byte
End Type

Private f As UserColor
Private v As Long

Private Declare Sub GetMem4 Lib "msvbvm60" (ByVal pSrc As Long, ByVal pDst As Long)

Option Explicit

Private Sub Command1_Click()
   v = RGB(255, 0, 128)
   
   [b]GetMem4[/b] ByVal VarPtr(v), ByVal VarPtr(f) ' <<< Оно?
   
   Debug.Print "red   - " & f.r
   Debug.Print "green - " & f.g
   Debug.Print "blue  - " & f.b
   Debug.Print "alpha - " & f.a
End Sub
O, sancta simplicitas!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Рульное деление R G B vs нечитаемые области мозга

Сообщение Хакер » 23.09.2008 (Вт) 2:25

Это катастрофической силы кошмарный код.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Рульное деление R G B vs нечитаемые области мозга

Сообщение pronto » 23.09.2008 (Вт) 2:58

Что кошмарнее?

GetMem4 ByVal VarPtr(v), ByVal VarPtr(f)

или
CopyMemory?

или
c = rgb(255, 0, 128)
R = c& And &HFF&
G = (c& And &HFF00&) \ &H100&
B = (c& And &HFF0000) \ &H10000
O, sancta simplicitas!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Рульное деление R G B vs нечитаемые области мозга

Сообщение alibek » 23.09.2008 (Вт) 8:30

LSet
Lasciate ogni speranza, voi ch'entrate.


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

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

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

    TopList