VB从图片框控件取得颜色
来源:岁月联盟
时间:2007-02-01
Private Sub Picture1_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Dim rgb As Long
rgb = Picture1.Point(X, Y)
End Sub
Point方法所返回的值是一个Long类型,它会给用于颜色的RGB值编码。为了能够被有效地使用,这个被编码的值必须被分成独立的R、G、B组件,它们每个都十进制0-255或者十六进制00-FF范围内的的一个整数。如果使用十六进制表示的话,那么Point返回的值就是:
00BBGGRR
使用十六进制标示法会让颜色的提取操作变容易。如果RGB是由Point方法返回的值,那么下面就是这个提取操作如何进行的细节:
red = rgb Mod &H100
green = (rgb / &H100) Mod &H100
blue = (rgb / &H10000) Mod &H100
在这里,最终的MouseMove事件过程显示了出来。要看到这个过程的实际使用,就要创建一个标准的EXE项目,并在表单上放一个图片框和一个文本框(Text Box)。将图像上传到图片框里,然后运行该项目。当鼠标移动到这个图像上的时候,文本框里就会显示指针处像素的RGB值。
Private Sub Picture1_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Dim rgb As Long
Dim r As String, g As String, b As String
rgb = Picture1.Point(X, Y)
r = CStr(rgb Mod &H100)
g = CStr((rgb / &H100) Mod &H100)
b = CStr((rgb / &H10000) Mod &H100)
Text1.Text = "R " & r & ", G " & g & ", B " & b
End Sub
如果你只想看到你点击到的那个像素的RGB值,你可以将相同的代码放到MouseDown事件过程里。
上一篇:在有剪贴板的应用程序间移动数据