旋转1bpp位图数据

时间:2018-10-04 04:11:47

标签: c image winapi

我在内存中有一些分配的空间,用于存放位图图像的数据。每个像素1位,因此第一个字节的最高有效位对应于左上角第一个像素的状态(打开或关闭)。

图像的尺寸为256x224,我正在使用Win32 api的StretchDIBits函数将其显示在窗口中:

    StretchDIBits(
        dc,
        0, 0, 224, 256, // Destination (x, y, w, h)
        0, 0, 224, 256, // Source (x, y, w, h)
        imageData,
        bmInfo,
        DIB_RGB_COLORS,
        SRCCOPY
);

我要弄清楚的是如何将图像数据顺时针旋转90度。如果两边的尺寸相等(如果图像是正方形的话),那看起来会更直接,但是如果不相等。

此外,由于图像为1bpp,我相信这意味着我不能只移动字节,而需要实际逐个移动比特。我无法弄清楚如何有效地做到这一点,因为实现此功能的功能必须每秒运行60次。

0 个答案:

没有答案