用API函数取色后,如何将其分成RGB颜色?

用API函数取色后,如何将其分成RGB颜色?

问题:

用API函数取色后,是一个10进制的数值,如何将其分成RGB颜色?

方法一:

| 用 __ HEX __ 函数将数值转换为 __ 16 __ 进制,然后,每两个切分一下就可以得到 __ RGB __ 数值了
| Function __ C10ToRGB_1(lngColor __ As __ Long) __ As __ String
__ __ __ __ Dim __ strR __ As __ String
__ __ __ __ Dim __ strG __ As __ String
__ __ __ __ Dim __ strB __ As __ String
__ __ __ __ strR __ = __ lngColor __ Mod __ 256
__ __ __ __ strG __ = __ lngColor __ \ __ 256 __ Mod __ 256
__ __ __ __ strB __ = __ lngColor __ \ __ 256 __ \ __ 256


__ __ __ __ C10ToRGB_1 __ = __ strR __ & __ "" __ & __ strG __ & __ "" __ & __ strB
End __ Function

Sub __ test1()
__ __ __ __ Debug.Print __ C10ToRGB_1(33023)
__ __ __ __ Debug.Print __ RGB(255, __ 128, __ 0)
End __ Sub

方法二:

|
【转载】
如果要将VB的颜色转换为COLORREF,需要使用OleTranslateColor函数。例子: __
| __ __ __ __ Private __ Declare __ Function __ OleTranslateColor __ Lib __ "olepro32.dll" __ _ __
__ __ __ __ __ (ByVal __ OLE_COLOR __ As __ Long, __ _ __
__ __ __ __ __ ByVal __ HPALETTE __ As __ Long, __ _ __
__ __ __ __ __ pccolorref __ As __ Long) __ As __ Long __


__ __ __ __ Private __ Sub __ GetRBGFromOLEColour(ByVal __ dwOleColour __ As __ Long, __ r __ As __ Long, __ g __ As __ Long, __ b __ As __ Long) __


__ __ __ __ __ 'pass __ a __ hex __ colour, __ return __ the __ rgb __ components __
__ __ __ __ __ Dim __ clrref __ As __ Long __


__ __ __ __ __ 'translate __ OLE __ color __ to __ valid __ color __ if __ passed __
__ __ __ __ __ OleTranslateColor __ dwOleColour, __ 0, __ clrref __


__ __ __ __ __ b __ = __ (clrref __ \ __ 65536) __ And __ &HFF __
__ __ __ __ __ g __ = __ (clrref __ \ __ 256) __ And __ &HFF __
__ __ __ __ __ r __ = __ clrref __ And __ &HFF __


__ __ __ __ __ Text1(0).Text __ = __ dwOleColour __
__ __ __ __ __ Text1(1).Text __ = __ clrref __


__ __ __ __ End __ Sub __

__ __ __ __ 更完整的例子参考: _ http://www.mvps.org/vbnet/index.html?code/system/oletranslatecolor.htm _

_ _

_ _

_ _

_ _

方法三:

| 用 __ HEX __ 函数将数值转换为 __ 16 __ 进制,然后,每两个切分一下就可以得到 __ RGB __ 数值了

| Sub __ test1()
__ __ __ __ Debug.Print __ C10ToRGB(33023)
__ __ __ __ Debug.Print __ RGB(255, __ 128, __ 0)
End __ Sub

Function __ C10ToRGB(lngA __ As __ Long) __ As __ String
__ __ __ __ Dim __ strR __ As __ String
__ __ __ __ Dim __ strG __ As __ String
__ __ __ __ Dim __ strB __ As __ String
__ __ __ __ Dim __ strHEX __ As __ String


__ __ __ __ strHEX __ = __ Right("00000" __ & __ Hex(lngA), __ 6)


__ __ __ __ 'Debug.Print __ "B" __ & __ Mid(strHEX, __ 1, __ 2)
__ __ __ __ 'Debug.Print __ "G" __ & __ Mid(strHEX, __ 3, __ 2)
__ __ __ __ 'Debug.Print __ "R" __ & __ Mid(strHEX, __ 5, __ 2)


__ __ __ __ strB __ = __ C16To10(Mid(strHEX, __ 1, __ 2))
__ __ __ __ strG __ = __ C16To10(Mid(strHEX, __ 3, __ 2))
__ __ __ __ strR __ = __ C16To10(Mid(strHEX, __ 5, __ 2))


__ __ __ __ C10ToRGB __ = __ strR __ & __ "," __ & __ strG __ & __ "," __ & __ strB
__ __ __ __ 'Debug.Print __ C10ToRGB
End __ Function

'以下函数将 __ 16 __ 进制数值转换为 __ 10 __ 进制数值
Private __ Function __ C16To10(strA __ As __ String) __ As __ Double
__ __ __ __ Dim __ a __ As __ Double
__ __ __ __ Dim __ b __ As __ String
__ __ __ __ Dim __ c __ As __ Double
__ __ __ __ Dim __ l __ As __ Integer
__ __ __ __ Dim __ i __ As __ Long
__ __ __ __ l __ = __ Len(strA)
__ __ __ __ For __ i __ = __ 1 __ To __ l
__ __ __ __ __ __ __ __ b __ = __ Mid(strA, __ i, __ 1)
__ __ __ __ __ __ __ __ Select __ Case __ b
__ __ __ __ __ __ __ __ __ __ __ __ Case __ "A"
__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ b __ = __ 10
__ __ __ __ __ __ __ __ __ __ __ __ Case __ "B"
__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ b __ = __ 11
__ __ __ __ __ __ __ __ __ __ __ __ Case __ "C"
__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ b __ = __ 12
__ __ __ __ __ __ __ __ __ __ __ __ Case __ "D"
__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ b __ = __ 13
__ __ __ __ __ __ __ __ __ __ __ __ Case __ "E"
__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ b __ = __ 14
__ __ __ __ __ __ __ __ __ __ __ __ Case __ "F"
__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ b __ = __ 15
__ __ __ __ __ __ __ __ End __ Select
__ __ __ __ __ __ __ __ c __ = __ c __ + __ b __ * __ 16 __ ^ __ (l __ - __ 1)
__ __ __ __ __ __ __ __ l __ = __ l __ - __ 1
__ __ __ __ Next
__ __ __ __ C16To10 __ = __ c
__ __ __ __ 'Debug.Print __ C16To10
End __ Function


如何取色你可以参考本站
_ http://access911.net/index.asp?board=4&recordid=71FAB31E16DC _

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus