提问人:Iupyou 提问时间:11/1/2023 最后编辑:genpfaultIupyou 更新时间:11/2/2023 访问量:70
我想在 C SDL 中放大图像
I want to zoom in an image in C SDL
问:
我需要拍摄图像 m * m 并返回图像 n * n。
我有这个代码:
void Zoom_Filter(SDL_Surface* surface)
int newsize = 28;
Uint32* pixels = surface -> pixels;
Uint32* pixels2 = malloc(newsize*newsize*sizeof(Uint32));
int cote = surface -> w;
double Zoom = ((double)newsize)/(double)cote;
for(int i = 0; i < newsize; i++)
{
for(int j = 0; j < newsize; j++)
{
int X = j/Zoom;
int Y = i/Zoom;
Uint32 px = pixels[(Y*cote + X)];
pixels2[i * newsize + j] = px;
}
}
surface -> w = newsize;
surface -> h = newsize;
surface -> pixels = pixels2;
但是,它不能很好地工作:
结果:
答:
0赞
Iupyou
11/2/2023
#1
我已经找到了答案。 我认为 SDL 在直接修改图像大小和像素列表大小时存在一些问题。 为了使它工作,我刚刚创建了一个新表面。 谢谢你的帮助。
评论