用API函数取色后,如何将其分成RGB颜色?

函数

用API函数取色后,如何将其分成RGB颜色?

 

问题:

用API函数取色后,是一个10进制的数值,如何将其分成RGB颜色?
 

方法一:

用 HEX 函数将数值转换为 16 进制,然后,每两个切分一下就可以得到 RGB 数值了
Function C10ToRGB_1(lngColor As Long) As String
    Dim strR As String
    Dim strG As String
    Dim strB As String
    strR = lngColor Mod 256
    strG = lngColor \ 256 Mod 256
    strB = lngColor \ 256 \ 256
    
    C10ToRGB_1 = strR & "_" & strG & "_" & strB
End Function

Sub test1()
    Debug.Print C10ToRGB_1(33023)
    Debug.Print RGB(255, 128, 0)
End Sub

 

方法二:

【转载】
如果要将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

 

方法三:

用 HEX 函数将数值转换为 16 进制,然后,每两个切分一下就可以得到 RGB 数值了

Sub test1()
    Debug.Print C10ToRGB(33023)
    Debug.Print RGB(255, 128, 0)
End Sub

Function C10ToRGB(lngA As Long) As String
    Dim strR As String
    Dim strG As String
    Dim strB As String
    Dim strHEX As String
    
    strHEX = Right("00000" & Hex(lngA), 6)
    
    'Debug.Print "B" & Mid(strHEX, 1, 2)
    'Debug.Print "G" & Mid(strHEX, 3, 2)
    'Debug.Print "R" & Mid(strHEX, 5, 2)
    
    strB = C16To10(Mid(strHEX, 1, 2))
    strG = C16To10(Mid(strHEX, 3, 2))
    strR = C16To10(Mid(strHEX, 5, 2))
    
    C10ToRGB = strR & "," & strG & "," & strB
    'Debug.Print C10ToRGB
End Function

'以下函数将 16 进制数值转换为 10 进制数值
Private Function C16To10(strA As String) As Double
    Dim a As Double
    Dim b As String
    Dim c As Double
    Dim l As Integer
    Dim i As Long
    l = Len(strA)
    For i = 1 To l
        b = Mid(strA, i, 1)
        Select Case b
            Case "A"
                b = 10
            Case "B"
                b = 11
            Case "C"
                b = 12
            Case "D"
                b = 13
            Case "E"
                b = 14
            Case "F"
                b = 15
        End Select
        c = c + b * 16 ^ (l - 1)
        l = l - 1
    Next
    C16To10 = c
    'Debug.Print C16To10
End Function

如何取色你可以参考本站
http://access911.net/index.asp?board=4&recordid=71FAB31E16DC

 

时间: 2024-08-22 15:22:36

用API函数取色后,如何将其分成RGB颜色?的相关文章

求助:c#调用单光子计数器API函数,采集循环随机次后程序死掉

问题描述 大家好,写了个程序调用单光子计数器的API函数,是进行循环n次采集的,但是采集了很多次后就死机了,不知道什么原因?单次采集的过程就是:ushorth=0:C8855Reset(handle);C8855Setup(Gatetime,2,numberofgate);C8855CountStart(handle,0);C8855ReadData(handle,datebuffer,refresult);for(inti=0;i<numberofgate;i++){h=datebuffer[

用Mixer API函数调节控制面板的音频设置

        摘要:本文通过实例代码演示了如何通过Mixer API函数在程序中调节控制面板的音频设备性能的设置.  关键词:Mixer函数,控制面板,音频设备调节 如果你用过Windows的音频设备,比如播放音乐或者录音,聊天,调节麦克或者声音的大小,以及设置静音,都可以通过控制面板中的音频设置面板来调节,你对于下面的两个设置面板肯定不陌生. 播放时调节音量大小和左右声道的控制板,还可以通过它将某个设备设置为静音. 另一个就是录音时控制面板,在这里我们可以选择声音输入设备,以及调节录音时左右

在Visual C#中运用API函数获取系统信息

visual|函数 API函数是构筑Windows应用程序的基石,是Windows编程的必备利器.每一种Windows应用程序开发工具都提供了间接或直接调用了Windows API函数的方法,或者是调用Windows API函数的接口,也就是说具备调用动态连接库的能力.Visual C#和其它开发工具一样也能够调用动态链接库的API函数.本文中笔者就结合实例向大家介绍在Visual C#中如何调用各种返回值的API,该实例就是一个通过API函数调用获取系统信息的程序. 在Visual C#中调用

使用API函数播放MP3等音频文件的类设计(C#)

函数|设计 C#没有提供播放MP3等音频文件的类,要编写播放MP3等音频文件程序,必须使用第三方控件或类.本文使用API函数mciSendString,编写一个播放MP3等音频文件的类. 具体源码如下: 一.使用API函数mciSendString构成的媒体播放类.using System;using System.Runtime.InteropServices; using System.Text; using System.IO ; namespace clsMCIPlay{ /// <su

c#中用windows api函数修改内存数据

这个问题来自伴水的<划拳机器人>,对本文用途感兴趣的朋友请大致阅读伴水的帖子,在帖子中我用这个方法写了剪刀五号,战绩不错,当然属于作弊的方法了. 剪刀五号的思路就是每次出拳,尽量让对方能赢,然后根据一个地址段来扫描内存中对方所赢的局数的保存地址,找到后在得到比赛结果时把内存数据改掉.这个类似以前打单机游戏时用的fpe之类的修改工具.当然,如果对方故意犯规,一局也不赢,你是找不到他的地址的,这样可以通过正常途径来获取胜利. 把剪刀五号核心代码简化后,主要为三个api函数 OpenProcess,

Win2K下的Api函数的拦截

这么多高手在这里,哎,小弟愿意向各位高手学习. Api拦截并不是一个新的技术,很多商业软件都采用这种技术.对windows的Api函数的拦截,不外乎两种方法,第一种是Mr. Jeffrey Richter 的修改exe文件的模块输入节,种方法,很安全,但很复杂,而且有些exe文件,没有Dll的输入符号的列表,有可能出现拦截不到的情况.第二种方法就是常用的JMP XXX的方法,虽然很古老,却很简单实用. 本文一介绍第二种方法在Win2k下的使用.第二种方法,Win98/me 下因为进入Ring0级

windows常用 API函数

系统API查询 http://www.vbgood.com/api.html http://hi.baidu.com/3582077/item/9cc3483b581f53c5392ffae3 第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄, 这个函数的定义是这样的 HWND WINAPI FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName);第一个参数填窗口的类名,第二个填窗口的标题名,其实是不需要同时

windows常用API函数

系统API查询 http://www.vbgood.com/api.html http://hi.baidu.com/3582077/item/9cc3483b581f53c5392ffae3 第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄, 这个函数的定义是这样的 HWND WINAPI FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName);第一个参数填窗口的类名,第二个填窗口的标题名,其实是不需要同时

《C++ 黑客编程揭秘与防范(第2版)》—第6章6.6节调试API函数的使用

6.6 调试API函数的使用C++ 黑客编程揭秘与防范(第2版)Windows中有些API函数是专门用来进行调试的,被称作Debug API,或者是调试API.利用这些函数可以进行调试器的开发,调试器通过创建有调试关系的父子进程来进行调试,被调试进程的底层信息.即时的寄存器.指令等信息都可以被获取,进而用来分析. 上面介绍的OllyDbg调试器的功能非常强大,虽然有众多的功能,但是其基础的实现就是依赖于调试API.调试API函数的个数虽然不多,但是合理使用会产生非常大的作用.调试器依赖于调试事件