我最近发现了这个(Win32 API Speed Issues) 提高绘图速度,但似乎是代码:
pBits[(y * WIDTH) + x] = RGB(0, 0, 0xFF);
始终使图像翻转(从左下角到右上角),
你们知道如何解决这个问题吗?
这是翻转图像:
这是我的代码:
for (i=0; i<200; i++) {
for (j=0; j<200; j++) {
int x, y;
cr1 = GetPixel(hdc_tmp, i*2, j*2);
cr2 = GetPixel(hdc_tmp, i*2, 1+j*2);
cr3 = GetPixel(hdc_tmp, 1+i*2, j*2);
cr4 = GetPixel(hdc_tmp, 1+i*2, 1+j*2);
red = (GetRValue(cr1) + GetRValue(cr2) + GetRValue(cr3) + GetRValue(cr4)) / 4;
green = (GetGValue(cr1) + GetGValue(cr2) + GetGValue(cr3) + GetGValue(cr4)) / 4;
blue = (GetBValue(cr1) + GetBValue(cr2) + GetBValue(cr3) + GetBValue(cr4)) / 4;
pbits[i+j*200] = RGB(red, green, blue); // BUG ??
}
}
BitBlt(hdc, 0, 0, 200, 200, hdc_aa, 0, 0, SRCCOPY);
答案 0 :(得分:3)
将DIB部分从底部扫描线保持在内存中是很常见的。
您可以先调整pBits
索引以从最下面一行写入,也可以更改描述DIB部分的BITMAPINFOHEADER
上的高度符号。
例如:
bmp.bmiHeader.biHeight = -HEIGHT;
高度的符号决定了DIB部分是被视为自下而上还是自上而下。