举报

图片赋值(拷贝)问题

0

我在EasyX库IMAGE类的基础上写了一个支持透明度相关操作的图片类,下面是实现将这个图片类输出到某绘图设备上的print()函数。其中,为什么pointer[n]和debug_ptr[n](声明在被注释的代码处)(n就是一个正整数)不一样,并且pointer[n]是0x00000000。望大佬解决。

void print() {
	if (isshow) {
		IMAGE buffer = image;
		//DWORD* pointer = GetImageBuffer(&buffer);
		//DWORD* debug_ptr = GetImageBuffer(&image);
		IMAGE* buffer_device = GetWorkingImage();
		for (int i = 0; i < buffer.getwidth() * buffer.getheight(); i++) {
			pointer[i] = (((pointer[i] >> 24) * (DWORD)alpha / (DWORD)255) << 24) + (pointer[i] & 0x00ffffff);
		}
		transparentimage(buffer_device, coord.X, coord.Y, &buffer);
	}
}

操作系统:Windows10专业版22H2 EasyX版本:EasyX2023大暑版 编译器:Visual C++编译器 开发环境:Visual Studio2022+VC环境

然后请问for循环里面的代码能不能化简啊 觉得太臃肿了 -  命令方块好方  2023-8-28
举报
1 @命令方块好方 改成reinterpret_cast<BYTE(&)[4]>(pointer[i])[3] *= (DWORD)alpha / (DWORD)255; -  侧云  2023-8-28
举报
我在for循环里面的代码设了断点,命中断点之后用watch窗口一看pointer[i]竟然是0x00000000 -  命令方块好方  2023-8-28
举报
@命令方块好方 你整个发出来看看 -  侧云  2023-8-28
举报
@侧云 什么整个 -  命令方块好方  2023-8-28
举报
@命令方块好方 代码,只有这一点看不出怎么出问题的 -  侧云  2023-8-28
举报
@侧云 要不加下qq -  命令方块好方  2023-8-28
举报
@命令方块好方 发个链接下载来看 -  侧云  2023-8-28
举报
@侧云 代码太长了 我写的这个类有600多行 -  命令方块好方  2023-8-28
举报
@侧云 easychuan.cn 传输码jvmpg -  命令方块好方  2023-8-28
举报
@侧云 类在第168行 -  命令方块好方  2023-8-28
举报
@命令方块好方 主函数能发一下吗 -  侧云  2023-8-28
举报
┤@a8d961df-962d-9716-2579-25d2f99e7b9e https://easychuan.cn/r/mgv7h?t=nf  -  命令方块好方  2023-8-28
举报
@侧云 我这个多线程的 文件发给你吧 -  命令方块好方  2023-8-28
举报
举报
0

你是怎样测试得出 pointer[n] 和 debug_ptr[n] 不一样的?以及,n 是多少?

信息太少,无法判定问题所在。

ps:透明度要对 R、G、B 三原色分别进行计算,再合并计算结果。

ava
慢羊羊

2023-8-31

技术讨论社区