C语言--如何解决游戏界面加载透明背景图片时,透明背景变成黑色?

void transparentimage(IMAGE* dstimg, int x, int y, IMAGE* srcimg)
{
	HDC dstDC = GetImageHDC(dstimg);
	HDC srcDC = GetImageHDC(srcimg);
	int w = srcimg->getwidth();
	int h = srcimg->getheight();
	BLENDFUNCTION bf = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA };
	AlphaBlend(dstDC, x, y, w, h, srcDC, 0, 0, w, h, bf);
}

使用

transparentimage(NULL, herox, heroy, &imagehero[heroindex]);//透明png

解释:

void transparentimage(IMAGE* dstimg, int x, int y, IMAGE* srcimg)

函数名为 transparentimage,接受四个参数:dstimg、x、y 和 srcimg。其中 dstimg 是目标图像的指针,x 和 y 是目标图像上绘制的起始位置的坐标,srcimg 是要绘制的源图像的指针。

HDC dstDC = GetImageHDC(dstimg);
HDC srcDC = GetImageHDC(srcimg);

这两行代码通过调用 GetImageHDC 函数获取目标图像和源图像的设备上下文句柄(HDC)。HDC 是 Windows 中表示设备上下文的数据类型。

BLENDFUNCTION bf = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA };

这一行代码创建了一个 BLENDFUNCTION 结构体对象 bf,用于指定 Alpha 合成的参数。AC_SRC_OVER 表示使用源图像的 Alpha 值来控制合成,0 表示源图像的透明度为完全透明,255 表示不透明度为完全不透明。

AlphaBlend(dstDC, x, y, w, h, srcDC, 0, 0, w, h, bf);

这一行代码使用 AlphaBlend 函数将源图像绘制到目标图像上。它接受多个参数,包括目标图像的设备上下文句柄 dstDC,源图像的设备上下文句柄 srcDC,绘制的起始位置 (x, y),以及宽度和高度。最后一个参数 bf 指定了 Alpha 合成的方式。

通过以上步骤,该函数将在目标图像上绘制一个具有透明度的源图像。具体效果取决于源图像的透明度和位置。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值