我有一组原始 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/