vb 屏幕区域截图计算
来源:百度知道 编辑:UC知道 时间:2024/06/16 22:57:37
下面这个程序是我找的灰化过程,如果您不想自己弄带厥值的,就用它也行。有个小问题,不知道为什么我这个小程序非要用command_click激活才能有结果,换成form_load就不行,报错,说是r值不对,真的不明白,大大顺便帮忙解释下
Private Sub Command1_Click()
For i = 1 To Picture1.ScaleHeight Step 15
For j = 1 To Picture1.ScaleWidth Step 15
aaa = Picture1.Point(j, i)
R = (aaa Mod 256) '取得红色值
G = (aaa Mod 65536) \ 256 '取得绿色值
B = (aaa Mod 16777216) \ 65536 '取得蓝色值
bbb = R / 3 + G / 3 + B / 3 '取得灰度值
Picture2.PSet (j, i), RGB(bbb, bbb, bbb)
Next j
Next i
endsub
★★★★★
①
这个有些麻烦,简单的方法就是要用时就GetPixel (先GetDC)
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
dim hdc
hdc=GetDC(hwnd)
color=GetPixel(50,50,hdc)
'得到color了,自己处理吧
ReleaseDC hwnd,hdc
②
我测试了,没有说R不对啊。可以详细地说说吗?
试试看在你的代码之前加上
Picture2.AutoRedraw = true
Dim r,g,b,aaa,bbb
这样改即可:
Private Sub Form_load()
picture1.AutoRedraw=true
picture2.AutoRedraw=true
For i = 1 To Picture1.ScaleHeight Step 15
For j = 1 To Picture1.ScaleWidth Step 15
aaa = Picture1.Point(j, i)
R = (aaa Mod 256) '取得红色值
G = (aaa Mod 65536) \ 256 '取得绿色值
B = (aaa Mod 16777216) \ 65536 '取得蓝色值
bbb = R / 3