VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 如何读去picture内任意一点的颜色值!
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:11610, 日期:2000-11-01
主题: 如何读取 Picture 内任何一点的颜色值?
来源:
版本:VB6 / VB5 / VB4-32 / VB4-16 / VB3

--------------------------------------------------------------------------------

参考资料:

Rod Stephens, "Ready-to-Run Visual Basic Code Library"
Microsoft Press, "Microsoft Visual Basic 6.0 Programmer注释:s Guide"

前言:

Visual Basic 对于定义色彩有二种方法:

1、使用定义的常数:

      如色彩属性的设定为红色,可以常数 vbRed 表示

2、直接使用色彩设定:

      以十六进位数来指定色彩,方式为: &HBBGGRR&

      BB是指定蓝色的部分,GG是指绿色,RR则为指定红色。
      每个部分都是两位从 00 到 FF 的十六进位数。中间值为 80。
      因此,以下的数值将指定灰色,它属于三种色彩的中间部分:&H808080&

上述二种色彩表示方式对应如下:

色彩常数 值 中文描述 英文描述 色块样板
vbRed &H0000FF& 红色 Red  
vbGreen &H00FF00& 绿色 Green  
vbBlue &HFF0000& 蓝色 Blue  
vbBlack &H000000& 黑色 Black  
vbYellow &H00FFFF& 黄色 (红+绿) Yellow  
vbMagenta &HFF00FF& 洋红色 (红+蓝) Magenta  
Cyan &HFFFF00& 青绿色 (绿+蓝) Cyan  
vbWhite &HFFFFFF& 白色 White  

上述第 2 种方法,可以衍生出『若知道一值,则如何反算其红、绿、蓝颜色值各为何?』的问题。其计算方法则是反其道而行,计算顺序为首先计算蓝色值、其次为绿色值、最后为红色值。写成模块如下:

Private Sub ReturnRGB(ByVal lngColor As Long, intRed As Integer, intGreen As Integer, intBlue As Integer)
    intRed = lngColor Mod 256
    intGreen = (lngColor \ 256) Mod 256
    intBlue = lngColor \ 256 \ 256
End Sub