几个颜色转换函数源码

 

VB的几个颜色转换函数源码

'把ARGB转RGB。
Public Function ARGBToRGB(ByVal Color As Long) As Long
    Dim R As Long, G As Long, B As Long
    R = (Color And &HFF0000) \ &H10000
    G = Color And &HFF00&
    B = (Color And &HFF&) * &H10000
    ARGBToRGB = R Or G Or B
End Function

'----------RGB转24位色--------------------
Private Function RGB(ByVal Red As Byte, ByVal Green As Byte, ByVal Blue As Byte) As Long
RGB = Red + Green * 256 + Blue * 65536
End Function

'将一种颜色分为三色
Public Function GetRGB(ByVal Color As Long, ByRef Red As Integer, ByRef Green As Integer,  ByRef Blue As Integer) As Boolean                     
    Red = Color And &HFF '拆分颜色
    Green = (Color And 65280) \ 256
    Blue = (Color And &HFF0000) \ 65536
End Function

 

'将RGB颜色转换成ARGB格式
Public Function RGBToARGB(ByVal Color As Long, Optional ByVal Alpha As Long = &HFF000000) As Long
    'RGB 颜色 =              B*256*256+G*256+R,=00BbGgRr
    'Argb颜色 =A*256*256*256+R*256*256+G*256+B,=AaRrGgBb
    RGBToARGB = Alpha Or ((Color And &HFF0000) \ &H10000) Or (Color And &HFF00&) Or ((Color And &HFF&) * &H10000)
End Function

'-----------ARGB转32位色。写法1--------------------
Private Function ARGB(ByVal Alpha As Byte, ByVal Red As Byte, ByVal Green As Byte, ByVal Blue As Byte) As Long
    Dim RGBColor As Long, NewAlpha As Long
    RGBColor = Red + Green * 256 + Blue * 65536
    NewAlpha = "&H" & Hex(Alpha) & "000000"
    ARGB1 = NewAlpha Or ((RGBColor And &HFF0000) \ &H10000) Or (RGBColor And &HFF00&) Or ((RGBColor And &HFF&) * &H10000)
End Function
'-----------ARGB转32位色。写法2--------------------
Private Function ARGB(ByVal Alpha As Byte, ByVal Red As Byte, ByVal Green As Byte, ByVal Blue As Byte) As Long
    Dim RGBColor As Long, NewAlpha As Long, i As Long, lMask As Long
    RGBColor = Red + Green * 256 + Blue * 65536
    NewAlpha = Alpha
    '--------------------进行移位运算,左移24位----------------------
    For i = 1 To 24
        lMask = 0
        If (NewAlpha And &H40000000) <> 0 Then lMask = &H80000000
        NewAlpha = (NewAlpha And &H3FFFFFFF) * 2 Or lMask
    Next
    ARGB = NewAlpha Or ((RGBColor And &HFF0000) \ &H10000) Or (RGBColor And &HFF00&) Or ((RGBColor And &HFF&) * &H10000)
End Function

'-----------ARGB转32位色。写法3--------------------
Private Function ARGB(ByVal Alpha As Byte, ByVal Red As Byte, ByVal Green As Byte, ByVal Blue As Byte) As Long
    Dim A As String, R As String, G As String, B As String
    If Len(Hex(Alpha)) < 2 Then A = 0 & Hex(Alpha) Else A = Hex(Alpha)
    If Len(Hex(Red)) < 2 Then R = 0 & Hex(Red) Else R = Hex(Red)
    If Len(Hex(Green)) < 2 Then G = 0 & Hex(Green) Else G = Hex(Green)
    If Len(Hex(Blue)) < 2 Then B = 0 & Hex(Blue) Else B = Hex(Blue)
    ARGB = "&H" & A & R & G & B
End Function

'取得任意颜色的反色
Public Function OppColor(ByVal Color As Long) As Long    

Dim Red As Integer, Green As Integer, Blue As Integer
 Red = Color And &HFF '拆分颜色
    Green = (Color And 65280) \ 256
    Blue = (Color And &HFF0000) \ 65536
   
    Red = 255 - Red
    Green = 255 - Green
    Blue = 255 - Blue

    If Red < 0 Then Red = 0
    If Red > 255 Then Red = 255

    If Green < 0 Then Green = 0
    If Green > 255 Then Green = 255

    If Blue < 0 Then Blue = 0
    If Blue > 255 Then Blue = 255
   
    OppColor = RGB(Red, Green, Blue) '得到反色
   
End Function

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ESC:显示或隐含扩展输入框 F1: 显现帮助窗口 ESC:关闭帮助窗口 C: 清输入框和输出值 AU:所见即得计算值 (hd:关闭所见即得功能) MC:保留 M+: 累加累减寄存器 (鼠标右击转换累加或累减) Mn:寄存器,可以存储十组数据 (在Mn状态下,空格清空输入框, 拖曳数据,自动保存->M0~M9) (在M0~M9状态下,空格清空输入 框,回车,自动清除->Mn) ≈≈扩展部分≈≈ 复原: 表达式宽(685)、显示宽度(14)、 小数位数(6)复原 以及所有数据初始化 表达式宽: 表达式宽度:扩展输入表达式的宽度 显示宽度:输入输出数字精度 位数:指定输出小数位数 (超出部分截断) 调色板:$000000~$ffffff,BGR (':'左右分别是底色和文字本色) 进制转换: toHex:输入十进制,输出十六进制 toBin:输入十进制,输出二进制 toDec:$输入十六进制,输出十进制 toDec:b输入二进制,输出十进制 数学公式: mod:AmodB(得余数。输入A、B为十进 制,输出十进制) div:AdivB(A整除B,得整数。输入A、 B为十进制,输出十进制) X^:A的B次方(2X^3=8) 2X^:2的B次方(2X^3=8) logN:X^的逆函数(8logN2=3) logN2:2X^的逆函数(8logN2=3) 逻辑运算: (and):求与 (or):求或 (not):求非 (Xor):求异或(相异为1,相同为0) 转换函数: sin()、cos()、tg(): exp():eX^A(e=2.7182818284 eX^1) ln():exp()的逆函数 Char():输入字符,输出ASCII对应码 (Char(a)=97) Byte():输入ASCII对应码,输出字符 (Byte(30)='0') 使用技巧: 各输入框支持鼠标拖曳功能,用鼠标 划过选定复制内容,进行拖曳。放落后 落点在光标所在处 delphi 源码开放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值