2017-09-13 82 views
0

我正在使用名为CSplash的C++类,它用于在屏幕中心显示一个闪屏窗口。它旨在仅加载位图文件类型。它允许RGB透明颜色键以透明背景显示BMP。BMP透明色键无法正确显示


我有一个PNG图像。

Transparent PNG

我在Photoshop中打开该图像并增加了一个背景颜色(50,200,25),其为透明键。

Image Green BG

我那么这个图像保存为我的项目的位图文件。

enter image description here

我留下我一个文件:PowerUp.bmp

在我的C++代码,我上面的进口和WM_NCCREATE提到的类,我有以下代码:

CSplash splash = CSplash("PowerUp.bmp", RGB(50, 200, 25)); 
splash.WindowProc(hWnd, uMsg, wParam, lParam); 
splash.ShowSplash(); 
splash.DoLoop(); 

当我运行我的程序时,飞溅图像以透明背景显示,但不像预期的那样。结果在图标周围留下了一些透明色。

Splash Result

我怎样才能解决这个问题,使它看起来就像透明的原始PNG文件?

+0

2004年带有alpha通道的bmp文件是非标准格式。也许你更好地搜索更新的CSplash :)顺便说一句,“RGB透明色键”并不意味着“alpha通道”。 – KonstantinL

+0

@KonstantinL好的,谢谢。是啊,我不知道该怎么标签它! – Acidic

回答

0

问题是我看到它是你原始PNG图像有透明部分(眼镜边界不严格不透明,但更像是顺利过渡到透明),这是一个常见的情况。所以如果在这张图片上面有绝对的绿色背景,会导致绿色在眼镜边​​框和其他图片周围发生一些变化。而且它并不长(50,200,25),它可能是(51,201,25),不再被CSplash移除。

您需要做的是将透明格式的原始PNG保存为alpha通道只有1位(0或1,透明或不透明)的位置 - 因此转换将会丢失,重新打开并执行绿色背景技巧再次。

+0

是的,我认为你是对的,必须是反走样的,我现在试试吧 – Acidic

+0

Yepppppppppppppppppppppppppp在Photoshop中修复它!泰! – Acidic