根据文本框的背景色(RGB)来决定水平滚动条的位置应该怎样写代码呢?

解决方案 »

  1.   

    比如我设置了redsrc,greensrc,bluescr,三个滚动条来改变颜色,文本筐用来显示RGB的颜色。我的问题是知道了文本框的背景色后怎样来决定滚动条的位置呢?
      

  2.   

    可以从背景色算出 R G B 各自的值吧
      

  3.   

    先把颜色分解成RGB值,然后把滚动条设为min=0.max=255,再根据每个RGB值设置每个滚动条。
      

  4.   

    Private Function convVbToWeb(ByVal StrInput As Long) As String
            strTmp = Hex$(StrInput)
            strTmp1 = strTmp
            If Len(strTmp) < 6 Then
                For n = 1 To (6 - Len(strTmp))
                    strTmp1 = strTmp1 & "0"
                Next n
            End If
            
            strHex1 = Left(strTmp1, 2)
            strHex2 = Right(strTmp1, 2)
            strHex3 = Mid(strTmp1, 3, 2)
            convVbToWeb = strHex2 & strHex3 & strHex1
    End FunctionPrivate Function convWebToVB(ByVal StrInput As String) As String
            strTmp1 = StrInput        
            strHex1 = Left(strTmp1, 2)
            strHex2 = Right(strTmp1, 2)
            strHex3 = Mid(strTmp1, 3, 2)
            strTmp = strHex2 & strHex3 & strHex1
            
            convWebToVB = CDec("&H" & strTmp)
    End Function这是以前做的一个将VB的颜色代码转为WEB的颜色代码的函数
    其实也就是十六进制和十进制的转换,你试一下,很容易分别找到RGB的值的.
    例如WEB的颜色表示:#FFCC00其中FF,CC,00就分别为R,G,B的值
      

  5.   

    看不懂 langkew(拉倒) 的回复呀,太复杂了。有没有简单一点的代码可以根据背景色来算RGB各自的值?
      

  6.   

    呵呵,此问题自己给以解决
    Dim CC As Long, CCR As Long, CCG As Long, CCB As Long
    CC = Text3.BackColor
    CCB = CC \ (256 ^ 2)
    bluescr1.Value = CCB
    CCG = (CC - CCB * 256 * 256) \ 256
    greenscr1.Value = CCG
    CCR = CC - CCB * 256 * 256 - CCG * 256
    redscr1.Value = CCR