在windows中绘制位数组(rgb)

时间:2009-04-23 16:44:47

标签: c++ windows winapi graphics

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

现在我使用API​​函数DrawDIBits,但我必须打开我的图像数据。

2 个答案:

答案 0 :(得分:3)

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

至于windows blit功能的倒置性质:

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

你也可以通过这种“黑客”来提高速度。

如果要混洗像素的字节顺序(例如将ARGB转换为BGRA等),您可以使用BITMAPV4HEADER结构并告诉GDI您的像素数据是如何组织的。这是一个很少使用的功能,但自WIN98起作用。我说这些天用它来节省它..

答案 1 :(得分:0)

如果你的意思是在不将(R,G,B)反转为(B,G,R)的情况下绘制它,我不知道这是一种自动方式。

如果您的意思是绘制它而不将每一行填充到4个像素的倍数,您可以通过一次绘制每一行来完成。但这会很慢。