首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

worldy大侠希望能再请问您之前的有关问题,非常感谢!

2013-07-01 
worldy大侠希望能再请教您之前的问题,非常感谢!!worldy大侠希望您好,我以为保存的是三维数组,搞了好久还是

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

热点排行