我在内存中有一些分配的空间,用于存放位图图像的数据。每个像素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次。