透明度小于1时,透明度不再是透明的。

7
我有一个32位的PNG图片,代表一个蓝色正方形在一个透明正方形中央。 下面,我使用3个不同的透明度值展示了这个蓝色正方形:

From left to right, opacity is 1, 0.5 and 0.1

从左到右,不透明度分别为1、0.5和0.1。如果你看不见,请相信你的Photoshop吸管,蓝色正方形周围的区域只在左侧图像中是透明的。

这里是同一张图片的颜色值:

Same image with color values

我知道这很难看清,但我想知道是什么原因造成的。此外,对于一些图像和背景,对比度更加明显。

谢谢!

编辑:以下是我的VS解决方案,供那些想在家里尝试的人使用:http://www.mediafire.com/?gt704e62d53z7ae


这也是我的猜测。你想出了解决方法吗? - Rodolphe
没有,我没有找到任何解决方法。 - Sander
1
我的猜测是Silverlight正在执行预乘alpha混合,就像XNA一样。但这只是一个猜测。 - Dragos Calin
1
当不透明度设置为10%时,您期望发生什么?对我来说,#514846似乎是正确的颜色。 - Chui Tey
当一些像素是透明的时候,我希望它们保持透明,无论透明度如何。透明就是透明,没有不同的“透明度”。 - Rodolphe
显示剩余2条评论
2个回答

1

这不是反锯齿,很可能也不是预乘 Alpha 混合,因为它的目的是做你正在做的事情。

看起来更像是渲染问题。

你尝试过在几个浏览器上进行吗?在另一台具有不同 GPU 的机器上进行了尝试吗?在同一台机器上使用更新的驱动程序进行了尝试吗?


与Chrome 17、Firefox 10和IE 9具有相同的效果... 我在4台不同的计算机上尝试了浏览器内部和外部操作,但它们都运行Windows 7... 但我没有检查GPU或驱动程序是否更新。 如果您想尝试,请访问以下来源:http://www.mediafire.com/?gt704e62d53z7ae - Rodolphe
很不幸,我的雇主的网络安全策略非常严格,所以我无法获取源代码。它在所有浏览器中都发生的事实让我继续认为这是Windows 7 GPU驱动程序的小问题。 - one.beat.consumer
太糟糕了,我手头没有其他版本的Windows... 不管怎样,我很高兴地授予你赏金。;o) - Rodolphe

0

可能是抗锯齿导致了透明的“边框”和半透明的“蓝色正方形”之间混合,从而导致您看到奇怪的中间颜色残影。


我认为Dragos关于预乘alpha混合的回答是正确的。但还是谢谢。 - Rodolphe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接