我使用名为CSplash的C ++类,用于在屏幕中央显示启动窗口。它旨在仅加载位图文件类型。它允许RGB透明颜色键显示具有透明背景的BMP。
我有一张PNG图像。
我在Photoshop中打开了这张图片,并添加了背景色(50,200,25)作为透明键。
然后我将此图像保存为项目中的位图文件。
我留下了一个文件: PowerUp.bmp
在我的C ++代码中,我导入了上面提到的类,在WM_NCCREATE
中我有以下代码:
CSplash splash = CSplash("PowerUp.bmp", RGB(50, 200, 25));
splash.WindowProc(hWnd, uMsg, wParam, lParam);
splash.ShowSplash();
splash.DoLoop();
当我运行程序时,启动图像显示透明背景,但不是预期的。结果在图标周围留下了一些透明的颜色。
如何解决此问题,使其看起来与透明的原始PNG文件完全相同?
答案 0 :(得分:0)
我认为问题在于原始png图像具有透明部分(眼镜边框不是严格不透明但更像是平滑过渡到透明),这是常见的情况。因此,在上面的图像上具有绝对的绿色背景,导致绿色在眼镜边界和其他图像周围稍微改变。它不是长寿(50,200,25),可能是(51,201,25),不再被CSplash删除。
你需要做的是保存原始PNG的透明格式,其中alpha通道只有1位(0或1,透明或不透明) - 因此转换将丢失,重新打开,并再次执行绿色背景技巧。