注意一点:十六进制转换成十进制的时候,需要前面带0x标记。



;----------互补色和邻近色的函数
GetCompColor(thecolor) ;取得十六进制颜色的互补色
{
    if substr(thecolor, 1,2)="0x"
        thecolor:=substr(thecolor,3,8)
    RcolorDec:=255-toBase("0x" substr(thecolor,1,2),10)  ;必须要带前缀
    GcolorDec:=255-toBase("0x" substr(thecolor,3,2),10)
    BcolorDec:=255-toBase("0x" substr(thecolor,4,2),10)
    
    RcolorHex:=toBase(RcolorDec,16)
    GcolorHex:=toBase(GcolorDec,16)
    BcolorHex:=toBase(BcolorDec,16)
    
    CompColor:=RcolorHex . GcolorHex . BcolorHex
    
    Return %CompColor%
    
}

GetShadowColor(theColor,Lightlevel) ;取得十六制颜色的邻近色,Lightlevel为正数则变淡,为负数时则变浅
{
    if substr(thecolor, 1,2)="0x"
    thecolor:=substr(thecolor,3,8)
    RcolorDec:=toBase("0x" substr(thecolor,1,2),10)+Lightlevel ;必须要带前缀
    GcolorDec:=toBase("0x" substr(thecolor,3,2),10)+Lightlevel
    BcolorDec:=toBase("0x" substr(thecolor,5,2),10)+Lightlevel
    
    RcolorHex:=toBase(RcolorDec,16)
    GcolorHex:=toBase(GcolorDec,16)
    BcolorHex:=toBase(BcolorDec,16)
    
    CompColor:=RcolorHex . GcolorHex . BcolorHex    
    Return %CompColor%
}


;进制转换,如;十六进制转换为十进制则为ToBase(0xD2DFC,10)  ,十进制转换成十六进制则为ToBase(NumDec,16)
ToBase(n,b){  
   return (n < b ? "" : ToBase(n//b,b)) . ((d:=Mod(n,b)) < 10 ? d : Chr(d+55))  
}