请注意,原始宏传的参数不能变
时间: 2023-12-10 15:02:56 浏览: 139
感谢您的提醒。如果原始宏传的参数不能变,可以将逆时针旋转90度的宏修改如下:
```
#define ROTATE_BITMAP(bitmap, width, height) \
for (int i = 0; i < width / 2; i++) { \
for (int j = 0; j < height; j++) { \
uint8_t temp = PATTERN_BITMAP(bitmap, width, j, i); \
*((uint8_t *)bitmap + width * j + i/8) &= ~(1 << (7-(i%8))); \
*((uint8_t *)bitmap + width * j + i/8) |= (PATTERN_BITMAP(bitmap, width, j, width-i-1) << (7-(i%8))); \
*((uint8_t *)bitmap + width * j + (width-i-1)/8) &= ~(1 << (7-((width-i-1)%8))); \
*((uint8_t *)bitmap + width * j + (width-i-1)/8) |= (temp << (7-((width-i-1)%8))); \
} \
} \
for (int i = 0; i < width * height / 2; i++) { \
uint8_t temp = *((uint8_t *)bitmap + i); \
*((uint8_t *)bitmap + i) = *((uint8_t *)bitmap + width * height - 1 - i); \
*((uint8_t *)bitmap + width * height - 1 - i) = temp; \
}
```
该宏在原来旋转90度的基础上,再将位图水平翻转一下,即可实现逆时针旋转90度的效果。