- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
应为使用 GetDIBits 函数从 HBITMAP 接收的 DIB 数据分配多少内存?
GetDIBits函数在MSDN中的描述如下:
int GetDIBits(
__in HDC hdc,
__in HBITMAP hbmp,
__in UINT uStartScan,
__in UINT cScanLines,
__out LPVOID lpvBits,
__inout LPBITMAPINFO lpbi,
__in UINT uUsage
);
但是,接收数据 lpvBits 的缓冲区必须在调用 GetDIBits 之前分配,因为 GetDIBits 不会自动分配。
问题是应该分配多少内存来接收DIB数据?假设HBITMAP的width&height为Bmp_Width&Bmp_Height;并且位图是 32 位 (RGBA)。
最佳答案
我认为最简单的方法是调用 GetObject() 函数(顺便说一句,获取图像位):
BITMAP bmpObject;
GetObject(hBitmap, sizeof(BITMAP), &bmpObject);
然后您只需使用位图字段:
LONG size = bmpObject.bmWidthBytes * bmpObject.bmHeight;
在处理图像字节时注意对齐!
希望这会有所帮助!
关于c++ - 应为使用 GetDIBits 函数从 HBITMAP 接收的 DIB 数据分配多少内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7304749/
我正在我的应用程序中实现支付,但我的支付提供商 (DIBS) 在使用回调字符串连接到我的服务器时出现问题。我向他们的服务器发送了一个回调字符串,该字符串必须转发到我的服务器以确认付款已经完成。问题是支
我希望 1a 和 2a 成为一行,屏幕越薄,该行就越高 - 内容将包裹在每个单元格中。 我希望 1b 和 2b 成为占据屏幕剩余空间的一行。 1a + 1b 和 2a + 2b 是列。
我刚刚在论坛上讨论是否有替代 GDI 和 Direct X 的 Windows 图形库。有人提到了 WinDIB。遗憾的是,他没有对此进行更多解释。 现在我搜索了谷歌。 似乎没有关于 Windows
如果我使用 CreateDIBSection() 创建一个 DIB,我可以通过设置 的 biHeight 字段来指定它应该是自上而下还是自下而上>BITMAPINFOHEADER 结构为负值或正值。但
我正在使用一个捕获卡 dll,它导出一个函数,该函数提供一个包含 DIB 的 HGLOBAL 句柄。我想将此DIB写入文件。锁定资源并检索数据指针后,我请求大小,大约为 1mb。但是当我将它写入文件时
我有一个 DIB 句柄。如何将其转换为 TPNGObject保持其透明度? 编辑: 我在此解决方案中使用方法 2 Here 但即使我设置它的Transparent,结果位图也不透明标记为真 最佳答案
我正在开发一个剪贴板管理器(可以在这里看到:http://flamefusion.net/software/shapeshifter)。 但是,我目前遇到位图 (bmp) 问题,它无法真正正确地将自身
我需要做什么才能将 DIB 转换为 BMP? 最佳答案 位图 header 类型的文档位于 http://msdn.microsoft.com/en-us/library/dd183386%28VS.
我正在处理 Dibs 支付集成,但无法取得成功。所有东西在演示模式下都运行良好,但是当向它提供商家 ID 时,然后在打开卡详细信息表单之前它会给出错误“数据已被篡改。校验无效”。我不知道那是什么。在我
我正在用 Windows C++ 编程。我想知道在屏幕上绘制 DIB 的最快方法是什么。图片可能被拉伸(stretch)了。 比 StretchDIBits 快,比 SetDIBitsToDevice
我最近发现了这个 ( Win32 API Speed Issues )提高绘图速度,但似乎代码: pBits[(y * WIDTH) + x] = RGB(0, 0, 0xFF); 始终使图像翻转(从
我使用此代码将 DIB 转换为 TBitmap,那么我如何操作此代码以适合 PNG 图像(保留其透明度)?我厌倦了将透明属性设置为 true,但似乎代码是为 256 色位图编写的。 代码来源:Here
我最近才发现 GDI+ 中不同构造函数之间的区别。去: var bmp = new Bitmap(width, height, pixelFormat); 创建一个 DDB(设备相关位图)而: var
This question Jon 的回答让我意识到这甚至存在,所以我很好奇并启动了 Visual Studio。 我遵循了 MSDN 页面的一个示例,然后创建了自己的小示例。如下: public c
我正在尝试读取扫描图像并将其从内存中的 DIB 压缩为 TIF 文件。我正在使用 libtiff 库并在网上找到了几个示例,但没有一个真正按照我的需要进行操作。我需要从 DIB 中获取图像并将其转换为
我创建了一个可消耗的 COM 类库。 类库获取相机的图像。它的类型为图像/位图。 我在VB6中使用类库,我需要在VB6中显示这个图像。 如何将此 System.Drawing.Image 转换为 VB
我正在解码流中的视频帧,sws_scale 为我提供了解码后的 RGB 图像数据 (PIX_FMT_RGB24) 的缓冲区。我有一个现有的前端应用程序,需要输入 DIB。所以我需要知道如何将此缓冲区转
我试图通过对像素值数组进行硬编码来创建位图,将此像素数组转换为 DIB,然后将此 DIB 转换为 DDB。在网上找了两个转换CreateBitmapFromPixels和DIBToDDB的函数。我的问
我继承了一个老式的 MFC Windows CE 程序,我不得不对其进行一些修改。作为其中的一部分,我必须创建一个带有文本的单色图像,并将其显示在屏幕上,并将图像的每一行一次一个地发送到打印机。 我最
应为使用 GetDIBits 函数从 HBITMAP 接收的 DIB 数据分配多少内存? GetDIBits函数在MSDN中的描述如下: int GetDIBits( __in HDC h
我是一名优秀的程序员,十分优秀!