worldy大侠希望能再请教您之前的问题,非常感谢!!
worldy大侠希望您好,
我以为保存的是三维数组,搞了好久还是不知道如何把三维数组写入EXCEL,后来发现imgdata是一维的数组呢~~
-------------------------------------------------
ScreenDAC = CreateDCA("DISPLAY", vbNullString, vbNullString, 0) '请教您这个是数组吗?要是能直接提取出来作色值数组就好啦!!不知道能不能实现呢?
ColorValue = GetPixel(ScreenDAC, x, y) '获取色值
上面两句已经可以实现屏幕找图功能了,优点是代码很简单简洁,缺点也很明显就是速度很慢~!!
下面这句将单元格底色变成该色值的颜色
Cells(y, x).Interior.Color = ColorValue
--------------------------------------------------
请教您如何把您上次教的代码获取的imgdata数组里的RGB色值转化为上面这种色值呢?原因是我希望能让RGB色值“可视化”一些,把桌面绘制到ECCEL里 :)
[解决办法]
给你个获取每点颜色的函数,结合先前的程序使用
此处的x y,图像是由上到下,由左到右
Private Function GetPixColor(X As Long, Y As Long, ImgData() As Byte, BmpHeader As BITMAPINFOHEADER) As Long
Dim R As Long, G As Long, B As Long
Dim P As Long
Dim mLineBytes As Long, mLineBytesA As Long, mBytesPerPix As Long
With BmpHeader
'计算每行字节数
mLineBytes = .biWidth * .biBitCount / 8
If mLineBytes Mod 4 <> 0 Then
mLineBytesA = ((mLineBytes + 3) \ 4) * 4
Else
mLineBytesA = mLineBytes
End If
mBytesPerPix = .biBitCount / 8 '每像素字节数
P = (.biHeight - 1 - Y) * mLineBytesA + X * mBytesPerPix
GetPixColor = RGB(ImgData(P + 2), ImgData(P + 1), ImgData(P))
End With
End Function
[解决办法]
代码要去理解,我打错了一个,你也跟着我错
上面的 BITMAPINFO.bitmapinfoheader改为
bitmapInfo.bmiHeader