如何获得当前窗口的背景颜色的RGB值大家好, 我希望获得当前窗口背景色的RGB值,请问该如何获得呢?谢谢![最
如何获得当前窗口的背景颜色的RGB值
大家好, 我希望获得当前窗口背景色的RGB值,请问该如何获得呢?
谢谢!
[最优解释]
抱歉,的确是我错了,没有细细研究。正确的应该是这样
Option Explicit
Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
Private Sub Command1_Click()
Dim lngFormBackColor As Long
Dim lngR As Long
Dim lngG As Long
Dim lngB As Long
lngFormBackColor = Me.BackColor
'如果获取的颜色是小于0的,那么他是系统颜色。必须使用GetSysColor转换
'转换的规则是带入系统颜色的低字节,也就是系统颜色编号,来转换
If lngFormBackColor < 0 Then lngFormBackColor = GetSysColor(lngFormBackColor And &HFF&)
lngR = lngFormBackColor Mod &H100
lngG = (lngFormBackColor \ &H100) Mod &H100
lngB = (lngFormBackColor \ &H10000) Mod &H100
Debug.Print "背景色是:&H" & Hex(lngFormBackColor)
Debug.Print "转换为RGB后是:RGB(" & CStr(lngR) & "," & CStr(lngG) & "," & CStr(lngB) & ")"
End Sub
[其他解释]
Option Explicit
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Sub Command1_Click()
Dim lngFormBackColor As Long
Dim lngR As Long
Dim lngG As Long
Dim lngB As Long
lngFormBackColor = Me.BackColor
lngR = lngFormBackColor Mod &H100
lngG = (lngFormBackColor \ &H100) Mod &H100
lngB = (lngFormBackColor \ &H10000) Mod &H100
Debug.Print "背景色是:&H" & Hex(lngFormBackColor)
Debug.Print "转换为RGB后是:RGB(" & CStr(lngR) & "," & CStr(lngG) & "," & CStr(lngB) & ")"
End Sub
Private Sub Form_Load()
Me.BackColor = &H808090
End Sub
[其他解释]
你这个GetPixel没用起来啊
[其他解释]
没有用它
[其他解释]
得到的结果显示 -241 -255 -255 ;
我暂且将RGB(241,255,255)带入,发现与原来的色彩还是不符合啊?
[其他解释]
默认的那个颜色是ARGB,比如:&H80808080,含义如下;
第一个80是透明度,0是完全不透明,FF是完全透明
第二个80是R
第三个80是G
第四个80是B
[其他解释]
你将1楼试下再说吧,严重怀疑你搞的不是同一个窗口的背景色
[其他解释]
老兄弄错了:
Option Explicit
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Sub Command1_Click()
Dim lngFormBackColor As Long
Dim lngR As Long
Dim lngG As Long
Dim lngB As Long
lngFormBackColor = Me.BackColor
lngR = lngFormBackColor AND &HFF
lngG = (lngFormBackColor AND &HFF00) \ 256
lngB = (lngFormBackColor AND &HFF0000) \ 65536
Debug.Print "背景色是:&H" & Hex(lngFormBackColor)
Debug.Print "转换为RGB后是:RGB(" & CStr(lngR) & "," & CStr(lngG) & "," & CStr(lngB) & ")"
End Sub
'这个算法还有点问题,对应windows的系统颜色,其颜色值>&Hffff
ff(如VB窗口的灰色为&H8000000F&)需要用一个函数转换,我忘记用哪个函数了
