c++ - 在窗口中绘制位数组(rgb)

标签 c++ windows winapi graphics

我有一组原始 rgb 数据。 我想知道如何在 Windows 操作系统的屏幕上绘制这个像素?

现在我使用 API 函数 DrawDIBits,但我必须调出我的图像数据。

最佳答案

我总是使用 SetDiBitsToDevice,但 drawDIBits 也可以(尚未检查)。

至于 windows blit 函数的颠倒性质:

有一个解决方法。如果将 BITMAPINFOHEADER 或 BITMAPINFO 结构传递给函数,只需取反位图高度成员中的值。这将告诉 GDI 执行 blit,就好像高度是正数一样,但将数据解释为以自上而下的顺序存储。

您也可以通过这种“hack”获得不错的速度提升。

如果您想打乱像素的字节顺序(例如将 ARGB 转换为 BGRA 左右),您可以使用 BITMAPV4HEADER 结构并告诉 GDI 您的像素数据是如何组织的。这是一个很少使用但自 WIN98 以来有效的功能。我会说这些天使用它很省钱..

关于c++ - 在窗口中绘制位数组(rgb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/782584/

相关文章:

c++ - 在循环 C++ 中更改列表的值

windows - 异步创建进程?

c++ - 在qt中使用窗口消息

c++ - 使用互斥锁在 C++ 中复制构造函数

c++ - 通过引用分配对象,无需复制

c++ - 没有 QApplication 无法创建 QWidget

windows - Win32 C++ - 恢复窗口时执行某些操作,哪条消息?

c - 在 Windows 的 C/C++ 中打开 com 端口时将 HANDLE 作为参数传递

c++ - 从服务添加 URL 到 IE 缓存

c++ - EnableWindow(hWnd, false) 不禁用键盘输入