 |
Windows采用的颜色方案为RGB(红绿蓝),使用一个长整数表示颜色(通常称为COLORREF类型)。在VC++中使用RGB宏,在VB中使用RGB函数可以将一个颜色的3个分量转换为一个长整型的数。之所以使用RGB宏或RGB函数,只是为了便于记忆。
Windows还定义了一些系统颜色,如窗口标题颜色,在VC中可以GetSysColor函数获得系统颜色的RGB值。在VB中定义了一些系统颜色常数,这样在设置颜色有关的属性时就不需要调用GetSysColor函数,直接赋值就可以了。VB的颜色类型在VC++中被称为OLECOLOR。在VC中,如果要将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
相关问题:
QA000054 "请问如何在VB中取得一个像素的R,G,B 各个分量"
QA000845 "如何将CMYK的颜色构成转化为RGB的颜色构成"
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, Visual Basic, VB, 图形、图象, picture, graph, image, draw。
|