我需要在屏幕上找到一些图像。 我决定做一个简单的比较循环。 我发现这个答案似乎很有帮助并编写了下一个代码: 两个问题: 我的屏幕分辨率是 1280x800=1 024 000 px, MyBMInfo.bmiHeader.biSizeImage等于 4 096 000。是 rgb a还是什么? 主要 ...
我需要在屏幕上找到一些图像。 我决定做一个简单的比较循环。 我发现这个答案似乎很有帮助并编写了下一个代码: 两个问题: 我的屏幕分辨率是 1280x800=1 024 000 px, MyBMInfo.bmiHeader.biSizeImage等于 4 096 000。是 rgb a还是什么? 主要 ...
我正在使用此代码来捕获屏幕和 cursor。 屏幕截图完美运行,但在屏幕截图超过 8 分 30 秒后总是失败。 8 分 30 秒后,GetDIBits 开始返回 0。我正在使用 windows 10 专业版的 64 位机器上运行它。 如果我删除 cursor 捕获代码,此问题似乎不会出现。 ...
我正在使用此代码来捕获屏幕 + cursor: 由于某种原因,当 cursor 是 I 型光束(文本光标)时,它应该位于的图像区域全是透明的。 RGB 信息在那里,但 alpha 位是0 。 (右侧图像是手动将所有像素 alpha 位设置为 255 后帧的外观)。 如果 cursor 是箭头 ...
根据我对此功能的经验,我对GetDiBits有一些疑问。 我错误地创建了一个比我需要的大两倍的位图: 我没有注意到因为代码的下一部分有效。 我BitBlt屏幕的一部分在这个位图的一半: 然后我得到相应的数组: 当我将所有这些数据发送到另一台计算机时,图像完全正确(没有 ...
MSDN表示,在调用此函数之前,不应将GetDiBits使用的位图选择为DC。 但是根据我的经验(使用BitBlt ),我知道除非选择位图,否则无法绘制位图。 GetDiBits如何规避这一点? 我可以仅使用未选择的新创建的位图作为此函数的参数吗? GetDiBits以及C ...
我今天遇到一个非常奇怪的问题。 在带有MFC项目的VC6上运行以下代码,它是黑屏,如果我删除注释,它可以完美运行并显示桌面图片。 但是这些代码是在无限循环中执行的,因此我尝试减少内存复制和内存消耗,例如BitBlt和CreateCompatibleBitmap等。我不了解我的程序与这些注释代 ...
我调用GetDIBits ,它在32位上完美运行,但在64位上失败。 尽管句柄的值不同,但bitmapinfo结构的内容是相同的。 这是我可以用来重现错误的最小(至少是结构稍微)代码示例。 我使用Delphi 10 Seattle Update 1进行了测试,但是即使使用其他Delph ...
尝试将窗口的屏幕截图作为位图。 下面的代码创建一个适当大小的位图,但是每个像素都是黑色的。 换句话说,GetDIBits将imageBuffer设置为全0。 发布的代码为每个打开并在屏幕上可见的记事本保存一个位图。 没有一个断言失败。 省略了BITMAPFILEHEADER和实 ...
我正在尝试创建一个等效于Windows API GetPixel()函数的函数,但是我想创建屏幕的位图,然后读取该缓冲区。 这就是我所拥有的(大多数副本是从Google搜索中粘贴过来的),当我运行它时,它只会打印出0。 我认为我大部分都正确,而且我的问题是我不知道如何读取BYTE变量。 ...
我想使用GetDIBits在C ++中加载位图。 这是我正在使用的代码: 但是由于某些原因,看来bits是NULL 。 我的代码有问题吗? 我之前使用GetBitmapBits ,然后bits不为NULL 。 ...
GetDIBits()没有将正确的BGR值传递给COLORREF数组: bitmap.bmp是一个全蓝色(RGB(0,0,255))10x10 24位位图文件。 输出的前几行如下所示: 0 0 255 255 0 0 0 255 0 0 0 255 而且, ...
以下使用GetDIBits()的代码没有给我想要的输出: (gBit.bmp是1366x768位图,完全是白色的。) 我是C ++的新手,几乎不了解如何使用此功能。 我期望对于所有大于或等于0且小于或等于3 * 1366的i,p [i]均为255,因为gBit的每个像素都是白色, ...
前段时间我问了一个关于将hwnd保存到ppm文件的问题。 感谢stackoverflow用户,我已经解决了我的问题。 我的工作正常,但我仍然有一个问题:红色和蓝色是倒置的。 代码和我之前的问题在这里: hwnd到ppm问题 这是位图信息数据: 我用Google搜索,似乎问 ...
我有一个将hwnd保存到ppm文件中的功能。 此功能受msdn示例的启发。 msdn示例和我的函数都可以,但是...我有一个问题... 但首先,这是功能。 所以这是结果图像: http://imageshack.us/photo/my-images/853/test2ne ...
我编写了以下代码(C ++ Win32)来捕获游戏窗口屏幕并从图像中获取像素颜色数组。 函数autoB()完成这项工作。 然后我将结果数组绘制到我的窗口中,目视检查我得到了什么。 问题是这个程序在我启动计算机后只运行一次,在第一次“缓存”从游戏中获取的第一个截图后,我总是得到相同的 ...
我可以使用GetDIBits加载“当前窗口”的“颜色”内容,但是我不知道如何从某个位置加载图像的颜色。 有人可以告诉我该怎么做吗? 我这样将颜色加载到数组上 我是Windows编程的新手,只想知道如何将图像加载到hdc。 正如雷蒙德(Raymond)所建议的那样,我已经将 ...
我正在尝试使用GetDIBits函数获取位图的像素。 由于我没有研究过Windows GDI / API,我对第一个参数HDC非常不确定。 我在SO和网上搜索了无数帖子,但是在这个特定情况下无法找到有关如何初始化HDC的信息或示例。 这是我读取像素值的距离: 解: 在搜索完网 ...
我正在用C ++构建一个dll,以导入到VB项目中。 该dll公开了一个函数,该函数将通过Win Shell提取指定文档的预览图像,然后将其写入要由VB应用程序使用的缓冲区中。 到目前为止,我能够毫无问题地获得HBITMAP句柄。 我还能够使用GetBitmapBits函数提取位图数据 ...
我刚刚意识到GDI中有BITMAP ,然后您执行GetObject(hBmp, sizeof(BITMAP), &bmp); 在几乎所有的GetDIBits示例中。 但是这里新填充的bmp有一个字段: bmBits 如果这里已经有位图的位,为什么还要再次调用GetDIBits ...
我正在使用GetDIBits将屏幕兼容设备上下文中的位图数据转换为某种格式的DIB。 我的印象是,当源位图为每像素8位或更少时,DC仅用于合成色表。 由于我的源位图是一个完整的32位彩色图像,这是一个一次性的程序,我没有屏幕DC方便,我将HDC参数设置为NULL。 这没用。 一旦我抓住屏 ...