Как разложить цвет на составляющие

Цвет кодируется следующим образом:

red + 256*green + 65536*blue
Разложить цвет на составляющие можно следующим образом:
Red = Color And 255
Green = Color \ 256 And 255
Blue = Color \ 65536 And 255
Но это можно сделать и без вычислений. Дело в том что цвет состоит из трех последовательно стоящих байтов, которые вместе представляют собой длинное целое число. Так почему бы это число напрямую не разделить на байты:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(pDst As Any, pSrc As Any, ByVal ByteLen As Long)

Private Type RGBType
red As Byte
green As Byte
blue As Byte
End Type

Private Sub Command1_Click()
Dim ColorRGB As RGBType
Dim a As Long
' Составляем цвет
a = RGB(20, 76, 32)
' Копируем переменную a в переменную ColorRGB
CopyMemory ByVal VarPtr(ColorRGB), ByVal VarPtr(a), 3
' Выводим результат
MsgBox ColorRGB.red
MsgBox ColorRGB.green
MsgBox ColorRGB.blue
End Sub
Hosted by uCoz