gpt4 book ai didi

c - 使用 Dib 部分替换慢速 SetPixel() 时图像翻转

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:37 24 4
gpt4 key购买 nike

我最近发现了这个 ( Win32 API Speed Issues )提高绘图速度,但似乎代码:

pBits[(y * WIDTH) + x] = RGB(0, 0, 0xFF);

始终使图像翻转(从左下角到右上角),

你们知道如何解决这个问题吗??

.

这是翻转后的图像:

flipped-bitmap.png

这是我的代码:

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);

最佳答案

DIB 部分通常从底部扫描线向上保存在内存中。

您可以调整您的 pBits 索引以从底行开始写入,或者更改描述 DIB 部分的 BITMAPINFOHEADER 上的高度符号。

例如:

bmp.bmiHeader.biHeight = -HEIGHT;

高度的符号决定DIB部分是自下而上还是自上而下。

关于c - 使用 Dib 部分替换慢速 SetPixel() 时图像翻转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23420448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com