使用该文章 https://codebus.cn/yangw/a/transparent-putimage 中的最后两中方法进行透明贴图出现略微扭曲、黑边的情况。
编译环境: VS2019、EasyX 2021-1-15 版本、 Debug(Releaes)x86(x64)均有问题。
测试图片链接:https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2703781708,1566182711&fm=26&gp=0.jpg
下载该图片后直接将后缀名改为 png 即可(原本就是 .png 的说)
请注意观察图片右上角 “新春限定”,主要问题出在这里。
已经使用控制变量法排除以下可能因素:
(1)Debug / Release X86 / X64;
(2)文章中的倒数第一或者倒数第二种方法;
(3)使用loadimage时是否放缩图片;
(4)是否使用批绘制,以及在循环中使用FlushBatchDraw或使用EndBatchDraw;
(5)窗口的背景颜色。
因无法插入图片来展示实验得出一些结论,所以提供以下信息:
(1)图片在第二次绘制(同一个地方)时,右上角的 “新春专属” 略微扭曲;
(2)第五次绘制时,可以看出,第九次左右逐渐明显,绘制次数越多,越明显;
(3)每次循环改变一次绘图位置,连续绘制九次,九张图片无扭曲痕迹;
(4)在循环中插入 cleardivice 函数,同一地点连续绘图,无扭曲。
测试代码如下:
transparentimage函数为文章中最后两种方法中的任意一种。
int main()
{
initgraph(960, 640);
setbkcolor(WHITE);
cleardevice();
IMAGE image{};
loadimage(&image, _T("image.png"));
BeginBatchDraw();
while (true)
{
transparentimage(NULL, 0, 0, &image);
FlushBatchDraw();
Sleep(10);
}
EndBatchDraw();
system("pause");
return 0;
}