为什么镜像翻转不起作用

0

图形镜像翻转的问题

将每个像素都换了一遍,但是没用

DWORD* _play = GetImageBuffer(&ima);
//交换每个像素
for (int i = 0; i < 706 * 706; i+=706) {
	for (int j = 0; j < 706; j++) {
		int b = _play[i + j];
		_play[i + j] = _play[i + 706 - j];
		_play[i + 706 - j] = b;
	}
}

下面是全部代码

#include"bits/stdc++.h"
#include<graphics.h>
using namespace std;
int main() {
	initgraph(1024, 630);
	IMAGE ima;
	loadimage(&ima, L"E:\\电脑文件\\桌面文件\\海洋·方舟\\UI\\play.png", 706 , 706);
	// 获取绘图显示缓冲区指针
	DWORD* _play = GetImageBuffer(&ima);
	//开始交换每个像素
	for (int i = 0; i < 706 * 706; i+=706) {
		for (int j = 0; j < 706; j++) {
			int b = _play[i + j];
			_play[i + j] = _play[i + 706 - j];
			_play[i + 706 - j] = b;
		}
	}
	//输出镜像翻转后的图片
	putimage(0, 0, &ima);
	system("pause");
	closegraph();
	return 0;
}

是不是逻辑错了

ava
Tonight

2022-6-18

0

起作用了,是你的逻辑出问题了。

对于每一行,你把 0 和 705 交换,1 和 704 交换,2 和 703 交换,…… 704 和1 交换,705 和 0 交换。

发现没?你交换了两次,又换回来了。

ava
慢羊羊

2022-6-21

技术讨论社区